Factored library, implemented make-continuation.
[scheme.forth.jl.git] / src / scheme-library-1-essential.scm
diff --git a/src/scheme-library-1-essential.scm b/src/scheme-library-1-essential.scm
new file mode 100644 (file)
index 0000000..ded8412
--- /dev/null
@@ -0,0 +1,26 @@
+;; MISC ESSENTIAL PROCEDURES
+
+(define list
+  (lambda args args))
+
+(define map
+  (lambda (proc l)
+    (if (null? l)
+        '()
+        (cons (proc (car l)) (map proc (cdr l))))))
+
+(define join-lists
+  (lambda (l1 l2)
+    (if (null? l1)
+      l2
+      (cons (car l1) (join-lists (cdr l1) l2)))))
+
+; Append an arbitrary number of lists together
+(define append
+  (lambda lists
+  (if (null? lists)
+    ()
+    (if (null? (cdr lists))
+      (car lists)
+      (join-lists (car lists) (apply append (cdr lists)))))))
+