I forgot Scala. They say Scala can @specialize without type erasure and it has variance polymorphism. What are these? Sounds as if Scala is getting closer to C++/D (instantiation and link-time optimization) and we need to fight back to make our language more expressive.
- G.W. Gary Whatmore Wrote: > What's the difference between: > > type polymorphism > parametric polymorphism > ad-hoc polymorphism > generics > c++ templates > d style templates > other templates (are there?) > > Does Java and C# have type polymorphism or generics or templates? What's the > real name and how to compare? Is D most expressive? I bet it is. > > - G.W. > > Paulo Pinto Wrote: > > > Sorry but I still don't get it. > > > > Do you mean that the types that erased and the same code is generated? > > > > Then let me say that .Net generics get generated on the fly and JITed for > > each > > different type. > > > > Eiffel and Modula-3 generics also have specific generated code for each > > type. > > > > The major difference regarding C++ code is that the linkers are smarter and > > are > > able to remove duplicates of the generated code for the same set of type > > arguments. > > > > -- > > Paulo > > > > "Jonathan M Davis" <[email protected]> wrote in message > > news:[email protected]... > > > On Wednesday 20 October 2010 22:47:15 Paulo Pinto wrote: > > >> Eiffel does have templates, as in generic types. > > >> > > >> Or do you mean the compile time trick that C++ templates allow, thus > > >> opening the door for > > >> the meta programming done at compile time? > > > > > > Templates and generics are two separate - albeit related - things. > > > Templates > > > generate code whereas generics allow you to use multiple types with the > > > same > > > code (be it by generating code or by actually making them share code). C++ > > > templates happen to allow for metaprogramming beyond that, but I don't > > > think > > > that that's necessary for a language to be considered to have templates. > > > The key > > > thing is that templates _generate_ code whereas generics can simply make > > > multiple types use the same code. C++ and D are the only languages that > > > I'm > > > aware of which have templates. Other languages with generics generally > > > don't use > > > templates to have generics. > > > > > > - Jonathan M Davis > > > > >
