[Haskell-cafe] One-way and two-way monads.
Conor McBride
conor at cs.rhul.ac.uk
Mon Oct 18 11:15:45 EDT 2004
Hi
Keith Wansbrough wrote:
>>Dear All,
>>
>>List and IO are both monads when appropriate operations are defined.
>>
>>The IO monad, which is a one-way monad, does not have a function of
>>type IO a -> a, in general, except an unsafe function
>>"unsafePerformIO :: IO a -> a". A two-way monad, such as List, has such
>>a function "head :: [a] -> a".
>
> But "head" sometimes fails. So List isn't a two-way monad either.
> (if you accept partial functions, then *all* monads are two-way, since
[..]
...partiality is itself a monadic effect?
Cheers
Conor
--
http://www.cs.rhul.ac.uk/~conor
More information about the Haskell-Cafe
mailing list