In Lisp, we use brackets to determine where an expression starts and ends. This looks weird and adds a lot of cluttering brackets. Can we get rid of them?
Suggestion: Each form has an arity (which can be *); the parser uses left-to-right parsing to determine where an expression starts and finishes.
+ is a 2-form, and numerics are values (1-form):
+ 2 2 # => (+ 2 2) + 2 + 2 2 # => (+ 2 (+ 2 2))
define is a 2-form, as is
define x 2 # => (define x 2) define add fn (a b) + a b # => (define add (fn (a b) (+ a b)))