Bracketless branch if, sugar to taste...
Thu, 13 Feb 2003 18:34:34 GMT
Yes indeed, one can further "sugar" Keith's suggestion to eliminate
the need for brackets around the branches. Though as this means using
an infix operator then and else, with corresponding mangling of the
lexical appearance of same, this becomes increasingly a matter of taste
(or perhaps, in need of sound dental advice).
ifM (return (1==1))
`then_` print (2+3)
`else_` print (3+4)
Of course, the type errors are going to start looking more and more
mysterious if you get 'em in the wrong place...
infix 4 `then_`
infix 5 `else_`
data Branches a = Branches a a
then_ :: (a->a->a) -> Branches a -> a
then_ sel (Branches t e) = sel t e
else_ :: a->a->Branches a
else_ t e = Branches t e
iff b t e = if b then t else e
ifM b t e =
do test <- b
if test then t else e