summaryrefslogtreecommitdiff
path: root/ice-9/lists.scm
diff options
context:
space:
mode:
Diffstat (limited to 'ice-9/lists.scm')
-rw-r--r--ice-9/lists.scm23
1 files changed, 23 insertions, 0 deletions
diff --git a/ice-9/lists.scm b/ice-9/lists.scm
new file mode 100644
index 000000000..654bab60e
--- /dev/null
+++ b/ice-9/lists.scm
@@ -0,0 +1,23 @@
+;;; {Lists}
+;;;
+(module (ice-9 lists)
+ (open (ice-9 guile))
+ (export list-index make-list))
+
+(define (list-index l k)
+ (let loop ((n 0)
+ (l l))
+ (and (not (null? l))
+ (if (eq? (car l) k)
+ n
+ (loop (+ n 1) (cdr l))))))
+
+(define (make-list n . init)
+ (if (pair? init) (set! init (car init)))
+ (let loop ((answer '())
+ (n n))
+ (if (<= n 0)
+ answer
+ (loop (cons init answer) (- n 1)))))
+
+