Add all course examples and tutorials
[TD_LISP.git] / course / lists.lsp
diff --git a/course/lists.lsp b/course/lists.lsp
new file mode 100755 (executable)
index 0000000..273dee0
--- /dev/null
@@ -0,0 +1,45 @@
+#!/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))
+
+(println (length L))
+
+type list ::= empty-list | first * list
+
+(setq x 1)
+(println (+ x 1))
+
+(set 'x 1 'y 2)
+(let ((x 3) (y 4))
+  (println x)
+  (println (list x y)))
+(println "x="x" y="y)
+
+(setq x 3 y 4)
+(let ((x 1) (y 2))
+  (println "x="x" y="y))
+(println "x="x" y="y)
+
+(setq x 3 y 4)
+(let ((y 2))
+  (setq x 5 y 6)
+  (println "x="x" y="y))
+(println "x="x" y="y)
+
+(exit)