IMO Python really needs this. Working in a language without syntatic macros is such a downgrade, and there's been a number of syntax features added to the language over the years that IMO should have just been macros.
> The f-string `f"..."` could be implemented as macro as `f!("...")`. Not quite as nice to read, but would still be useful for experimenting with.
In julia, we have a rule where a macro whose name ends with `_str` is usable as a "string macro" and it receives the input string in its raw form, and then any string macro is usable by just prefixing the name at the beginning of the string.
An example is that our regex string literal implementation is literally just
macro r_str(s)
Regex(s)
end
which allows for easy compile-time regex generation. With that you can simply write e.g. `r"^[ \t]+|[ \t]+$"` which is the same as `@r_str("^[ \t]+|[ \t]+$")`, e.g.
> Python is now sufficiently powerful and complex, that many proposed additions are a net loss for the language due to the additional complexity. […] Python was once described as “Python Fits Your Brain”, but that becomes less and less true as more and more features are added.
Looks like this was written in 2020, but IMO Python crossed the “fits in your brain” (or at least my brain!) threshold years earlier. Nowadays, are there any popular languages that could be described that way? Maybe Go? Or Lua?
Pascal, maybe. It's straightforward, capable, easy to read. You see people popping up here on HN periodically with these super light-weight, fast apps written in Delphi or Free Pascal (or Oxygene, the one I've been using lately.)
Yeah, that was rather puzzling. Hopefully if this proposal garners any interest, some people with actual experience with dealing with macro hygiene issues can help fix that.
Can someone explain this in simpler terms? I think I'm quite proficient in Python for a sysadmin, but I don't understand a single statement in the PEP.
IMO Python really needs this. Working in a language without syntatic macros is such a downgrade, and there's been a number of syntax features added to the language over the years that IMO should have just been macros.
> The f-string `f"..."` could be implemented as macro as `f!("...")`. Not quite as nice to read, but would still be useful for experimenting with.
In julia, we have a rule where a macro whose name ends with `_str` is usable as a "string macro" and it receives the input string in its raw form, and then any string macro is usable by just prefixing the name at the beginning of the string.
An example is that our regex string literal implementation is literally just
which allows for easy compile-time regex generation. With that you can simply write e.g. `r"^[ \t]+|[ \t]+$"` which is the same as `@r_str("^[ \t]+|[ \t]+$")`, e.g. So using this rule, Python's f-strings could just be re-implemented as a string macro.https://docs.julialang.org/en/v1/manual/metaprogramming/#met...
No
> Python is now sufficiently powerful and complex, that many proposed additions are a net loss for the language due to the additional complexity. […] Python was once described as “Python Fits Your Brain”, but that becomes less and less true as more and more features are added.
Looks like this was written in 2020, but IMO Python crossed the “fits in your brain” (or at least my brain!) threshold years earlier. Nowadays, are there any popular languages that could be described that way? Maybe Go? Or Lua?
Pascal, maybe. It's straightforward, capable, easy to read. You see people popping up here on HN periodically with these super light-weight, fast apps written in Delphi or Free Pascal (or Oxygene, the one I've been using lately.)
So they managed to make up a variable "hygiene" system that is even less useful than gensym from common lisp...
Yeah, that was rather puzzling. Hopefully if this proposal garners any interest, some people with actual experience with dealing with macro hygiene issues can help fix that.
Can someone explain this in simpler terms? I think I'm quite proficient in Python for a sysadmin, but I don't understand a single statement in the PEP.