diff options
| author | 2024-09-04 02:16:10 -0400 | |
|---|---|---|
| committer | 2024-09-04 02:16:10 -0400 | |
| commit | c510054119dfe97c6e265f4ba8f3dd8c98f0edd8 (patch) | |
| tree | 8f2f9ff7d11e9bfa35e86106a3252a4cac902dd9 /util.scm | |
| parent | set:refactor maps (diff) | |
trie: add with test
Diffstat (limited to 'util.scm')
| -rw-r--r-- | util.scm | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/util.scm b/util.scm new file mode 100644 index 0000000..fa361f7 --- /dev/null +++ b/util.scm @@ -0,0 +1,35 @@ +;;; 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)))))) + |
