Claus Reinke wrote:
Do you argue that overloading logical operations like this in Haskell
sacrifices type safety? Could programs "go wrong" [1] that use such
abstractions?

If I understand your point correctly, you are suggesting that such programs
are still type safe.  I agree with the claim that such features are
detrimental in practice though.  Instead of lumping it with type safety,
then what do we call it?  I think I've heard of languages that do such
conversions as "weakly" typed.  Really the issue is with implicit
conversions, right?

Isn't it merely a matter of balance?

You are completely right. I have to rephrase: The concrete example of interpreting lists as booleans leads to too weak typing for my taste.

Let me give Python as an example: It has no static check whether a sub-routine contains a 'return' statement. If it calls 'return', you might call it a function, if it does not call 'return', you might call it a procedure. Whether 'return' is called may vary at run-time, thus a sub-routine can be both function and procedure. However, if the sub-routine does not call 'return' it implicitly calls 'return None' when leaving the scope of the sub-routine. 'None' is a value of every type, just like bottom in Haskell. But in contrast to Haskell 'None' is a well-defined value. As far as I remember, it is considered 'false' in logical expressions. (PHP is even more extreme in interpreting all kinds of values as booleans.) Now, whenever you forget to call 'return' the resulting 'None' goes unnoticed through your program until at a very unrelated place an error like "you tried to access the 5-th element of the list None, which does not exist" pops up.

Sure we can implement this behaviour in Haskell, too, e.g. using the Maybe type - but should we do it? I prefer an interpreter which refuses to start the program with the message: 'you forgot a return'.

--
Mit freundlichen Gruessen
Henning Thielemann

Viele Gruesse
Henning

Martin-Luther-Universitaet Halle-Wittenberg, Institut fuer Informatik

Tel. +49 - 345 - 55 24773
Fax  +49 - 345 - 55 27333
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to