1{-# LANGUAGE ScopedTypeVariables #-} 2 3fJoin :: forall f m a. (Monad m, Monad f) => f (m (m a)) -> f (m a) 4fJoin = let f = ( (\ m -> m >>= id) :: m (m a) -> m a) in fmap f 5