On 2010-01-18 10:08:34 -0500, "Denis Koroskin" <2kor...@gmail.com> said:

It's as simple as that: require '*' to denote reference type. What does it give?

It works like that in Objective-C where object variables must always be pointer to objects (enforced by the compiler), and it's not so bad. It's undoubtedly cleaner to read without '*', but as you illustrate it cause issues.

3) No more issues with tail-const, tail-shared, tail-immutable; deprecate Rebindable (this one was recently discussed):

That's the issue that bothers me most about the current syntax. Rebindable is a nice trick, but it's a hackish solution thrown at a syntactic problem. And it's not so rare either when you're working with immutable objects. It'd be much better if the syntactic problem didn't exist in the first place. Compare this

        Rebindable!(immutable Object) object;

to this:

        immutable(Object)* object;

The second is much easier to read. By getting rid of this template trickery playing with the type system and replacing implicit references with the almost identical concept of pointer, I think we would make the language easier to grasp.

Are we too late in D2 development to make this change? I'm in support of it.


--
Michel Fortin
michel.for...@michelf.com
http://michelf.com/

Reply via email to