I've been a Ruby developer for several years, and a Perl developer before that, with some PHP somewhere in there. I want to expand my knowledge, and think the best way to do that will be by learning something very different from what I know. I know OO, and I know functional programming pretty well. What I don't know is a language that uses static typing effectively. (Actually, ok, I kind of know Java, but not enough. You can still recommend that.)
What language is going to best show me the features of static typing coming from a dynamic background?