[Python-Dev] Re: decorators and 2.4
jbone at place.org
Mon Jun 28 13:44:41 EDT 2004
On Jun 28, 2004, at 12:27 PM, David Abrahams wrote:
> I'm a big fan of declarative programs.
BTW, for the record --- I'm not under any illusions about Python's
> That said, declarativeness (especially in Python) is more a matter of
> "notational flavor" than anything we can measure. It's certainly
> independent of whether there are actual side-effects.
> Also, I'm suspicious of any heroic efforts to prevent language
> features from being "abused".
Let me be specific about what I'm actually worried about, here.
Specifically: I've been playing a bit with some type-inferencing stuff
and optional typing. One desiderata for decorators, per the PEP, is to
support applications like embedding type signatures and so forth into
the language, attaching them to the relevant objects. A goal could be
to support at least partial compilation with (some, and optional)
compile-time guarantees about type safety and behavior. To the extent
that decorators either (a) are evaluated conditionally based on runtime
state, or (b) modify and are in turn modified by runtime state,
decorators as mutable environments or with true side effects make a
mess of that. Perhaps you don't really want "decorators" for that ---
perhaps you want "macros." Subtle but IMHO important distinction.
NB, I'm no type Nazi. But I'd really like to see (a) Python
implemented in Python, someday --- it would make playing with all these
sorts of languages ideas and moving the language along a LOT easier,
and (b) Python compiling easily to (and running well on) arbitrary
machines or virtual machines. The more runtime / imperative /
conditional / side-effecting behavior we allow for decorators, the more
difficult both of those goals become.
Not trying (heroically or otherwise) to keep language features from
being abused as much as simply ask the question "have we REALLY thought
through the use cases, the alternatives, and their impact on the future
of the language."
More information about the Python-Dev