One thing I noticed as a Haskell noob is that the terse syntax makes it impossible to Google for solutions. Say I'm trying to understand a code snippet. I have to know what the (insert random string of punctuation) operator is called before I can proceed.
I wouldn't say a bad experience necessarily, but I ended up working from the O'Reilly book and Learn You a Haskell alternatively, working from the front and back of each book alternatively. That was because neither of them managed to explain things to me in the order I wanted to hear about them, and as my interest was in actually making something useful with Haskell I kept needing to look at the useful (later) parts of the books to get any of that.
Very open ended question. The trickiest thing for me is the GHC "instance" extensions: TypeSynonymInstances, -XUndecidableInstances, Flexible, Overlapping, etc<p>--------------<p>I think there's general agreement that cabal has limitations:<p><a href="http://www.yesodweb.com/blog/2012/04/replacing-cabal" rel="nofollow">http://www.yesodweb.com/blog/2012/04/replacing-cabal</a><p><a href="http://www.yesodweb.com/blog/2012/04/cabal-meta" rel="nofollow">http://www.yesodweb.com/blog/2012/04/cabal-meta</a><p><a href="http://www.reddit.com/r/haskell/comments/qdjha/which_commands_succeed_in_installing_a_haskell/" rel="nofollow">http://www.reddit.com/r/haskell/comments/qdjha/which_command...</a><p><a href="http://www.reddit.com/r/haskell/comments/r5h81/google_summer_of_code_2012_haskellorg_is/" rel="nofollow">http://www.reddit.com/r/haskell/comments/r5h81/google_summer...</a><p><a href="http://www.reddit.com/r/haskell/comments/rurn4/cabalmeta_transcending_to_dependency_heaven/" rel="nofollow">http://www.reddit.com/r/haskell/comments/rurn4/cabalmeta_tra...</a><p>-----------------<p>Not clear if you're interested in pure language design or looking at the state of standard library, editor/testing/deployment toolchains etc but as far as language design debates go vs. the SML line, you could read Harper's<p><a href="http://existentialtype.wordpress.com/2011/04/24/the-real-point-of-laziness/" rel="nofollow">http://existentialtype.wordpress.com/2011/04/24/the-real-poi...</a><p><a href="http://existentialtype.wordpress.com/2011/05/01/of-course-ml-has-monads/" rel="nofollow">http://existentialtype.wordpress.com/2011/05/01/of-course-ml...</a>
To read code (or math) I find life easier when I can "read" it inside my head. The terse and heavy symbolic syntax make understanding code less comfortable for me.<p>The other thing is that currying + lack of parens around function arguments makes it not visually clear where each argument goes or what expressions are part of what. Only someone familiar with each function and it's arity (in some Haskell-relevant sense) could read the stuff at a glance.
There are lots of good resources at <a href="http://www.haskell.org/haskellwiki/Learning_Haskell" rel="nofollow">http://www.haskell.org/haskellwiki/Learning_Haskell</a>
I found the Haskell operators to be particularly unenjoyable, and that's coming from someone who started to program in Perl. I don't see any logical purpose in such a large deviation from most languages even in basic things like comment operators. It felt like I was writing code in a different (spoken) language.<p>In short, Haskell's modernity didn't offer enough for me to consider it over Clojure.