Ryan Ingram wrote:
> Heinrich wrote:
>> While I do agree that qualified names are annoying at times, I think
>> that type directed name disambiguation is a Pandora's box.
> 
> I see where you are going, but I'm not sure I agree.  Let me give an
> example from another language with this kind of resolution: C++.  From
> a purely practical point of view, function overloading in C++ does
> what I want almost all the time.  And when it doesn't do what I want,
> it's always been immediately obvious, and it's a sign that my design
> is flawed.
> 
> But those cases where it does what I want have been incredibly useful.

Sure, overloading is useful. But to avoid headache in a polymorphic
language, I'd prefer a principled approach to it. Hence, I'm convinced
that there should be only one mechanism for overloading in Haskell;
which is type classes at the moment.

It appears that type direction name disambiguation can be implemented
with (automatically generated) type classes? Something like this

    class Function_lookup t where
        lookup :: t

    instance Function_lookup (k -> [(k,a)] -> Maybe a) where
        lookup = ...

    instance Function_lookup (k -> Map k a -> Maybe a) where
        lookup = ...

For each ambiguous function, the compiler creates a type class and
corresponding instances and type inference will sort out the rest (or
throw a type error).


Regards,
apfelmus

--
http://apfelmus.nfshost.com

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

Reply via email to