diff --git a/lib/srfi/srfi-1.scm b/lib/srfi/srfi-1.scm new file mode 100644 index 00000000..8bc8d838 --- /dev/null +++ b/lib/srfi/srfi-1.scm @@ -0,0 +1,15 @@ +(define (find pred lst) + (let loop ((lst lst)) + (if (null? lst) #f + (if (pred (car lst)) (car lst) + (loop (cdr lst)))))) + +(define (filter pred lst) + (let loop ((lst lst)) + (if (null? lst) '() + (if (pred (car lst)) + (cons (car lst) (loop (cdr lst))) + (loop (cdr lst)))))) + +(define (append-map f lst) + (apply append (map f lst)))