On 23 January 2013 08:04, John Wiegley <jo...@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.

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to