Does D have too many features?

Peter Alexander peter.alexander.au at gmail.com
Sat Apr 28 16:11:16 PDT 2012


On Saturday, 28 April 2012 at 22:33:08 UTC, Timon Gehr wrote:
> - UFCS:
>    The complexity comes from having multiple function invocation
>    syntaxes. UFCS actually makes that situation better without 
> adding a
>    lot of complexity to the compiler implementation.

Exactly. The problem is having multiple function invocation 
syntaxes. That's one source of complexity, and UFCS add another 
in attempt to reduce the first cause.


> - const/immutable/shared/pure
>    shared: The fact that everything that is not marked as 
> shared is
>    actually thread-local is extremely important. I think most 
> other
>    imperative languages got this wrong.
>    But if shared is explicit in the type system, immutable 
> really
>    should be explicit too. The sad part is that the qualifiers 
> don't
>    play nicely with reference types at the moment.

I agree with thread-local by default, but that is separate from 
shared.


> - opDispatch
>    This is useful and of significant value if used the right 
> way.

Can you give me an example of it being used the right way?


>    I hope you are not actually serious about that '->' part.

I'm serious. I don't like overloaded syntax.  foo.bar shouldn't 
also mean (*foo).bar -- it causes confusion and introduces 
ambiguities when either could work. Combine this with opDispatch, 
UFCS and function overloading and your in for some nasty 
headaches.


More information about the Digitalmars-d mailing list