I've always wanted to learn a language like Haskell, Lisp, Erlang, etc., but I've never been able to motivate myself beyond the first few examples because I haven't found a way to apply it. I've found that the best way I learn is to pick up a project and learn the language/tools/API as I go along — it's strange, but it's much easier for me to lose myself working on a project than an academic exercise. I start putting all the pieces together and eventually everything just "clicks"; I reach an epiphany and can start thinking in the language.
Can anyone else relate to this? How do you learn less "practical" languages like these?
However, I go a bit different:
(01) I try to go over all the basics and repeat simple exercises from other language books. I do the for loops arrays operators etc ... etc. I spend a lot of time here in order to remember the syntax. I hate syntax mistakes so the earlier I get proficient the better.
(02) Objects and functions break in easily
(03) The web stuff and libraries
(04) Project here. Get your last epiphany and repeat it in Lisp!
I am going through Clojure at the moment and I had to introduce an additional step to the above, an UNLEARN stage, to change my thinking to functional! Current 'epiphany project', type in Clojure code in a textbox, parse with javascript and print the results. I am at 'Hello World' :).