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

More information:

[Problem] - [Solution] - [Tutorial] - [Download] - [Home] - [Git] - [Join]