I love Standard ML. As an undergrad, I wrote a compiler in it (through Zhong Shao's course at Yale), and it remains the most fun I've had using a programming language, let alone a functional programming language. The syntax is so simple yet it is extremely expressive. Hindley-Milner types are great, and the pattern matching is slick. SML also strikes a logical balance between purity and practicality.