[Haskell-cafe] the trivial monad- thoughts and a question

Luke Palmer lrpalmer at gmail.com
Sat Jan 12 19:39:55 EST 2008


On Jan 13, 2008 12:47 AM, Brian Hurt <bhurt at spnz.org> wrote:
> So, I've been playing around with what I call the trivial monad:
>
> module TrivialMonad where
>
> data TrivialMonad a = M a

Better to use newtype here; then it really is operationally equivalent
to using just "a", except that it's possible to implement a monad
instance for it (see below).

> The first question I have is it is possible to implement this guy without
> wrapping the value in a constructor?  What I'd like to do is replace the:
>         data TrivialMonad a = M a
> with something like:
>         type TrivialMonad a = a
> and then be able to junk the recover function.

Nope.  That would mean that every type is a monad, which would cause endless
troubles for type inference.  For example, what monad is (putStrLn "x") a
member of:  IO () or TrivialMonad (IO ())  (or even TrivialMonad
(TrivialMonad (IO())))?

> The second question I have is: is there any hope of getting something like
> this into the standard library?

Control.Monad.Identity, perhaps?

http://www.haskell.org/ghc/docs/latest/html/libraries/mtl/Control-Monad-Identity.html

Luke


More information about the Haskell-Cafe mailing list