#+title: Why Wisp?
#+options: num:nil toc:nil
# Export as s5 presentation. See http://orgmode.org/worg/org-tutorials/non-beamer-presentations.html
#+BEGIN_SRC elisp :exports none
(require 'ox-s5)
#+END_SRC
* Elegance
#+html: <br />
** *.,":'_#?!;*
/The most common non-letter, non-math characters in prose/
** *()*
/The most common paired characters/
(From letter distributions in newspapers)
* On Words
#+BEGIN_SRC elisp :exports results :results results raw
(defun shuffle-wordcontent (string)
(interactive)
(let ((strings (split-string string)))
(substring
(apply 'concat
(loop for s in strings
collect (if (< (length s) 4)
(concat s " ")
(concat (substring s 0 1)
(apply 'concat
(mapcar 'string
(shuffle-vector
(string-to-vector
(substring s 1 -1)))))
(substring s -1)
" "))))
0 -1)))
(concat "*" (setq why-wisp-text-scheme-has (shuffle-wordcontent "Scheme follows a minimalist design philosophy")) "*")
#+END_SRC
#+RESULTS:
*Shcmee fowlols a malisimint dsegin plhpoihosy*
- /Defocus a bit/
- /Can you see the meaning?/
* Scheme for Newcomers
#+BEGIN_SRC elisp :exports results :results results raw
(concat "*€" (combine-and-quote-strings (split-string why-wisp-text-scheme-has) " €") (apply 'concat (loop for word in (split-string why-wisp-text-scheme-has) collect "¥") ) "*")
#+END_SRC
#+RESULTS:
*€Shcmee €fowlols €a €malisimint €dsegin €plhpoihosy¥¥¥¥¥¥*
- /Try it again/
- /Do you see how much harder it got?/
- /€ and ¥ escape your existing filters/
* Summary
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.
Any fix for elegance 2 should preserve elegance 1.
Elegance 0: generality and homoiconicity: *code is data*.
* On Wisp
#+html: <br />
#+BEGIN_SRC scheme
define : hello
display "Hello Schemers!\n"
#+END_SRC
becomes
#+BEGIN_SRC scheme
(define (hello)
(display "Hello Schemers!\n"))
#+END_SRC
* Why not SRFI-49 (Indentation-sensitive syntax)?
** Scheme
#+BEGIN_SRC scheme
(+ 5
(* 4 3)
2 1 0)
#+END_SRC
** SRRFI-49 (Indentation-sensitive syntax)
#+BEGIN_SRC scheme
+ 5
* 4 3
2
1
0
#+END_SRC
* Continuing the argument list in wisp
#+BEGIN_SRC scheme
+ 5
* 4 3
. 2 1 0
#+END_SRC
/Complete representation of arbitrary structures/
* Why no SRFI-110 (Sweet-expressions (t-expressions))
#+BEGIN_SRC scheme
myfunction
x: \\ original-x
y: \\ calculate-y original-y
#+END_SRC
#+BEGIN_SRC scheme
a b $ c d e $ f g
#+END_SRC
#+BEGIN_SRC scheme
let <* x getx() \\ y gety() *>
! {{x * x} + {y * y}}
#+END_SRC
/This breaks elegance 1/
/Also the problems of SRFI-49 are preserved/