diff options
| author | 2020-10-18 15:22:11 +0300 | |
|---|---|---|
| committer | 2020-10-18 15:22:11 +0300 | |
| commit | e7216cd3dda030cbff59d6e0106c6dc04b388e6e (patch) | |
| tree | b7596a6596f00af9bd88214cc895abf8d21e361e /plist-impl.scm | |
| parent | tests against externals; registration; alist and plist implementations: (diff) | |
add srfi69 impl
Diffstat (limited to 'plist-impl.scm')
| -rw-r--r-- | plist-impl.scm | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/plist-impl.scm b/plist-impl.scm index 8fa41a1..f7f0571 100644 --- a/plist-impl.scm +++ b/plist-impl.scm @@ -1,11 +1,11 @@ -(define (make-plist-impl) +(define (register-plist!) - (define (plist? vec l) + (define (plist? l) (and (list? l) (not (null? l)) (symbol? (car l)))) - (define (plist-map! vec proc plist) + (define (plist-map! proc plist) (let loop ((pl plist)) (cond ((null? pl) plist) @@ -18,7 +18,7 @@ (proc key value)) (loop rest)))))) - (define (plist-filter! vec pred plist) + (define (plist-filter! pred plist) (define head (cons #f plist)) (let loop ((pl plist) (parent-cell head)) @@ -49,7 +49,7 @@ ((equal? key (car plist)) head) (else (find-plist-entry key (cdr plist))))) - (define (plist-search! vec plist key failure success) + (define (plist-search! plist key failure success) (define plist-head (cons #t plist)) (define (handle-success head) (define key-cell (cdr head)) @@ -74,7 +74,7 @@ ((find-plist-entry key plist-head) => handle-success) (else (handle-failure)))) - (define (plist-size vec plist) + (define (plist-size plist) (define keys (let loop ((pl plist) (keys '())) @@ -87,19 +87,17 @@ (define key-set (fold fold-proc '() keys)) (length key-set)) - (define (plist-foreach vec proc plist) + (define (plist-foreach proc plist) (let loop ((pl plist)) (if (null? pl) #t (begin (proc (car pl) (cadr pl)) (loop (cddr pl)))))) - - (define vec (vector-copy model-vec)) - (vector-set! vec d? plist?) - (vector-set! vec dmap! plist-map!) - (vector-set! vec dfilter! plist-filter!) - (vector-set! vec dsearch! plist-search!) - (vector-set! vec dsize plist-size) - (vector-set! vec dfor-each plist-foreach) - - vec) + + (register-dictionary! + 'dictionary? plist? + 'dict-map! plist-map! + 'dict-filter! plist-filter! + 'dict-search! plist-search! + 'dict-size plist-size + 'dict-for-each plist-foreach)) |
