Functors, applicatives and other fancy stuff