In Haskell perché è di tipo-firma di forever
Haskell `tipo di firma forever`
forever :: Monad m => m a -> m b
particolare perché non è solo :: Monad m => m a -> m a
? Sicuramente il tipo di monade su cui stiamo operando non cambia a metà del numero forever
?
Una funzione come:
forever' :: Monad m => m a -> m a
forever' = forever
sembra funzionare esattamente lo stesso.
Il tipo di monade 'M' e non cambia. Ciò che cambia è il tipo di risultato 'b'. –