Bulat Ziganshin wrote:
Hello Fawzi,

Tuesday, March 20, 2007, 5:37:45 PM, you wrote:

ambiguous function call at line xxx.
Possible instances are:
    f: Int -> String -> Double -> a
    f: String -> Int -> [Int] -> a
please explicitly annotate the type to disambiguate

Note that you want to use also the type of the result to disambiguate.
Not easy, but doable, and done, again I can understand why haskell did
not do it.

you not yet realize the whole problem :)  in traditional languages,
all type information flows in one direction and when compiler see f(x,y,z)
call, it already knows x/y/z types because they should be declared
earlier. but in haskell types of these variable may be defined by
subsequent calls. so imagine several such overloaded calls - "f x y z",
then "g (h x) (h y)", and more and more. error messages will become so
complicated that you will shoot the compiler :)

Yes looking at the paper describing the type system of aldor
   http://www.aldor.org/mediawiki/index.php/Reports
(I had used it 5 years ago before abandoning it because it was closed
source and did not work on mac) indeed there are quite some differences,
for example no parametric polymorphism, but types (and just about
everything) are values so you can have something similar by passing the
explicit type to a function that generates modules or other functions.

Fawzi

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

Reply via email to