[Haskell-cafe] ANN: monad-bool 0.1

Conrad Parker conrad at metadecks.org
Wed Jan 23 01:34:10 CET 2013


On 23 January 2013 08:04, John Wiegley <johnw at fpcomplete.com> wrote:
> monad-bool implements a pair of Boolean monoids and monads, to support
> short-circuiting, value-returning computations similar to what Python and Ruby
> offer with their native && and || operators.
> ...
> Use 'onlyIf' with AndM and AndMT to guard later statements, which are only
> evaluated if every preceding 'onlyIf' evaluates to True.  For example:
>
>     foo :: AndM Int
>     foo = do onlyIf (True == True)
>              return 100
>              onlyIf (True == True)
>              return 150
>              onlyIf (True == False)
>              return 200
>
> When run with `evalAndM foo (-1)` (where (-1) provides a default value), 'foo'
> returns 150.
>
> Use 'endIf' with OrM and OrMT to chain statements, which are only executed if
> every preceding 'endIf' evaluated to False.  For example:
>
>     bar :: OrM Int
>     bar = do endIf (True == False)
>              return 100
>              endIf (True == False)
>              return 150
>              endIf (True == True)
>              return 200

John,

these sound powerful, but how would I do something esoteric like
if/elseIf/endIf ?

Conrad.



More information about the Haskell-Cafe mailing list