Add ifThenElse and (?) to Data.Bool

winter drkoster at qq.com
Thu Nov 17 03:16:19 UTC 2016


I’m totally aware of the existence of bool, i suppose (?) is mainly used in fully application to get a different style than if-then-else syntax, say,

...
    isGoo <- checkGoo
    isGoo ? goo
          $ woo
...


But like what the wiki suggested, (?) can be used in some high-order situations. I like this operator because the mnemonic of questioning meaning.



> On 17 Nov 2016, at 11:03, David Feuer <david.feuer at gmail.com> wrote:
> 
> If ifThenElse is good for RebindableSyntax, then I'm +1 on that (but I've never played with that extension, so I don't really know). I'm -1 on (?). We already have bool, which tends to be rather more useful when partially applied.
> 
> 
> On Nov 16, 2016 9:43 PM, "winter" <drkoster at qq.com <mailto:drkoster at qq.com>> wrote:
> It seems this’s a very old request, see https://wiki.haskell.org/If-then-else <https://wiki.haskell.org/If-then-else>. I’d like to see following:
> 
> ifThenElse :: Bool -> a -> a -> a
> ifThenElse True  x _ = x
> ifThenElse False _ y = y
> 
> infixr 1 ?
> (?) :: Bool -> a -> a -> a
> (?) = ifThenElse
> 
> in Date.Bool module, it will have advantages that:
> 
> + It’s more composable than syntax.  
> + Write (xxx ? yyy $ zzz) instead of (if xxx then yyy else zzz) is more consistent with (f . g $ x) style, and save key strokes.
> + In module with RebindableSyntax enabled, you can import ifThenElse to get default behavior.
> 
> Whether or not to be exported by Prelude is another question, but Data.Bool seems a good place to start with.
> 
> Cheers~
> Winter
> 
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org <mailto:Libraries at haskell.org>
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries <http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries>
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20161117/fc6e4166/attachment.html>


More information about the Libraries mailing list