top | item 47107069

(no title)

pmcgoron | 9 days ago

As someone who writes a lot of Scheme, I agree that the math syntax is not good. There have been proposals to add infix expressions (https://srfi.schemers.org/srfi-105/) but nobody seems to want them, or can agree on specifics.

However, code that is mostly function calls is fine for me, since those would have parentheses anyways in C++/Rust/whatever. In that case it makes the language more regular, which is nice for writing macros.

I'd be curious to hear your opinion on wisp (https://srfi.schemers.org/srfi-119/srfi-119.html) and the Readable project (https://srfi.schemers.org/srfi-110/srfi-110.html) which are significant indentation syntaxes for Lisp languages that are still closely related to the AST and allow for easy macro writing.

discuss

order

kazinator|9 days ago

Earlier last year, I "quietly" introduced an infix support macro into TXR Lisp.

I devised a well-crafted macro expansion hooking mechanism (public, documented) in support of it.

It works by creating a lexical contour in which infix expressions are recognized without being delimited in any way (no curly brace read syntax translating to a special representation or anything), and transformed to ordinary Lisp.

A translation of the FFT routine from Numerical Recipes in C appears among the infix test cases:

https://www.kylheku.com/cgit/txr/tree/tests/012/infix.tl?id=...

The entire body is wrapped in the (ifx ...) macro and then inside it you can do things like (while (x < 2) ...).

In completing this work, I have introduced an innovation to operator precedence parsing, the "Precedence Demotion Rule" which allows certain kinds of expressions to be written intuitively without parentheses.

Everything is documented in detail:

https://www.nongnu.org/txr/txr-manpage.html#N-BEB6083E

IshKebab|8 days ago

Wisp looks pretty good! I'd have to try it (or see longer examples) to know for sure but it's exactly the sort of thing I meant.