News for hackers. Stuff that matters.
Re:Macropy: Syntactic Macros for Python by kbob on Sunday May 17, 2020 @09:44PM (#23217321)
Macropy transforms Python's AST. So it doesn't allow anything that Python can't parse.

I spent some time earlier this year looking at tapping into the Python compilation process before the AST is generated, in order to allow statements that are not legal Python syntax.

It's definitely possible using the `tokenize` module, but doing it right was turning into more work than the quick hack I wanted.

Re:Macropy: Syntactic Macros for Python by lihaoyi on Saturday May 16, 2020 @10:44AM (#23203774)
Author here, funny to see this up here again after so many years. Happy to answer questions
Re:Macropy: Syntactic Macros for Python by cjauvin on Saturday May 16, 2020 @10:56AM (#23203874)
I don't know much about macros and it revived my interest for this topic, thanks. I wonder if it could be used to embed SQL statements directly in Python code? (not sure it would be a good idea, but it would make for an interesting experiment maybe).
Re:Macropy: Syntactic Macros for Python by lihaoyi on Saturday May 16, 2020 @10:57AM (#23203891)
As implemented, we do not change the superficial python syntax. That has a number of advantages around compatibility, but it means embedding raw SQL outside string literals isn’t possible. We could do things like validating/transforming SQL strings at compile time, like what we do with string interpolators or pyxl strings
Re:Macropy: Syntactic Macros for Python by nubela on Saturday May 16, 2020 @09:46AM (#23203328)
Other than `@case`, are there other examples of macropy macros?? @case means nothing to me.
Re:Macropy: Syntactic Macros for Python by dhash on Saturday May 16, 2020 @10:51AM (#23203830)
Lihaoyi mostly authors scala libraries. I switched from python to scala and found many of the things that I love about scala ported to python with this library.

Case classes (pretty .toString, structural equality, .copy, and destructuring), Scala 3-esque enums, f-string interpolations before python added them, pattern matching, and _ based lambdas are the highlights for me.

Re:Macropy: Syntactic Macros for Python by lihaoyi on Saturday May 16, 2020 @10:37AM (#23203702)
The page has links to a dozen different examples, with code snippets and discussion of the motivations and potential use cases for each
Re:Macropy: Syntactic Macros for Python by sitkack on Saturday May 16, 2020 @12:12PM (#23204651)
Totally off topic, but I was wondering if you have looked at Coconut, a kind of ML Lite that compiles to Python? And if so, what do you think?

http://coconut-lang.org/

Are you still mainly programming in Scala? Do you see yourself programming in your current language in 5 years?

Re:Macropy: Syntactic Macros for Python by anentropic on Saturday May 16, 2020 @12:16PM (#23204702)
This project is great

Would love to see a new release on PyPI that works with Python > 3.4

;)

(last release seems to be "1.1b2" in 2018...)

Re:Macropy: Syntactic Macros for Python by carver on Saturday May 16, 2020 @10:18AM (#23203552)
Tail call optimization is appealing. Sometimes recursion is the cleanest implementation, but call depth is not known up front.
Re:Macropy: Syntactic Macros for Python by memco on Saturday May 16, 2020 @10:39AM (#23203723)
I’m having a hard time understanding what advantages @case has over data classes.
Re:Macropy: Syntactic Macros for Python by lihaoyi on Saturday May 16, 2020 @10:42AM (#23203757)
The main reason @case is an example macro is that data classes did not exist when this project was conceived
Re:Macropy: Syntactic Macros for Python by riazrizvi on Saturday May 16, 2020 @11:08AM (#23203977)
Very cool. Was this inspired by Hy?
Re:Macropy: Syntactic Macros for Python by lihaoyi on Saturday May 16, 2020 @11:19AM (#23204076)
Pretty sure we MacroPy predates Hy by about a year
Re:Macropy: Syntactic Macros for Python by tekacs on Saturday May 16, 2020 @02:22PM (#23205855)
Not unless there was an older repo that is now gone:

https://github.com/lihaoyi/macropy/graphs/contributors

https://github.com/hylang/hy/graphs/contributors

It looks like macropy started around 6 months after Hy, around a time when Hy had multiple contributors going.

Perhaps Hy hadn’t really been heard about yet.