Skip to content

Education Resources lacks intermediate or advanced material #128

@JulianLeviston

Description

@JulianLeviston

While it's obvious to focus on beginners in this section, the intermediate and advanced material is somewhat lacking. There are numerous papers that are useful in this regard, and it'd be great if there was some guidance on discovering papers, blog posts and other more advanced material too (like... start with these papers, then look in their reference sections and bibliographies for more papers, use the topics you discover as search terms to find more papers like this, blog entries on it, etc).

As first example, I'd consider Yorgey's monoid paper as basically indispensible reading for anyone who wishes to gain a deep first step into a topic which underpins much of computation (let alone only computation in Haskell).

This is something almost exclusively available to Haskell... we have a plethora of academic resources available to us, and we're almost the default language for exploring many topics at the connection point between mathematics and computation.

As with many things in Haskell, while learning the basics of a topic under question is good, useful, and at times reasonably tricky in itself, a mere discussion of how it's implemented, what it is on a face value and a couple of examples is not where the most interesting regions, or even the meat of the difficulty of the topic often lies — usually it lies in an exploration of the ramifications of the choices made in whatever packages is under discussion — that is, in using it across many varied contexts.

I firmly believe this is the reason Monads have been traditionally difficult to understand, aside from the nomenclature issue of Haskell that seems to go largely unnoticed (that is, when it comes to typeclasses, we use the same words for a value of a type as for a type as for a typeclass as for its instances: point in case the answer to the quesiton "what is monad?" Maybe is an example of a monad, Just 5 is an example of a monad, Monad typeclass is monad, and the monad instances for each type are how a monad is defined — this is inherently confusing).

That's to say, the core reason pieces of Haskell are difficult to undersatnd is that they're often extremely abstract, and in teaching it, often the ramifications are skipped over, which is where the subtleties, practical value and interesting parts of the topic usually reside.

BTW, love how the SOTU is taking shape!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions