
On Fri, Dec 24, 2010 at 4:32 PM, Patrick LeBoutillier
Hi,
I'm just messing around with infix operators, and I'm trying to implement some kind of ternary if operator:
(??) :: Bool -> (Bool -> a) -> a (??) = flip ($)
(?:) :: a -> a -> (Bool -> a) t ?: f = \b -> if b then t else f
test b = b ?? ("IF" ?: "THEN")
I would like to get rid of the parentheses around the ("IF" ?: "THEN") part, but I'm not familiar with the use of theinfixr/infixl functions. I'm not sure which one to use in this case and how exactly to use it.
There's also the possibility to do the following : (True ?? t) f = t (False ?? t) f = f Then you can do things like that :
False ?? "Hello" $ False ?? "Goodbye" $ "Adios" "Adios"
You can even define (?:) as ($) if you want your own operators. -- Jedaï