(cons 'CLISP '(and SDRAW))

vom 10. August 2007

Ich habe vor ein paar Tagen angefangen, Common Lisp zu lernen. Als Einstieg lese ich zur Zeit das Buch "A Gentle Introduction to Symbolic Computation" von David S. Touretzky. Das Buch wird leider nicht mehr gedruckt, aber man kann es als eBook herunterladen.

lambda

Mittlerweile auf Seite 177 angekommen, werden neue (makro)-Funktionen für Listenmanipulation vorgestellt. Um dies noch zu vereinfachen, hat Touretzky ein kleines Lisp-Programm geschrieben, mit dem man die internen Vorgänge beim Evaluieren grafisch als "Zellen-Diagramm" anzeigen lassen kann.

Das Programm muss nur compiliert werden, danach kann mit einem Aufruf von (sdraw <beliebige Listenformation>) die ASCII-Grafik erzeugt werden. Es gibt auch einen interaktiven Modus mit (sdraw-loop):

 S> (list '(a b) 'c)
[*|*]------------------>[*|*]--->NIL
 |                       |
 v                       v
[*|*]--->[*|*]--->NIL    C
 |        |
 v        v
 A        B

Result:  ((A B) C)

Das Programm ist verdammt praktisch zum Verstehen der Vorgänge; Wieso zum Beispiel (append '(a b) 'c) zu (A B . C) und nicht zu (A B C) wird:

S> (append '(a b) 'c)
[*|*]--->[*|*]--->C
 |        |
 v        v
 A        B

Result:  (A B . C)

delicious bookmark del.icio.us, Ich habe vor ein paar Tagen angefangen, Common Lisp zu lernen. Als Einstieg lese ich zur Zeit das Buch "A Gentle Introduction to Symbolic Computation" von


Kommentar schreiben