Ocaml is probably the one at the sweet spot since its fairly practical (reasonable number of libraries and a good compiler) and has a simple-but-effective core type system (ADTs + modules). Plus you can transition to F# later if you want more libraries. Haskell wouldn't be a terrible choice either -- just be warned that it is more difficult and idiosyncratic (laziness + type classes + monads + random GHC extensions that do strange things).