On Fri, 2015-09-04 at 22:21 +0000, bitwise via Digitalmars-d wrote: > […] > This is another problem: > "Containers do not form a class hierarchy, instead they > implement a common set of primitives (see table below). These > primitives each guarantee a specific worst case complexity and > thus allow generic code to be written independently of the > container implementation." > > I believe this is wrong, in that the point of abstraction should > be the Ranges you get from the containers, not the containers > themselves. I think it's a little silly for an Array(T) to have a > "removeAny()" method. > > […]
I think I am missing a step in the argument here: if the point is that Ranges are the core of the abstraction, why does there need to be a class inheritance hierarchy. The lessons from C++, Java, Python, and Go, include that the obsession with inheritance during the 1990s went far too far. Inheritance can be useful, but for frameworks it is only conformance to interfaces that matters for consistency across the framework. Thus as long as every data structure type conforms to the correct interface so that there is composability in the use of Ranges, then things are fine. This though is philosophy and far too general. To continue this aspect of the debate we would need to deal in more specific things. Are there some examples from Phobos and your containers that we could pin this on? -- Russel. ============================================================================= Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.win...@ekiga.net 41 Buckmaster Road m: +44 7770 465 077 xmpp: rus...@winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
signature.asc
Description: This is a digitally signed message part