(Arne Babenhauserheide)
2014-01-11: add syntax justification. add syntax justification.
diff --git a/docs/why-wisp.org b/docs/why-wisp.org --- a/docs/why-wisp.org +++ b/docs/why-wisp.org @@ -67,11 +67,11 @@ 1. Lisp uses the *most common* non-letter characters. 2. The *first and last characters* are important for text-recognition. -Let’s call these elegance 1 and elegance 2. +Let’s call these elegance 1 and elegance 2 -Any fix for elegance 2 should preserve elegance 1. +Any fix for elegance 2 should preserve elegance 1 -Elegance 0: generality and homoiconicity: *code is data*. +Elegance 0: generality and homoiconicity: *code is data* * On Wisp #+html: <br /> @@ -97,7 +97,7 @@ becomes 2 1 0) #+END_SRC -** SRRFI-49 (Indentation-sensitive syntax) +** SRFI-49 (Indentation-sensitive syntax) #+BEGIN_SRC scheme + 5 @@ -115,7 +115,9 @@ becomes . 2 1 0 #+END_SRC -/Complete representation of arbitrary structures/ +- Complete representation of arbitrary structures +- Generalize =(. x) ⇒ x= to =(. x ...) ⇒ x ...= +- Use =. . x= to get a real =. x= after processing * Why no SRFI-110 (Sweet-expressions (t-expressions)) @@ -137,3 +139,89 @@ myfunction /This breaks elegance 1/ /Also the problems of SRFI-49 are preserved/ + +* Wisp syntax 1/4: Indentation + +#+BEGIN_SRC scheme +display + + 3 4 5 +newline +#+END_SRC + +becomes + +#+BEGIN_SRC scheme +(display + (+ 3 4 5)) +(newline) +#+END_SRC + +* Wisp syntax 2/4: Continue Argument list + +#+BEGIN_SRC scheme ++ 5 + * 4 3 + . 2 1 +#+END_SRC + +becomes + +#+BEGIN_SRC scheme +(+ 5 + (* 4 3) + 2 1 +#+END_SRC + +* Wisp syntax 3/4: Double Parens + +#+BEGIN_SRC scheme +let + : x 1 + y 2 + z 3 + body +#+END_SRC + +becomes + +#+BEGIN_SRC scheme +(let + ((x 1) + (y 2) + (z 3)) + body) +#+END_SRC + +* Wisp syntax 4/4: Resilient Indentation + + +#+BEGIN_SRC scheme +let +_ : x 1 +__ y 2 +__ z 3 +_ body +#+END_SRC + +becomes + +#+BEGIN_SRC scheme +(let + ((x 1) + (y 2) + (z 3)) + body) +#+END_SRC + + +* Wisp syntax justification + +#+html: <small> +http://draketo.de/light/english/wisp-lisp-indentation-preprocessor#sec-4 +#+html: </small> + +/I do not like adding any unnecessary syntax element to lisp. So I want to show explicitely why the syntax elements are required to meet the goal of wisp: indentation-based lisp with a simple preprocessor./ + +- =.= Continue argument list +- =:= Double parens +- =_= Survive HTML