Eliminate assert and lazy from D?
Jacob Carlborg
doob at me.com
Tue Oct 13 02:18:51 PDT 2009
On 10/13/09 08:21, Andrei Alexandrescu wrote:
> Frank Benoit wrote:
>> 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 });
>
> std.contracts.enforce also uses it.
>
>> 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.
>
> I'm hoping that template variadics + arrays of Variant cover all needs.
>
>
> Andrei
Templates don't work as virtual methods. Arrays of variants will
probably not interact well with C variadic functions.
More information about the Digitalmars-d
mailing list