>It also forced me to use a lot of recursion which is nice as I understood it much better than in that single "Fibonacci number" example.
Back in college I took a programming class that used Haskell and not having any other do way to perform iterations other than with recursion, you're forced to understand recursion. With imperative languages, you can always fall back to ol' for and while loops so you get the impression that recursion is simply a waste of time.