Readable Lisp S-expressions Project

The goal of this “Readable Lisp s-expressions” project is to develop, implement, and gain widespread adoption of more readable format(s) for the S-expressions of Lisp-based languages (such as Common Lisp, Scheme, Emacs Lisp, and Arc). We’ve done this by creating new abbreviations that can be added to existing readers. Curly-infix-expressions add infix expressions (in a Lispy way): {a op b ...} maps to (op a b ...). Neoteric-expressions also add more traditional function call notation: f(...) maps to (f ...). Finally, sweet-expressions also add deducing parentheses from indentation. You can choose a subset (e.g., you can just add infix expressions without using indentation). Here’s an example:

(Awkward) S-expression (Improved) Sweet-expression (define (factorial n) (if (<= n 1) 1 (* n (factorial (- n 1))))) define factorial(n) if {n <= 1} 1 {n * factorial{n - 1}} When you program, you spend more time reading code than writing it... a language that makes source code ugly is maddening to an exacting programmer, as clay full of lumps would be to a sculptor. - Paul Graham

