;;; Utilities. ;;; ;;;;;;;;;;;;;;;; ;;; Versions of FOLD ;;; ;;;;;;;;;;;;;;;; (define fold (lambda (f init lst) (if (null? lst) init (fold f (f (car lst) init) (cdr lst))))) (define fold-vector (lambda (f init vec) (if (list? vec) ; Support MiniScheme (fold f init vec) (letrec ((loop (lambda (i val) (if (= i (vector-length vec)) val (loop (+ i 1) (f (vector-ref vec i) val)))))) (loop 0 init))))) ;;; ;;;;;;;;;;;;;;;;;;;; ;;; Misc. list functions ;;; ;;;;;;;;;;;;;;;;;;;; (define all (lambda (f lst) (cond ((null? lst) #t) ((not (f (car lst))) #f) (else (all f (cdr lst))))))