Eliminate assert and lazy from D?

Frank Benoit keinfarbton at googlemail.com
Mon Oct 12 23:19:17 PDT 2009


Andrei Alexandrescu schrieb:
> Right now, the language has enough power to express assert as a library
> function, as opposed to a primitive construct. (See e.g. enforce.) I
> think it would be good to relegate assert to object.d.
> 
> This also brings up "lazy", which seems to be quite botched. Are there
> suggestions on how to replicate its functionality in a different way? I
> even seem to recall lazy was discussed as a disadvantage in the recent
> dialog on reddit, see
> 
> http://www.reddit.com/r/programming/comments/9qf8i/i_wrote_some_d_today_and_its_completely_blowing/
> 
> 
> I personally believe it's useful to be able to pass an unevaluated
> expression into a function, for example assert and enforce themselves
> use that.
> 
> But let's open this for discussion: should assert and/or lazy be
> removed? If not, why not? It yes, why? How can we replicate their
> functionality?
> 
> 
> Andrei

I have seen lazy only used in its own show case. In log functions. In
Tango too it is used in log functions. I use delegates as function
parameters often, but not lazy. This is because I may add parameters and
 on the caller site, IMO it must be obvious, this expression is not
evaluated as others. Maybe it is acceptable to remove lazy and write
logging statements with delegate and the curly braces.
log({ "bla bla "~info });

A related issue with passing arguments, that i think needs a better
solution in D are the variadic arg list. No magic param names and the
possibility to pass this list - or a slice of it - to another function.



More information about the Digitalmars-d mailing list