Dispatching on a variant
language_fan
foo at bar.com.invalid
Sat Sep 26 17:18:08 PDT 2009
Sat, 26 Sep 2009 18:51:19 -0400, #ponce thusly wrote:
>> Exactly, this is what I mentioned previously. Isn't it ugly compared to
>>
>> type Event = Mouse | Key | Move;
>>
>> void dispatchEvent(Event event) {
>> match(event) {
>> Mouse m => m.squeek();
>> Key k => ...
>> ...
>> }
>> }
>>
>> What's with all the language proposals here? Why hasn't anyone proposed
>> this before? This is in fact very helpful - that's why several modern
>> languages have adopted it.
>
> Algebraic data types are indeed a neat feature. But the languages which
> implemented this (ML, Haskell, scala...) seems only to be functionals
> one. I suppose it's because it replaces enums and unions for those. In
> procedural languages one can emulate this with 1 enum + 1 union.
>
> I would prefer having some computed goto (through final switch).
Agreed.
On the other hand I cannot fully agree that Scala is more a functional
language than something else. The core is both object oriented and
functional. It is even more object oriented (purer) than most mainstream
C-like languages. By this I mean that in my opinion it is not impossible
to imagine that D also implemented something like case classes and
extended switch to handle also simple patterns.
More information about the Digitalmars-d
mailing list