Functors, Applicative, and Monads

A simple monadic EDSL for input/output (deep embedding)

code

A simple monadic EDSL for input/output (intermediate embedding)

code

Calculating (>>=) for Program as a monad (intermediate embedding)

A simple monadic EDSL for input/output (shallow embedding)

Monads

Structure-preserving mappings

Functors

Functors: more examples

Multi-parameter functions map to multiple containers

Applicative functors

Applicative Maybe

Relation to monads

Blog on Applicative Functors

Not a functor

A functor, not applicative

Applicative, not a monad

Structures learned so far