On 25/08/2012 07:45, David Piepgrass wrote:
2. immutable int[] func()... does not return an immutable array of int[]?

Maybe this should be disallowed with an error message "prefix immutable is deprecated - either use suffix immutable or immutable(int[])":

http://d.puremagic.com/issues/show_bug.cgi?id=4070

Unfortunately that is marked WONTFIX.

Making matters worse, the language itself and most of its constructs are
non-Googlable. For example if you don't remember how do declare the
forwarding operator (alias this), what do you search for? If you see
"alias _suchAndSuch this" and don't know what it means, what do you
search for? (one might not think of removing the middle word and
searching for that).

alias syntax is confusing and inconsistent with renamed imports. It should use assignment syntax:

alias Bar = expression;
alias this = foo;

http://d.puremagic.com/issues/show_bug.cgi?id=3011

Interestingly, the discussion so far has been all about syntax, not any
significant new features. I'm thinking ... coersion of a class to any
compatible interface (as in Go)?

We already have:

import std.range;
auto range = ...;
auto obj = inputRangeObject(range);
alias ElementType!(typeof(range)) E;
InputRange!E iface = obj;
writeln(iface.front);

So maybe we can do:

auto implementObject(Interface, T)(T t){...}
auto obj = implementObject!(InputRange!E)(range);

Also, it might be nice to have 'canImplement' for template constraints:

auto foo(T)(T v) if (canImplement!(T, SomeInterface)){...}

Nick

Reply via email to