Sun, 04 Oct 2009 11:08:52 -0500, Andrei Alexandrescu thusly wrote: > So, you say D lacks built-in > first-class sum and product types. Yet Tuple is a product type. In spite > of appearances, it's a built-in type, just that it has no literal.
Not true. A tuple of tuples, for instance, breaks the property (so you need struct tuple hacks). The auto-flattening is just harmful. Also, not only does it not have a literal, in many places the use has been disabled. Recent versions of the compiler have started to throw errors in those use cases. Previously I expected it to be fixed, but apparently the feature was considered too good to be allowed. > don't see that a deal breaker. Then I fail to find fault for Algebraic > (in std.variant) as a sum type. I need to add visitation to it, but > other than that I don't think Algebraic is worse than a built-in type. Ok, might be. I have not used it yet. It least it's too verbose for my taste. Too much verboseness makes the feature impractical to use. >> I remember you also suggested all kinds of macro systems, but the >> discussion died ages ago. > > It hasn't died. We just concluded that it would take many months to > define and implement a decent macro system. We also had a ton of other > things to do, so we decided macros have to wait. Ok. > I am very familiar with much of Odersky's work and have a lot of respect > for it. But then Walter created D and has brought his world view in D, > not someone else's. We can't go like, hey, let's wheelbarrow whatever's > good in language X into D. That's why I specifically asked "what steps > we need to take" hoping for much more detail and aim at integration than > "Scala is good". I agree you don't need to copy each feature. There just are some open problems and it would be really nice if the language could solve them. Since D is a practical language, you might say that it doesn't need to solve every possible problem (especially not high level problems), just some low-level systems programming related ones. > Regarding the Node-Edge subtyping problem, I'd appreciate a link. http://lampwww.epfl.ch/~odersky/papers/ScalableComponent.html, page 7 in the pdf.
