"return a" предполагается обернуть в контексте некоторой Monad:
*Main> :i return
class Applicative m => Monad (m :: * -> *) where
...
return :: a -> m a
...
-- Defined in ‘GHC.Base’
Если я спрошу GHCI, какой тип "вернуть ничего", он соответствует этому:
*Main> :t return Nothing
return Nothing :: Monad m => m (Maybe a)
Но если я его оцениваю, я не вижу внешнюю Монаду, только внутреннюю. Может быть:
*Main> return Nothing
Nothing