[Haskell-cafe] Type Directed Name Resolution

Yves Parès limestrael at gmail.com
Wed Nov 10 07:36:34 EST 2010

I think this idea is a stairway to duck typing.
I exagerate, of course, but here is my point:

It shouldn't be difficult to make a class:
class HasName a where
  name :: a -> String

The problem is when declaring Foo and Bar instances of HasName, since you
have to copy code :
data Foo = Foo String
data Bar = Bar String
instance HasName Foo where
  name (Foo n) = n
instance HasName Bar where
  name (Bar n) = n

I'm sure one can automatize this using TemplateHaskell, but it is not really

What I mean is that GHC should give a means to automatize this kind of
situation, for instance:
data Foo = Foo { name :: String }
  (deriving HasName)

Or even:
data Foo = Foo { HasName.name }

Just an idea.

2010/11/10 Ozgur Akgun <ozgurakgun at gmail.com>

> 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
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20101110/1e2d553f/attachment-0001.html

More information about the Haskell-Cafe mailing list