On 2010-02-28 18:42:50 -0500, Pelle Månsson <pelle.mans...@gmail.com> said:

On 02/28/2010 10:01 PM, Michel Fortin wrote:
If you want a rationale, I think it'd be fine to say that attributes are
things you can ignore because they only have a restrictive effect on the
semantics (the definition you said you invented). Then mention there is
an exception: @property.

Sorry if I go on and miss the point some more, but I dislike this a lot. That's imposing restrictions on future @attributes. Like, for example, @memoized. Or something like that. @traced, maybe.

If I'm not mistaken about your intention, making a function @memoized wouldn't change its semantics. It'd change how it is optimized, but both from the caller perspective and for the one who write the function's implementation, it's totally transparent. Well, not exactly: it puts some restrictions for the function's body, same as purity I believe.

So someone who just want to understand how a program works can ignore @memoized when looking at it (at least until he wants to look at the optimizations).

The difference with @property is that it changes how you call it, it's not a transparent change at all.


This is me envisioning user-defined @attributes, really. They can reduce boilerplate and increase flexibility in cases like @traced.

Not sure what you mean about @traced. If you mean that any call to a function is logged somewhere, then I don't see that as a change in semantics neither for the caller nor for the one who write the function, so it'd have no problem having that as an attribute.


--
Michel Fortin
michel.for...@michelf.com
http://michelf.com/

Reply via email to