Skip to content

Instantly share code, notes, and snippets.

@Agnishom
Last active July 21, 2017 04:55
Show Gist options
  • Select an option

  • Save Agnishom/e17f224c485206463a6e0026b4666ddd to your computer and use it in GitHub Desktop.

Select an option

Save Agnishom/e17f224c485206463a6e0026b4666ddd to your computer and use it in GitHub Desktop.
PRGH 2017
  • All You Need Is Lambda

    • Not recommended for a first introduction to functional programming. Most people wouldn't have an idea on what this really is.
    • But it is not a bad idea to convince people that "Computation by rewriting" really works
      • Maybe worthwhile to give examples of other esoteric turing complete systems
  • The following chapters are rather essential:

    • Hello, Haskell!
    • Basic Datatypes
    • Types
    • Typeclasses
    • More Functional Patterns
    • Recursion
    • Lists
      • Strings should be seen as a part of lists. I do not agree with the order in the book
    • Folding Lists
    • Algebraic Datatypes
    • Signaling Adversity
  • These chapters can be omitted. Or, we could just email related content to the students as optional reading material.

    • Building Projects
    • Testing
    • Basic Libraries
  • It might be worthwhile introducing these ideas in one or two lectures.

    • Monoid
      • Optionally, semigroup
    • Functor
      • Optionally, applicative
    • Monad
  • Given that the students have been already exposed to data structures with certain laws, we do not necessarily need:

    • Applying Structure
    • Foldable
    • Traversable
  • I am not very familiar with these, but I think we can leave them out

    • Reader
    • Parser Combinators
    • Composing Types
    • Monad Transformers
  • These chapters would familiarise the student with how Haskell is used for more real world applications. I recommended a brief introduction to them:

    • State
    • IO
  • Non-Strictness

    • This is rather important. Some aspects of it like lazy evaluation, the seq function and bang patterns are central to Haskell.
    • However, we do not need to cover this in great detail.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment