[Haskell-cafe] Type Directed Name Resolution

Ozgur Akgun ozgurakgun at gmail.com
Wed Nov 10 05:56:27 EST 2010

I still don't know whether I like this idea or not, but here is the simplest
definition I can think of about what it promises.

Using TDNR, it will be possible to write the following code:

data Foo = Foo { name :: String }
data Bar = Bar { name :: String }

getName :: Either Foo Bar -> String
getName (Left  f) = name f
getName (Right b) = name b

However, currently you cannot: "Multiple declarations of 'name'"

There are basically two things you can do to solve this "problem".
 - Use different names for your functions, a la "fooName, barName". This
clutters up your code, and sometimes you may not have access to that part of
the code.
 - Define these 2 data types in different modules and import qualified, a la
"Foo.name, Bar.name". One might still think this clutters up your code.

In any case, as a programmer you need to resolve which function to use
depending on types while defining 'getName'. However compiler has enough
information to automate this decision for you. This is not a way to do
polymorphism, this is merely a way to allow programmers define more than one
function with the same name, but different types.

This kinda sounds like what java people think polymorphism is :P

Ozgur Akgun
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20101110/142d73ab/attachment.html

More information about the Haskell-Cafe mailing list