Date | Title | Slides | Other |
---|---|---|---|
Feb 15 (17) | 1. Introduction | Slides | Log Snake imperative Snake functional |
Feb 22 (24) | 2. Lists | Slides | Log tasks.json |
Mar 1 (3) | 3. Higher order functions | Slides | Log dfs.rkt |
Mar 8 (10) | 4. Closures and persistent data structures | Slides | Log bfs.rkt |
Mar 15 (17) | 5. Streams and pattern matching | Slides | Log pattern-matching.rkt |
Mar 22 (24) | 6. Mutable data and interpreters | Slides | Log brainfuck.rkt |
Mar 29 (31) | 7. Lambda calculus | Slides | Log |
Apr 5 (7) | 8. Introduction to Haskell | Slides | Log snake.hs map.txt |
Apr 12 (14) | 9. Haskell types | Slides | Log |
Apr 19 (21) | 10. Type classes | Slides | Log Json.hs |
Apr 26 (28) | 11. Monads and Haskell IO | Slides | Log |
May 3 (5) | 12. Monadic parsing | Slides | Log Parser.hs |
May 10 (12) | 13. State monad | Slides | Log State.hs brainfuck.zip IOState.hs |
May 17 (19) | 14. Monoids and Foldables | Slides | Log FUP-hw.csv |
[1] Harold Abelson and Gerald Jay Sussman and Julie Sussman: Structure and Interpretation of Computer Programs, MIT Press, 1996. https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html
[2] R. Kent Dybvig: The Scheme Programming Language, Fourth Edition, MIT Press, 2009. https://www.scheme.com/tspl4/
[3] Raul Rojas: A Tutorial Introduction to the Lambda Calculus. http://www.inf.fu-berlin.de/lehre/WS03/alpi/lambda.pdf
[4] Greg Michaelson: An Introduction to Functional Programming Through Lambda Calculus, Dover edition, 2011.
[5] Graham Hutton: Programming in Haskell, Cambridge University Press, 2016.
Functors, Applicatives, and Monads In Pictures: https://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
Lexical scopes: https://docs.racket-lang.org/guide/eval.html
Lazy evaluation: https://sites.ualberta.ca/~jhoover/325/CourseNotes/section/Scheme_3.htm
Streams: https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-24.html
Side effects in scheme: https://courses.cs.washington.edu/courses/cse341/05au/lectures/scheme-side-effects.html
“Objects” in scheme: http://sarabander.github.io/sicp/html/3_002e1.xhtml
All sorts of materials on Haskell: https://haskell.org/documentation/
Creating Haskell types: http://learnyouahaskell.com/making-our-own-types-and-typeclasses
Haskell pattern matching: https://www.haskell.org/tutorial/patterns.html
Haskell modules: https://www.haskell.org/tutorial/modules.html
Haskell IO: https://wiki.haskell.org/Introduction_to_IO
Haskell IO: https://wiki.haskell.org/IO_inside
Haskell Monads: https://www.schoolofhaskell.com/user/bartosz/basics-of-haskell/10_Error_Handling
Haskell Functors: http://learnyouahaskell.com/functors-applicative-functors-and-monoids