Ryan Ingram wrote:
My proposal is to allow "ad-hoc" overloading of names; if a name is
ambiguous in a scope, attempt to type-check the expression against
each name. It is only an error if type-checking against all names
fails. If type-checking succeeds for more than one then the
expression is ambiguous and this is also an error.
Pros: shorter code, less busywork to please the compiler
Cons: potentially exponential compile time?
Any thoughts?
Now try importing something like Data.Map where almost every single
function name clashes with the Prelude. If I write
foo x = map (bar x)
then unless there are some explicit type signatures somewhere, the poor
compiler has no way of knowing whether this function is mapping over a
list or a Map.
(Arguably you might wish to write a function that does both. This
quickly boils down to an argument along the lines of "Haskell doesn't
support container neutrality very well", which as I understand it is
already a known problem.)
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe