rhombus-prototype
rhombus-prototype copied to clipboard
Gather literature review
Sweet Wisp http://breuleux.net/blog/liso.html Honu Remix and many many more
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/
https://www.pyret.org/docs/latest/
https://github.com/tonyg/racket-something https://groups.google.com/d/msg/racket-users/0WyNzafwPCA/jdn4ZqrLCQAJ
The Julia language is quite lispy and I believe achieves this in part with a ~Scheme dialect called femtolisp:
- https://github.com/femtolisp
- https://www.julialang.org/
- https://docs.julialang.org/en/v1/manual/metaprogramming/index.html
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:
- Erlang / LFE: http://lfe.io/
- Python / Hy: http://docs.hylang.org/en/stable/
Rebol/RED was mentioned somewhere I was reading recently.
Here? https://news.ycombinator.com/item?id=21134929
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.