from macropy.d import macros, d
person3 = d(name, age, version=3)
> {"name": "Bob", "age": 24, version: 3}
Implementation
This was a bit of a pain to implement without MacroPy, since the Python call stack doesn't include the expressions passed, and inspect is slow.
Even with MacroPy, without forking the project I'd need to use a lookup and a slice, a la
d[dict(name, age, version=3)]
# or, and I thought this was clever
d[ct(name, age, version=3)]
I showed d[ct to an unbiased python programmer and they said versions 1/2 looked way cleaner and they'd probably not use it. Fair enough. So I needed to make d(...) work directly.
I ended up needing to fork and slightly modify MacroPy to support changing the syntax tree to support function calls. Hopefully this is an acceptable addition.
Adding support for CoffeeScript/ES6-style dictionaries in python.
Example & Explanation
But in CoffeeScript, you can just do
The feature is known as the Object Literal Property Value Shorthand, and is coming to Javascript as of ES6
Now you can use it in python, too, with MacroPy.
Implementation
This was a bit of a pain to implement without MacroPy, since the Python call stack doesn't include the expressions passed, and
inspect
is slow.Even with MacroPy, without forking the project I'd need to use a lookup and a slice, a la
I showed
d[ct
to an unbiased python programmer and they said versions 1/2 looked way cleaner and they'd probably not use it. Fair enough. So I needed to make d(...) work directly.I ended up needing to fork and slightly modify MacroPy to support changing the syntax tree to support function calls. Hopefully this is an acceptable addition.