what language should I learn next?
silentbicycle: OCaml. If you've been working with languages dynamically typed at runtime, using something statically typed at compile time will be very informative. Unlike most other statically typed languages, OCaml's type inference turns the type system from a thing that needs to be constantly appeased to a free reality check when you need it.OCaml will also teach you functional programming tricks usable in Ruby, or several other languages. At the same time, it doesn't force you to learn almost everything all over again before you can do anything at all the way Haskell does. In my experience, OCaml is designed to be a practical, modern, statically-typed, multi-paradigm language, while Haskell is designed to be a conceptually pure language for experimenting with language ideas in new territories. Whether that's a good or bad thing depends on what you intend to use it for.About the OCaml type system:
http://enfranchisedmind.com/blog/2008/04/14/useful-things-ab..."Why Rubyists Should Learn OCaml" (a presentation): http://enfranchisedmind.com/blog/2008/07/07/rubymn-presentat...