updating 11.4 (functors, applicatives, monads)