> These are two models, inheritance and type classes, which are different 
> answers to the same problem. I can see no good reason to provide both in the 
> same language..

I see one difference: with concepts the type match is an implicit one, the 
person creating the matching concrete type doesn't even have to now that the 
concept exists. With inheritance, it is explicit: the creator of a derived type 
explicitly mentions the base type in the type definition. This implies that he 
is aware of the semantics that cannot be checked by a compiler. A concept match 
checks that, e.g., a certain proc is defined for the matched type. The creator 
of that proc never promised that this proc will actually do what we think it 
will.

Reply via email to