Skip to main content


Explanation-Free Education Examples



Image/Photo
d45b99bbdc2529ac1314.png

I re-visited some ideas for explanation-free entry into programming.

I'm not sure if I was able put the pdf on MediaGoblin or not.[1] So I put a screenshot up here. A few years ago I started working on sequences of lisp examples, they will turn up eventually. I have to compare the sequences with what happens in English Through Pictures and find the right parallels or analogies to find the same patterns or symmetries...

Maybe working with lambda and recursion, (maybe even mapcar sorts of expressions too) can serve as the sort of brain training that these pages serve as for beginning ESL learners.
991


#+TITLE: Scheme Through Examples 
#+STARTUP: showall 
#+OPTIONS: toc:nil num:nil timestamp:nil 
#+HTML_HEAD: <style> @page { size: 210mm 297mm; margin: 4mm; margin-bottom: 6mm; } </style> 
#+HTML_HEAD: <style> h1.title { display: none; }  </style> 
#+HTML_HEAD: <style> h1, h2, h3, h4 { font-weight: 500; font-size: 1.2em; }  </style> 
#+HTML_HEAD: <style> div#postamble { display: none; }  </style> 


#+HTML_HEAD: <style> h2 {display: none}   </style> 
#+HTML_HEAD: <style> div.outline-2 {  width: 49%; float:left; border: thin dotted grey; }   </style> 
#+HTML_HEAD: <style> pre.src-scheme, pre.example { box-shadow:none; border:none;}   </style> 
#+HTML_HEAD: <style> pre.src-scheme { font-size: 1.2em; }   </style> 
#+HTML_HEAD: <style> pre.example { font-size: .8em; color: grey; }   </style> 

#+HTML_HEAD: <style> table { border: none; border-color: white; font-size: .8em; color: grey; }   </style> 


** Prep :noexport: 
#+name: prep 
#+BEGIN_SRC emacs-lisp :exports none 
(setf geiser-default-implementation 'racket) 
;; guile (gnu movement)  guache (Japanese developer, like Matz?) 
(setf org-confirm-babel-evaluate  
#+END_SRC 
#+RESULTS: prep 

#+name: KeyboardMacros 
#+BEGIN_SRC emacs-lisp 
;; CxCkH inserts header lines for for Scheme Through Examples src block 
(set-register ?l "  scheme :session scheme-STE :exports both") 
(fset 'org-insert-named-scheme-src-block 
   (lambda (&optional arg) "Keyboard macro." (interactive "p") (kmacro-exec-ring-item (quote ([24 114 105 110 5 return 60 115 tab 24 114 105 108 backspace 16] 0 "%d")) arg))) 
(global-set-key [24 11 72] 'org-insert-named-scheme-src-block) 


;; CxCkS prepares a css style line for org-file header 
(set-register ?S "#+HTML_HEAD: <style> ") 
(set-register ?/ "  </style>") 
(fset 'org-insert-html-header-style 
   (lambda (&optional arg) "Keyboard macro." (interactive "p") (kmacro-exec-ring-item (quote ("�riS� �ri/�" 0 "%d")) arg))) 
(global-set-key [24 11 83] 'org-insert-html-header-style) 
#+END_SRC 

** One number 
#+name: one 
#+BEGIN_SRC scheme :session scheme-STE :exports both 
1 
#+END_SRC 

#+RESULTS: one 
: 1 


** quote s 
#+name: s 
#+BEGIN_SRC scheme :session scheme-STE :exports both 
's 
#+END_SRC 

#+RESULTS: s 
: s 

** Two number 
#+name: Two 
#+BEGIN_SRC scheme :session scheme-STE  :exports both 
'23 
#+END_SRC 

#+RESULTS: Two 
: 23 

** Quote List  
#+name: list 
#+BEGIN_SRC scheme :session scheme-STE :exports both 
'list 
#+END_SRC 

#+RESULTS: list 
: list 

** plus 
#+name: plus  
#+BEGIN_SRC scheme :session scheme-STE :exports both 
(+ 1 2) 
#+END_SRC 

#+RESULTS: plus 
: 3 

** plus many 
#+name: plus-many 
#+BEGIN_SRC scheme :session scheme-STE :exports both 
(+ 0 1 2 3 5 8 13) 
#+END_SRC 

#+RESULTS: plus-many 
: 32 

** times many 
#+name: times-many 
#+BEGIN_SRC scheme :session scheme-STE :exports both 
(\* 1 2 3 4 5 6 7) 
#+END_SRC 

#+RESULTS: times-many 
: 5040 

** sqrt 
#+name: sqrt 
#+BEGIN_SRC scheme :session scheme-STE :exports both 
(sqrt 16) 
#+END_SRC 

#+RESULTS: sqrt 
: 4 

** Quote (list) 
#+name: quote(list) 
#+BEGIN_SRC scheme :session scheme-STE :exports both 
(quote (1 s 23 list)) 
#+END_SRC 


#+HTML_ATTR: :border 0 :rules none 
#+RESULTS: quote 
| 1 | s | 23 | list | 

** list list 
#+name: list-list 
#+BEGIN_SRC scheme :session scheme-STE :exports both 
(list 1 's 23 'list) 
#+END_SRC 

#+RESULTS: list-list 
| 1 | s | 23 | list | 

** cons car list 
#+name: cons-car-list 
#+BEGIN_SRC scheme :session scheme-STE :exports both 
(cons 'car (list 1 's 23 'list)) 
#+END_SRC 

#+RESULTS: cons-car-list 
| car | 1 | s | 23 | list | 

** car list 
#+name: car-list 
#+BEGIN_SRC scheme :session scheme-STE :exports both 
(car '(car 1 s 23 list)) 
#+END_SRC 

#+RESULTS: car-list 
: car 

** cons cons car cdr 
#+name: cons-cons-car-cdr 
#+BEGIN_SRC scheme :session scheme-STE :exports both 
(cons 'car (cons 'cdr '(1 s 23 list))) 
#+END_SRC 

#+RESULTS: cons-cons-car-cdr 
| car | cdr | 1 | s | 23 | list | 

** cdr list 
#+name: cdr-list 
#+BEGIN_SRC scheme :session scheme-STE :exports both  
(cdr '(car cdr 1 s 23 list)) 
#+END_SRC 

#+RESULTS: cdr-list 
| cdr | 1 | s | 23 | list |