Ok, I know I'm late to the party. Here are my two cents.
I will wholeheartedly agree with what stephen wrote. Annotated Code samples, in the form of either
a blog post which guides you through the code and explains the rational and thought train whiting
the snipped or program, or the code with the text in comments. Now this does sound an awful lot like
literate programming, no?
After some more experience now (and being able to finally navigate hackage, and hoogle with quite some
proficiency, I might add), I have come to the conclusion that haskell apparently allows you more easily
than other languages to write the same idea in a plethora of different ways. Which often is caused by
the authors experience (composable) and taste (using . and $ or more lispy using braces).
A list of applications which are relatively small and of high quality, would provide a nice addition on
ones path to understanding haskell better. To see how the expressive power can be weld to obtain nice
yet understandable code that is composable.
Another thing I often run into is, writing code, and *feeling* it's just not right, way to excessive and
there should be a better, easier, cleaner way to do it, but unable to see how that solution would look.
Thus an explanation of common idioms and patterns on how to *nicely* deal with certain problems in haskell
would be very helpful as well.
Regarding especially yesod, what I was missing--probably because I did not properly read everything and
skimmed most--was a high level look at the yesod architecture of a scaffolded application. The sample
apps all look nothing like the scaffolded app. What is Application for? What is Foundation for, why do
we have this special Import thingy? How does it all interact? What are the architectural layers and how
do things fit together?
Another thing that is written in the book, but could use quite a bit of elaboration is the route logic,
the handler types and how to reach what. (E.g. what is `Handler Html`? -- breaking down the types and
explaining it, also what changing Html to something else would do... This is very basic haskell stuff,
but for someone probably new to yesod (and haskell) can be very confusing. Or how do I access the
configuration/settings? Why do I have to call runDB when all the sample code can do without? How do I
run IO actions?). This will probably lean into what certain constructs in haskell are and what they are
for, how to use datatypes as containers with unwrapping and wrapping, etc.
So, that's at least the things I remember, I might have asked. I'll try to take note now that some of
my colleagues are trying to wet their feet with haskell (and yesod).
Cheers,
Moritz