summaryrefslogtreecommitdiffstats
path: root/plist-impl.scm
diff options
context:
space:
mode:
authorGravatar Arvydas Silanskas 2020-10-18 15:22:11 +0300
committerGravatar Arvydas Silanskas 2020-10-18 15:22:11 +0300
commite7216cd3dda030cbff59d6e0106c6dc04b388e6e (patch)
treeb7596a6596f00af9bd88214cc895abf8d21e361e /plist-impl.scm
parenttests against externals; registration; alist and plist implementations: (diff)
add srfi69 impl
Diffstat (limited to 'plist-impl.scm')
-rw-r--r--plist-impl.scm32
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))