diff options
Diffstat (limited to 'ice-9/lists.scm')
-rw-r--r-- | ice-9/lists.scm | 23 |
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))))) + + |