On 7/25/15 9:17 AM, Brendan Zabarauskas wrote:
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.

Understood, but by the same token library authors shouldn't ship untested code. This is basic software engineering. Once we agree on that, we figure that concepts help nobody. -- Andrei

Reply via email to