restarting applicative functors chapter