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



--- Comment #7 from David Piepgrass <qwertie...@gmail.com> 2012-07-12 12:21:21 
PDT ---
> It almost looks like we're trying to pass MyType as first argument to the
> function, but because we can't pass type as function argument, we pass it as
> first template argument. But you're right that none of that is very obvious.
> Maybe the whole uniform function call syntax could have been implemented
> somehow differently so that it had been more intuitive to people new to the
> language.

Well, yeah, maybe. I could probably think of some alternatives that are a bit
more intuitive than UFCS. For example I think it would be nice to allow 
"alternate" interfaces to types, something like:

alias MyInt : int {
    bool isPrime() const { ... }
}
MyInt x = 7;   writeln(x.isPrime()); // OK
int   y = x+1; writeln(y.isPrime()); // ERROR, no such function in "int"

>But I really mean type when I say, "extending the functionality of a type". I
>mean not only class but all user defined types as well, like enum, struct and
>union.

My proposal could easily include enums and structs, too:

static enum Goo { static Goo g() {...} }
static struct Hoo { static void f() {...} }

It reminds me that C# allows "new Hoo()" for structs even though they are not
allocated on the heap. If that existed in D then the "static new" part of my
proposal could work well for structs, too.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------

Reply via email to