join :: (Monad m) => m (m a) -> m a
-- x :: m (m a)と仮定
x :: m (m a)
-- mはMonad, (>>=) :: m a' -> (a' -> m b) -> m b-- => { a' = m a, b = aで具現化 }-- (>>=) :: m (m a) -> (m a -> m a) -> m a
(x >>=) :: (m a -> m a) -> m a
-- id :: a -> a
x >>= id :: m a
-- よって
join x = x >>= id