Is functional programming really worth it?
JoshTriplett: I do believe a better language helps as much as great libraries, if not more.Better libraries can't give you the compile-time error checking that a good compiler can.  In Haskell, I half-seriously joke that "it compiles, it must be correct".Also, modern functional languages have great library support.  For instance, Haskell has a variety of libraries available, and a great FFI to C that lets you talk to any available C library.  (I consider an FFI a necessary part of any generally useful language.)And finally, "implement a multi-level loop using recursion in ML" sounds like a learning exercise, not a useful programming technique.  If your code tries to recreate constructs like multi-level loops, you've done something wrong; most of your code shouldn't even need explicit recursion.  Don't try to write one language's code in another language, and especially don't try to emulate an imperative language in a functional language.  Learn how to do things the right way in the new language.  If you try to write Java in Haskell, you'll find that it feels a lot harder than writing Java in Java, shockingly. :)You've learned to think imperatively.  Functional programming requires a different approach.  It took me a long time to learn to think in Haskell, but now I feel quite comfortable with it.  Having watched and helped non-programmers learn to work with imperative programming, I know that doing so requires some hard leaps as well.  ("Wait, x = 5?  But x = 4 earlier, so how can x = 5 now?")