One more thing: OCaml is strict by default, Haskell is lazy by default. The later allows for some nice code idioms[0], but makes reasoning about performance and memory characteristics very difficult[1].
[0]
indexedList :: [a] -> [(Integer,a)]
indexedList l = zip [1..] l
[0] indexedList :: [a] -> [(Integer,a)] indexedList l = zip [1..] l
[1] http://www.reddit.com/r/haskell/comments/15h6tz/what_isnt_ha...
http://www.haskell.org/pipermail/haskell-cafe/2013-September...
http://stackoverflow.com/questions/2064426/reasoning-about-p...