change dictionary interface

This commit is contained in:
Yuichi Nishiwaki 2014-09-08 20:49:28 +09:00
parent 8b9a3f513a
commit 1ac0ccb05e
3 changed files with 9 additions and 29 deletions

@ -1 +1 @@
Subproject commit 8c174cd505aa4fc3b7937819506423b39b405216 Subproject commit dd80aff03ab36fea0633e0e449c71fd489bc738a

View File

@ -441,8 +441,7 @@
dictionary-ref dictionary-ref
dictionary-set! dictionary-set!
dictionary-delete dictionary-delete
dictionary-size dictionary-size)
dictionary-for-each)
(export make-record (export make-record
record? record?

View File

@ -1,22 +1,6 @@
(define-library (picrin dictionary) (define-library (picrin dictionary)
(import (picrin base)) (import (picrin base))
(define (dictionary-map proc dict)
(let ((kvs '()))
(dictionary-for-each
(lambda (key val)
(set! kvs (cons (proc key val) kvs)))
dict)
(reverse kvs)))
(define (dictionary->plist dict)
(let ((kvs '()))
(dictionary-for-each
(lambda (key val)
(set! kvs (cons val (cons key kvs))))
dict)
(reverse kvs)))
(define (plist->dictionary plist) (define (plist->dictionary plist)
(let ((dict (make-dictionary))) (let ((dict (make-dictionary)))
(do ((kv plist (cddr kv))) (do ((kv plist (cddr kv)))
@ -24,12 +8,6 @@
dict) dict)
(dictionary-set! dict (car kv) (cadr kv))))) (dictionary-set! dict (car kv) (cadr kv)))))
(define (dictionary->alist dict)
(dictionary-map
(lambda (key val)
(cons key val))
dict))
(define (alist->dictionary alist) (define (alist->dictionary alist)
(let ((dict (make-dictionary))) (let ((dict (make-dictionary)))
(do ((kv alist (cdr kv))) (do ((kv alist (cdr kv)))
@ -40,9 +18,12 @@
(define (dictionary . plist) (define (dictionary . plist)
(plist->dictionary plist)) (plist->dictionary plist))
(export dictionary (export dictionary?
dictionary-map dictionary
dictionary->plist make-dictionary
dictionary-ref
dictionary-set!
dictionary-delete
dictionary-size
plist->dictionary plist->dictionary
dictionary->alist
alist->dictionary)) alist->dictionary))