class Foo f where
  (<^>) :: Applicative f => f a -> f (a -> b) -> f b
  infixr 4 <^>

foo = pure 1 <^> pure 2 <^> pure (+)