[Haskell-cafe] Proposal: Generic conditions for 'if' and 'case'

Nicolas Trangez nicolas at incubaid.com
Mon Sep 2 01:13:22 CEST 2013


I didn't test it, but you might want to look into the 'rebindable syntax'
extension and its 'ifThenElse' feature.

Nicolas
On Sep 2, 2013 12:51 AM, "Wvv" <vitea3v at rambler.ru> wrote:

> I think it is an old idea, but nevertheless.
> Now we have next functions:
>
> if (a :: Bool) then x else y
>
> case b of
> a1 :: Bool -> x1
> a2 :: Bool -> x2
> ...
>
> Let we have generic conditions for 'if' and 'case':
>
> class Boolean a where
>     toBool :: a -> Bool
>
> instance Boolean Bool where
>    toBool = id
>
> instance Boolean [a] where
>    toBool [] = False
>    toBool _ = True
>
> instance Boolean (Maybe a) where
>    toBool Nothing = False
>    toBool _ = True
>
> instance Boolean Int where
>    toBool 0 = False
>    toBool _ = True
>
> if' (a :: Boolean b) then x else y
>
> case' d of
> a1 :: Boolean b1 -> x1
> a2 :: Boolean b2 -> x2
> ...
>
>
> It is very easy to implement to desugar:
> if' a then ... == if toBool ( a ) then ...
>
>
>
> --
> View this message in context:
> http://haskell.1045720.n5.nabble.com/Proposal-Generic-conditions-for-if-and-case-tp5735366.html
> Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20130902/22c9aaa5/attachment.htm>


More information about the Haskell-Cafe mailing list