Closed jeapostrophe closed 2 months ago
Another thing worth looking at is the Parinfer editor extension, and its line invariant for converting between indentation and paren structure in both directions.
Also @shriram's http://shriram.github.io/p4p/
The Mathematica language is a language that uses a non s-expression syntax, but nevertheless feels lispy to use. An application of a function f to arguments x and y is written f[x,y]. This decision makes it easy to use parenthesis for grouping. Using FullForm, TraditionalForm, StandForm and InputForm one can convert between representations of an expression. The full form resembles s-expressions using {} for lists and F[x,y] for applications.
For a taste of this syntax in Racket: https://docs.racket-lang.org/infix-manual/index.html
The tutorial for Mathematica syntax : https://reference.wolfram.com/language/tutorial/TheSyntaxOfTheWolframLanguage.html
Complete (?) overview of Mathematica syntax: https://reference.wolfram.com/language/guide/Syntax.html
@lexi-lambda's Hackett has an infix syntax: https://github.com/lexi-lambda/hackett/blob/8e4e0e904ac37df58b8c8ef29c0f94ad4151246f/hackett-doc/scribblings/hackett/guide.scrbl#L251 (Link to the Scribble source because the docs seem to be down.)
The Arc Forum collected a list here a while back: https://sites.google.com/site/arclanguagewiki/more/list-of-languages-with-s-expression-sugar
Another related vein of prior art, which you're no doubt aware of: The idea of "language-oriented programming," especially combined with Python-ish syntax, is something I associate with language workbenches.
The papers D-Expressions: Lisp Power, Dylan Style and The Java Syntactic Extender from 1999 and 2001, respectively, describe procedural macro systems designed for the Dylan and Java programming languages. Both use a technique very similar to Honu, albeit without the enforestation step that allows programmers to define infix macros.
Mentioned on the mailing list: https://elixir-lang.org/
The Julia language is quite lispy and I believe achieves this in part with a ~Scheme dialect called femtolisp:
I don’t know if it’s germane, but some languages have gone the other way—implementing an S-expr surface language atop another language:
Rebol/RED was mentioned somewhere I was reading recently.
Probably! Thanks.
Here is a quite big list: History of alternative syntaxes for Lisp
I just found this subreddit that has many examples, some of which are already on the list: https://www.reddit.com/r/whitespaceLisp/
I was working on this half-designed language when I discovered racket meets 90% of the design goals I had in mind. https://github.com/Lazerbeak12345/chaml
Not as macro friendly as it could be, and java with xml middle-languages was a poor choice for implementation. (keep in mind I knew nothing of lisp whatsoever at the time, aside from it's history)
In retrospect, it's pretty clunky. I actually haven't looked at it for 2 years.
Sweet Wisp http://breuleux.net/blog/liso.html Honu Remix and many many more