Wed, 28 Apr 2010 18:34:44 -0500, Andrei Alexandrescu wrote: > On 04/28/2010 06:28 PM, retard wrote: >> Wed, 28 Apr 2010 13:22:53 -0400, bearophile wrote: >> >>> BCS: >>> >>>> Could you elaborate on what exactly the expression problem is?< >>> >>> I am far from being an expert on such matters, I will do what I can to >>> answer. It's not an esoteric problem, if you program with an OO >>> language you have probably faced it sometime. >> >> You failed to mention that the OOP solution is in many cases overly >> complex. When you don't need to subclass the car elements, a functional >> pattern matching happens to win - at least if the declarativeness of >> code matters. The implementation can also use jump tables so it becomes >> faster than double dispatch. Luckily D is never going to get algebraic >> data types so you can all stop reading this post right here. > > I'm having trouble picturing the following scenario for a day in life. > > [snipped a very precise description of someone's life] > > One of these things is unlike the others! > > > Andrei
:) Sorry, but I actually have to use D. We long ago started some D projects and have to maintain them now (ok, this sounds worse than it really is - it's a joy compared to the xml bloat of j2ee and terribly bad design of php!). I also often fire up dmd to test some more or less trivial piece of code since I need the native codegen capabilities of the language so I really do have use for it. So, tyvm for the work so far, it has been really useful. I also try to keep the amount of factual information on my posts above the level of bitterness. (I should probably refrain from posting at all if it annoys too much.) After all, there might be some hope that it educates the community as a large and puts some pressure on you to stop breaking the principles of good language design. Fwiw, it would calm some of the most demanding users of the language if there was a well documented process behind design decisions. I haven't heard any good arguments e.g. against algebraic data types other than "it confuses some novice C users".