(define (lay:list:any p lst) (let loop ((lst lst)) (cond ((null? lst) #f) ((p (car lst)) #t) (else (loop (cdr lst)))))) (define (lay:list:all p lst) (let loop ((lst lst)) (cond ((null? lst) #t) ((not (p (car lst))) #f) (else (loop (cdr lst)))))) (define (lay:list:tabulate n proc) (let loop ((i 1) (res '())) (cond ((> i n) res) (else (loop (add1 i) (cons (proc) res)))))) (define (lay:list:filter proc lst) (foldl (lambda (zero elem) (if (proc elem) (cons elem zero) zero)) '() lst)) (define (lay:list:filter-map proc lst) (foldl (lambda (zero elem) (let ((out (proc elem))) (if out (cons out zero) zero))) '() lst))