LISP
Table of Contents
1. obligatory polemics
- resurrection
- hows
- whys
- How to resuscitate LISP?
- Why lisp machines
2. miscellanea
- L-99: Ninety-Nine Lisp Problems
http://www.ic.unicamp.br/~meidanis/courses/mc336/problemas-lisp/L-99_Ninety-Nine_Lisp_Problems.html
- Lisp: Common Lisp, Racket, Clojure, Emacs Lisp: http://hyperpolyglot.org/lisp
- Adventures in Advanced Symbolic Programming
3. loop decreasing
(loop for x from 3 downto 1 do (print x))
3
2
1
5. structs
(defstruct lemma meaning singular plural) (lemma-meaning (read-from-string (prin1-to-string (make-lemma :meaning "ἵππος" :singular "horse" :plural "horses"))))
6. persistence
submarine
https://quickref.common-lisp.net/submarine.htmlPLOB
(very unmantained)
http://plob.sourceforge.net/- used with
cl-http
, which had a distribution even to Lmachines!
https://web.archive.org/web/19990302100602/http://www.ai.mit.edu/projects/iiip/doc/cl-http/#lispm
- used with
elephant
https://common-lisp.net/project/elephant/spelo
stupid persistence of emacs lisp objects
(I like stupid things, they are usually easy to understand.) https://github.com/thblt/spelo
7. graphviz
(s-dot:s-dot->dot t '(:graph ((:rankdir "LR")) (:node ((:id "a") (:label ":node1") (:fontsize "9") (:fontname "Arial"))) (:node ((:id "b") (:label ":node2") (:fontsize "9") (:fontname "Arial"))) (:node ((:id "c") (:label ":node3") (:fontsize "9") (:fontname "Arial"))) (:node ((:id "d") (:label ":node4") (:fontsize "9") (:fontname "Arial"))) (:edge ((:from "a") (:to "b") (:fontname "Arial") (:fontsize "9") (:label "edge1"))) (:edge ((:from "a") (:to "c") (:fontname "Arial") (:fontsize "9") (:label "edge2"))) (:edge ((:from "b") (:to "c") (:fontname "Arial") (:fontsize "9") (:label "edge3"))) (:edge ((:from "b") (:to "d") (:fontname "Arial") (:fontsize "9") (:label "edge4"))) (:edge ((:from "c") (:to "d") (:fontname "Arial") (:fontsize "9") (:label "edge5")))))
Result:
digraph g {compound="true"; bgcolor=""; fontcolor=""; fontname=""; fontsize=""; label=""; margin=""; nodesep=""; rankdir="LR"; ranksep=""; ratio=""; size=""; node[label=":node1", color="", fillcolor="", fixedsize="", fontcolor="", fontname="Arial", fontsize="9", height="", shape="", style="", width="", ] {"a"}; node[label=":node2", color="", fillcolor="", fixedsize="", fontcolor="", fontname="Arial", fontsize="9", height="", shape="", style="", width="", ] {"b"}; node[label=":node3", color="", fillcolor="", fixedsize="", fontcolor="", fontname="Arial", fontsize="9", height="", shape="", style="", width="", ] {"c"}; node[label=":node4", color="", fillcolor="", fixedsize="", fontcolor="", fontname="Arial", fontsize="9", height="", shape="", style="", width="", ] {"d"}; edge[arrowhead="", arrowsize="", arrowtail="", color="", constraint="", decorate="", dir="", fontcolor="", fontname="Arial", fontsize="9", headlabel="", headport="", label="edge1", labeldistance="", labelfloat="", labelfontcolor="", labelfontname="", labelfontsize="", minlen="", style="", samehead="", sametail="", taillabel="", tailport="", lhead="", ltail=""]"a" -> "b"; edge[arrowhead="", arrowsize="", arrowtail="", color="", constraint="", decorate="", dir="", fontcolor="", fontname="Arial", fontsize="9", headlabel="", headport="", label="edge2", labeldistance="", labelfloat="", labelfontcolor="", labelfontname="", labelfontsize="", minlen="", style="", samehead="", sametail="", taillabel="", tailport="", lhead="", ltail=""]"a" -> "c"; edge[arrowhead="", arrowsize="", arrowtail="", color="", constraint="", decorate="", dir="", fontcolor="", fontname="Arial", fontsize="9", headlabel="", headport="", label="edge3", labeldistance="", labelfloat="", labelfontcolor="", labelfontname="", labelfontsize="", minlen="", style="", samehead="", sametail="", taillabel="", tailport="", lhead="", ltail=""]"b" -> "c"; edge[arrowhead="", arrowsize="", arrowtail="", color="", constraint="", decorate="", dir="", fontcolor="", fontname="Arial", fontsize="9", headlabel="", headport="", label="edge4", labeldistance="", labelfloat="", labelfontcolor="", labelfontname="", labelfontsize="", minlen="", style="", samehead="", sametail="", taillabel="", tailport="", lhead="", ltail=""]"b" -> "d"; edge[arrowhead="", arrowsize="", arrowtail="", color="", constraint="", decorate="", dir="", fontcolor="", fontname="Arial", fontsize="9", headlabel="", headport="", label="edge5", labeldistance="", labelfloat="", labelfontcolor="", labelfontname="", labelfontsize="", minlen="", style="", samehead="", sametail="", taillabel="", tailport="", lhead="", ltail=""]"c" -> "d"; }
Still needs to be parsed by graphviz.