[Haskell-cafe] Intermediate Modern Haskell

Carette, Jacques carette at mcmaster.ca
Thu Dec 17 22:47:54 UTC 2020


Excellent question. I am not focused on any project/applications in particular. I do have a personal bias towards “languages” and processing of them. Haskell really excels at that.  I’m getting the students in my *grad* class (on generative programming) to do partial evaluators using finally tagless the way “it should have been done” in the paper, if we’d been all-knowing 10 years ago 😉 .  I don’t think we’ll get to that in the undergrad class. Maybe as bonus questions.

Thanks for the timely reminder to try extra-hard to put all the features in context. My background being Pure Math (long ago), that sometimes leads me to forget that abstraction for abstraction’s sake isn’t everyone’s cup of tea!

Certainly things like you mention are excellent topics that fits well with the kinds of programs that I like to write, and that Haskell is fairly well suited for (I’m become an Agda fanboy, so it feels like I’m really slumming it by coding in Haskell, even worse when I’m working in my metaocaml code base).

From: Tikhon Jelvis <tikhon at jelv.is>
Sent: December 16, 2020 10:42 PM
To: Carette, Jacques <carette at mcmaster.ca>
Cc: haskell-cafe <haskell-cafe at haskell.org>
Subject: Re: [Haskell-cafe] Intermediate Modern Haskell

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<mailto: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/20201217/848cb7d3/attachment.html>


More information about the Haskell-Cafe mailing list