Wed, 26 Apr 2000 23:49:43 -0700, Mike Jones <[EMAIL PROTECTED]> pisze:

> (||*):: Vi Bool -> Vi Bool -> Vi Bool
> b1 ||* b2 = do
>               p <- b1
>               if p then return True else b2

The definition does not use anything specific to this particular monad.
The most general type that can be derived for this function is
(||*):: Monad m => m Bool -> m Bool -> m Bool

> Should I make a new class from Monad, say InstrumentMonad, define
> my state monads with it, then write:
> 
> (||*):: (InstrumentMonad a) => a Bool -> a Bool -> a Bool

This would be needed if there was some operation used there that
applies to all InstrumentMonads, but only to them.

-- 
 __("<    Marcin Kowalczyk * [EMAIL PROTECTED] http://qrczak.ids.net.pl/
 \__/              GCS/M d- s+:-- a23 C+++$ UL++>++++$ P+++ L++>++++$ E-
  ^^                  W++ N+++ o? K? w(---) O? M- V? PS-- PE++ Y? PGP+ t
QRCZAK                  5? X- R tv-- b+>++ DI D- G+ e>++++ h! r--%>++ y-


Reply via email to