Add introduction to LISP and list manipulation in LISP code
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 24 Apr 2017 09:32:28 +0000 (11:32 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 24 Apr 2017 09:32:28 +0000 (11:32 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
introduction.lsp [new file with mode: 0755]
lists.lsp [new file with mode: 0755]

diff --git a/introduction.lsp b/introduction.lsp
new file mode 100755 (executable)
index 0000000..7e6a7c8
--- /dev/null
@@ -0,0 +1,52 @@
+#!/usr/bin/env newlisp
+
+(println "Hello World!")
+
+(println '(println "Hello World!"))
+
+(println (eval (quote (println "Hello World!"))))
+
+(if true (println "Hello") (println "Goodbye"))
+
+(set 'hello "Hello")
+(set 'world " World!")
+
+(println hello world)
+
+(println hello)
+(println world)
+
+(println (eval 'z))
+
+(set 'y 'x)
+(set y 1)
+(println "x="x)
+(println "y="y)
+
+(setq y 1)
+(println "y="y)
+
+(define y 2)
+(println "y="y)
+
+(set 'x 1 'y 2)
+(println "x="x)
+(println "y="y)
+
+(setq x 3 y 4)
+(println "x="x)
+(println "y="y)
+
+(println '((x 1) (y 2)))
+
+(println (first '(x 1)))
+(println (last '(x 1)))
+
+(println (first '((x 1) (y 2))))
+
+(println "assoc:")
+(println (assoc 'x '((x 1) (y 2) (x 3))))
+(println "lookup:")
+(println (lookup 'x '((x 1) (y 2) (x 3))))
+
+(exit)
diff --git a/lists.lsp b/lists.lsp
new file mode 100755 (executable)
index 0000000..e11271c
--- /dev/null
+++ b/lists.lsp
@@ -0,0 +1,21 @@
+#!/usr/bin/env newlisp
+
+(setq L '(1 2 3))
+(println (first L)) ; le premier élément
+(println (rest L)) ; la liste privée du premier élément
+(println (last L)) ; le dernier élément
+
+(println (rest '(1)))
+(println (rest '()))
+; return an error: empty list
+;(println (first '()))
+;(println (last '()))
+
+(define (list-length a-list)
+  (if a-list
+    (+ 1 (list-length (rest a-list)))
+    0))
+
+(println (list-length L))
+
+(exit)