On Saturday, 25 July 2015 at 09:40:52 UTC, Walter Bright wrote:
On 7/25/2015 12:19 AM, Ola Fosheim =?UTF-8?B?R3LDuHN0YWQi?=
<[email protected]> wrote:
The point of having a type system is to catch as many mistakes
at compile time
as possible. The primary purpose of a type system is to reduce
flexibility.
Again, the D constraint system *is* a compile time system, and
if the template body uses an interface not present in the type
and not checked for in the constraint, you will *still* get a
compile time error.
The idea that Rust traits check at compile time and D does not
is a total misunderstanding.
BTW, you might want to remove the UTF-8 characters from your
user name. Evidently, NNTP doesn't do well with them.
I think the point is that trait based constraints force
compilation errors to be raised at the call site, and not
potentially from deep within a template expansion. Template
errors are stack traces coming from duck typed, compile time
programs. Library authors can't rely on the typechecker to pick
up on mistakes that may only appear at expansion time in client
programs.