{-# LANGUAGE ScopedTypeVariables #-}

fJoin :: forall f m a. (Monad m, Monad f) => f (m (m a)) -> f (m a)
fJoin =  let f = ( (\ m -> m >>= id) :: m (m a) -> m a) in fmap f