-- Functor (自己)関手class Functor f where
fmap :: (a -> b) -> f a -> f b
-- Applicative アプリカティブ関手class Functor f => Applicative f where
pure :: a -> f a
(<*>) :: f (a -> b) -> f a -> f b
-- Monad モナドclass Applicative m => Monad m where
(>>=) :: m a -> (a -> m b) -> m b
return :: a -> m a
return = pure