D's greatest mistakes

bearophile bearophileHUGS at lycos.com
Tue Nov 30 04:46:54 PST 2010


spir:

> Andrej Mitrovic:
> 
> > constraint
> > {
> >     isDynamicArray(a);
> >     isIterable(a);
> > }
> > body
> > {
> >     ...
> > }

> I like very much the idea of constraint blocks. Much better than expanding func header line, reuses an existing syntactic construct, and far cleaner.

But I'd like that syntax to allow for an error message for each constraint. So it becomes like contract programming, done at compile-time on types and compile-time constants, and the "in" keyword is enough:

in {
  static assert(isDynamicArray!T, "err msg 1");
  static assert(isIterable!T, "err msg 2");
  ...
} body {
  ...
}

Bye,
bearophile


More information about the Digitalmars-d mailing list