[Python-ideas] Alternative to PEP 532: delayed evaluation of expressions
Matthias Bussonnier
bussonniermatthias at gmail.com
Mon Nov 7 00:12:52 EST 2016
On Sun, Nov 6, 2016 at 5:32 PM, Nathaniel Smith <njs at pobox.com> wrote:
>
> If we're considering options along these lines, then I think the local
> optimum is actually a "quoted-call" operator, rather than a quote
> operator. So something like (borrowing Rust's "!"):
>
> eval_else!(foo.bar, some_func())
>
> being sugar for
>
> eval_else.__macrocall__(<unevaluated thunk of foo.bar>,
> <unevaluated thunk of some_func()>)
>
> You can trivially use this to recover a classic quote operator if you
> really want one:
>
> def quote!(arg):
> return arg
>
Xonsh does it:
http://xon.sh/tutorial_macros.html
At least for "function" call, and make use of Python type annotations
to decide whether to expand the expression or not, or passing, string,
Ast, to the defined macro.
I haven't tried it in a while but there were some ideas floating
around for context-manager as well, to get the block they wrap.
--
M
More information about the Python-ideas
mailing list