On Feb 13, 2009, at 1:38 PM, Daniel Fischer wrote:
? Well, still easy, we must unify with (a -> b) -> c -> [d], only one
possibility, fine. Or is it? What if we have another 'take' in scope?
Say take :: Int -> Set a -> Set a ? Oops.
So, where draw the line?

You draw the line exactly when you cannot perform unambiguous typing.

Bottom line, allowing that sort of overloading would at least be very
ad-hoccish, and probably a bad thing.

Why? All existing programs would type check and run without modification. So if you really like type class abuse and a billion pseudonyms for '+' (among others), then you would still have the option of developing in that style.

On the other hand, if you wanted the machine to do what a human can (which is, deciding in completely unambiguous cases which of several definitions to use), then you'd be able to use name overloading and make some programs a lot more readable.

Regards,

John A. De Goes
N-BRAIN, Inc.
The Evolution of Collaboration

http://www.n-brain.net    |    877-376-2724 x 101


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

Reply via email to