Looking for champion - std.lang.d.lex
Walter Bright
newshound2 at digitalmars.com
Tue Oct 26 19:32:44 PDT 2010
Nick Sabalausky wrote:
> "Walter Bright" <newshound2 at digitalmars.com> wrote in message
> news:i9qd8q$1ls4$1 at digitalmars.com...
>> 4. the tokens should be a value type, not a reference type
>
> I'm curious, is your reason for this purely to avoid allocations during
> lexing, or are there other reasons too?
It's one big giant reason. Storage allocation gets unbelievably costly in a
lexer. Another is it makes tokens easy to copy. Another one is that classes are
for polymorphic behavior. What kind of polymorphic behavior would one want with
tokens?
> If it's mainly to avoid allocations during lexing then, maybe I've
> understood wrong, but isn't D2 getting the ability to construct class
> objects in-place into pre-allocated memory?
If you do that, might as well make them value types. The only reason classes
exist is to support runtime polymorphism.
C++ made a vast mistake in failing to distinguish between value types and
reference types. Java made a related mistake by failing to acknowledge that
value types have any useful purpose at all (unless they are built-in).
More information about the Digitalmars-d
mailing list