diff options
| author | 2020-10-18 15:22:11 +0300 | |
|---|---|---|
| committer | 2020-10-18 15:22:11 +0300 | |
| commit | e7216cd3dda030cbff59d6e0106c6dc04b388e6e (patch) | |
| tree | b7596a6596f00af9bd88214cc895abf8d21e361e /alist-impl.scm | |
| parent | tests against externals; registration; alist and plist implementations: (diff) | |
add srfi69 impl
Diffstat (limited to 'alist-impl.scm')
| -rw-r--r-- | alist-impl.scm | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/alist-impl.scm b/alist-impl.scm index a77d74f..8f832dc 100644 --- a/alist-impl.scm +++ b/alist-impl.scm @@ -1,9 +1,9 @@ -(define (make-alist-impl) +(define (register-alist!) - (define (alist? vec l) + (define (alist? l) (and (list? l) (every pair? l))) - (define (alist-map! vec proc alist) + (define (alist-map! proc alist) (map (lambda (e) (define key (car e)) @@ -11,13 +11,13 @@ (cons key (proc key value))) alist)) - (define (alist-filter! vec pred alist) + (define (alist-filter! pred alist) (filter (lambda (e) (pred (car e) (cdr e))) alist)) - (define (alist-search! vec alist key failure success) + (define (alist-search! alist key failure success) (define (handle-success pair) (define old-key (car pair)) (define old-value (cdr pair)) @@ -49,29 +49,26 @@ ((assoc key alist) => handle-success) (else (handle-failure)))) - (define (alist-size vec alist) + (define (alist-size alist) (define keys (map car alist)) (define (fold-proc el set) (lset-adjoin equal? set el)) (define key-set (fold fold-proc '() keys)) (length key-set)) - (define (alist-foreach vec proc alist) + (define (alist-foreach proc alist) (define (proc* e) (proc (car e) (cdr e))) (for-each proc* alist)) - (define (alist->alist vec alist) + (define (alist->alist alist) alist) - - (define vec (vector-copy model-vec)) - (vector-set! vec d? alist?) - (vector-set! vec dmap! alist-map!) - (vector-set! vec dfilter! alist-filter!) - (vector-set! vec dsearch! alist-search!) - (vector-set! vec dsize alist-size) - (vector-set! vec dfor-each alist-foreach) - (vector-set! vec d->alist alist->alist) - - vec) + (register-dictionary! + 'dictionary? alist? + 'dict-map! alist-map! + 'dict-filter! alist-filter! + 'dict-search! alist-search! + 'dict-size alist-size + 'dict-for-each alist-foreach + 'dict->alist alist->alist)) |
