-- [/interchange/]
-- @u '<*>' 'pure' y = 'pure' ('$' y) '<*>' u@
--
+-- The 'Functor' instance should satisfy
+--
+-- @
+-- 'fmap' f x = 'pure' f '<*>' x
+-- @
+--
-- If @f@ is also a 'Monad', define @'pure' = 'return'@ and @('<*>') = 'ap'@.
class Functor f => Applicative f where