-
Book Overview & Buying
-
Table Of Contents
-
Feedback & Rating

Soar with Haskell
By :

We now have seen not two, but three examples of the same pattern. The obvious two are the failure effect and the state effect. However, much earlier, in Chapter 8, Input/Output we saw the first example: IO
. Clearly, there is another abstraction behind this that generalizes the three examples and extends to other effects.
This abstraction is known as monad and is captured in the Monad
constructor type class:
Prelude
class Applicative m => Monad m where
(>>=) :: m a -> (a -> m b) -> m b
return :: a -> m a
return = pure
(>>) :: m a -> m b -> m b
p >> q = p *> q
For legacy reasons, the Monad
type class is equipped with a copy of the pure
method called return
. The concept of the applicative functor was conceived much later than that of the monad, and thus originally, Functor
was the direct superclass of Monad
. In the future, the return
method might be dropped...