Rant after trying Rust a bit

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Sat Jul 25 06:59:16 PDT 2015


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?=
>> <ola.fosheim.grostad+dlang at gmail.com> 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


More information about the Digitalmars-d mailing list