Personal experiments with functional programming – design, abstractions, monads, functors, and other hallucinogenic constructs.