Experiments with functional programs and applicative functors