Entry tags:
fmap = liftM
Только сейчас сообразил, что это одно и то же для ВСЕХ монад.
До сих пор думал, что они совпадают у IO и списка.
А вот дефолтную реализацию метода класса, от которого зависит определяемый класс, нельзя описать. А то можно было бы
Ну и хорошо, что нельзя. А то от Functor много классов могут зависеть.
До сих пор думал, что они совпадают у IO и списка.
А вот дефолтную реализацию метода класса, от которого зависит определяемый класс, нельзя описать. А то можно было бы
class Functor m => Monad m where
return :: m a
(>>=) :: m a -> (a -> m b) -> m b
instance Functor m where
fmap f m = m >>= (return . f)
Ну и хорошо, что нельзя. А то от Functor много классов могут зависеть.