[Haskell-cafe] C++ class = neutered (haskell class + haskell existential)

Bulat Ziganshin bulat.ziganshin at gmail.com
Fri Aug 18 02:13:44 EDT 2006


Hello Thomas,

Friday, August 18, 2006, 7:57:13 AM, you wrote:

>> There is a major difference though, in C++ (or java, or sather, or c#,
>> etc..) the dictionary is always attached to the value, the actual class
>> data type you pass around. in haskell, the dictionary is passed
>> separately and the appropriae one is infered by the type system. C++
>> doesn't infer, it just assumes everything will be carying around its
>> dictionary with it.

> C++ programmers deal with this using a number of techniques, mostly
> involving templates.

Haskell type classes are closer to templates/generics than to classes
itself

> Actually, there is one technique using C++ templates that I really
> want to see going mainstream in the Haskell implementations.
> Existential types are already there, now I want to see associated
> types (trait types in C++). Maybe I've been doing too much C++
> programming in the last few years, but a lot of the times when I end
> up using multiparameter type classes, what I really want is an
> associated type.

i also wrote a lot of such code for Streams library and can say that
MPTC+FD are close enough to emulate AT, although need slightly more
verbose definitions. moreover, AT are already implemented in GHC 6.5,
afai seen in ghc-cvs reports

> For those who are interested, I'm sure the relevant papers are readily
> available on citeseer/Google. :-)

http://haskell.org/haskellwiki/Research_papers/Type_systems#Associated_types

-- 
Best regards,
 Bulat                            mailto:Bulat.Ziganshin at gmail.com



More information about the Haskell-Cafe mailing list