I would also recommend learning Haskell. It forces you to think in a completely different way, which (for me) has been fun and also has improved the quality of code I write in imperative languages. I...