Implement Applicative