Are you a Vanderbilt computer science student looking to become a better programmer? Join us on an 11 week journey towards that goal. We will be exploring functional programming, monads, promises, typeclasses, and more in JavaScript and Haskell, and becoming better, smarter programmers in the process.
Coming Fall 2015.
-
Using a REPL.
-
Welcome to JavaScript.
-
Anonymous functions: Lambdas, closures, lambda lifting.
- Map | Reduce/Fold | Filter | Zip
-
Note: Use Haskell style type signatures in descriptions without saying what they are.
-
Monad laws: Left Identity, Right Identity, Associativity
-
Maybe monad
-
Callback hell
-
Async monad
-
Promises | A+
-
Left (error) | Right (result)
-
How this helps avoid the need for exceptions.
-
Installation directions (email out)
-
Types
-
Writing simple (pure) functions.
-
Using the REPL.
-
Pattern matching.
-
If statements
-
Case statements
-
Guards
-
data
-
Recursive types
-
Binary tree example.
-
type
-
Type classes.
-
Typeclasses are similar to interfaces in OOP.
-
Build on binary tree example and use typeclass for its operations.
-
BEncoding example.
-
$ and . operators
-
Maybe, Either monads
-
Identity monad
-
Reader monads
-
do
notation
-
Writer monads
-
IO Monad
-
do
notation with IO monad
-
Stacking non-IO monads
-
Stacking monads on top of IO