On 7/27/06, David House <[EMAIL PROTECTED]> wrote:
How about we drop the idea of an auxilary cond function, and instead
just use a Boolean typeclass?

class Boolean b where
 isTrue :: b -> Bool
 isFalse :: b -> Bool

Then the semantics of if-then-else would change to something like this:

if b then t1 else t2
b is required to be of a type which instantiates Boolean
If isTrue b is True, then t1 is executed, otherwise if isFalse b is
True, then t2 is executed, otherwise _|_ is returned.

Then you get the benefit of being able to use arbitrary 'boolean-like'
types in actual if statements, without messing around with
-fno-implicit-prelude and rebindable syntax.

It would be possible, sure, but I don't want to go in this direction.
I don't only want to overload the if-then-else for different kinds of
booleans, I would like to be able to change its behavior completely.
One particular application of this that I have in mind is the
JavaScript "embedding" that Joel Björnson is currently working on as
his SoC project. There the "embedding" is actually a set of
combinators for constructing an abstract syntax tree, so if-then-else
would translate into the data constructor IfThenElse applied to its
arguments.

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

Reply via email to