[Haskell-cafe] Intermediate Modern Haskell

Tikhon Jelvis tikhon at jelv.is
Thu Dec 17 03:41:44 UTC 2020


What kind of projects and applications are you focused on? In my
experience, the difficulty in learning—and teaching—"advanced" Haskell
topics is less in the topic itself and more in the level of abstraction
involved. I know that I struggled with GADTs and even existential types not
because of the features themselves but because I had real trouble putting
the features into context and understanding how I would use them. Just
*why* are those abstractions in particular interesting?

I can recommend some of my personal favorite topics like streaming
libraries, FRP, automatic differentiation and the probability monad, but
whether that recommendation makes sense depends on how you want to use
those topics. Alternatively, if you have some specific things you would
want to build with the class, we could suggest topics that fit those goals.

On Wed, Dec 16, 2020, 19:22 Jacques Carette <carette at mcmaster.ca> wrote:

> I will be teaching a second Haskell course next semester.  Let's assume
> that
>
> Introducing functional programming
>
> Getting started with Haskell and GHCi
>
> Basic types and definitions
>
> Designing and writing programs
>
> Data types, tuples and lists
>
> Programming with lists
>
> Defining functions over lists
>
> Playing the game: I/O in Haskell
>
> Reasoning about programs
>
> Generalization: patterns of computation
>
> Higher-order functions
>
> Developing higher-order programs
>
> Overloading, type classes and type checking
>
> Algebraic types
>
>
> (i.e. the first chapters of Thompson's Haskell: the Craft of Functional
> Programming book is "beginner, classic Haskell".  The next few chapters,
> namely
>
> Abstract data types
>
> Lazy programming
>
> Programming with monads
>
> Domain-Specific Languages
>
> Time and space behaviour
>
>
> would be (re)done at the start of such a second course. The question for
> cafe is: what else? I will likely cover:
> - Typeclassopedia
> - finally tagless
> - Template Haskell
> - Optics
> - GADTs
> - recursion schemes
>
>
> I should probably cover parser combinators, pretty-printing, cabal&stack.
> I know that http://dev.stephendiehl.com/hask/ gives me one heck of a
> smorgasbord of options, which is kind of a problem.
>
>
> Things I know I will not cover:
> - dependent types (if I was going to do that, I'd switch to Idris/Agda)
> - concurrency (don't ask)
>
>
> Jacques
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20201216/3dd21bee/attachment.html>


More information about the Haskell-Cafe mailing list