Description
Alt-Exp is an alternate syntax for S-Expression languages, such as LISP, Scheme, and Racket. It allows the removal of many obviously-implied parenthesis, but it also has an obvious, direct correlation to the equivalent s-expression so it already works with existing libraries and even macros.
For example, consider the following comparisons.
(let ([a 1] [b 2] [c 3]) (+ a b c)) | let: :[a 1] [b 2] [c 3] +(a b c) | |
(define (what? thing) (match thing ["a" display("Thing A\n")] ["b" display("Thing B\n")] [else display("Unknown\n")])) | define: what?(thing) match(thing): ["a" display("Thing A\n")] ["b" display("Thing B\n")] [else display("Unknown\n")] | |
(define: (! n) (let loop ([ans 1] [n n]) (if (equal? n 0) ans (loop (* ans n) (n . - . 1))))) | define: !(n) let: loop :ans: 1 n: n if: {n equal? 0} ans loop({ans * n} {n - 1}) | |
((lambda (x) x) 1) | _(lambda: [x] x)(1) | |
((lambda (x) (x x)) (lambda (x) (x x))) | _(lambda: [x] x(x)) (lambda: [x] x(x)) |
The provided source code contains a reader and a "#lang" language for Racket. To use the language, you need to copy the alt-exp folder into the "collects" folder. There are also a few test examples showing how the language can be used.
Files
Source (.tgz) | 11 KB | alt-exp.tgz |
---|