From 71677d3e85b5640d2446461692ddc459ebfdaefc Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Sun, 13 Jul 2014 12:18:39 +0900 Subject: [PATCH] add dictionary.scm --- piclib/CMakeLists.txt | 1 + piclib/picrin/dictionary.scm | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 piclib/picrin/dictionary.scm diff --git a/piclib/CMakeLists.txt b/piclib/CMakeLists.txt index 497d8cd1..49f1c4b3 100644 --- a/piclib/CMakeLists.txt +++ b/piclib/CMakeLists.txt @@ -1,5 +1,6 @@ list(APPEND PICLIB_SCHEME_LIBS ${PROJECT_SOURCE_DIR}/piclib/built-in.scm + ${PROJECT_SOURCE_DIR}/piclib/picrin/dictionary.scm ${PROJECT_SOURCE_DIR}/piclib/srfi/1.scm ${PROJECT_SOURCE_DIR}/piclib/srfi/8.scm ${PROJECT_SOURCE_DIR}/piclib/srfi/26.scm diff --git a/piclib/picrin/dictionary.scm b/piclib/picrin/dictionary.scm new file mode 100644 index 00000000..ac23f8ab --- /dev/null +++ b/piclib/picrin/dictionary.scm @@ -0,0 +1,31 @@ +(define-library (picrin dictionary) + (import (scheme base)) + + (define (dictionary->plist dict) + (error "not implemented")) + + (define (plist->dictionary plist) + (let ((dict (make-dictionary))) + (do ((kv plist (cddr kv))) + ((null? kv) + dict) + (dictionary-set! dict (car kv) (cadr kv))))) + + (define (dictionary->alist dict) + (error "not implemented")) + + (define (alist->dictionary alist) + (let ((dict (make-dictionary))) + (do ((kv alist (cdr kv))) + ((null? kv) + dict) + (dictionary-set! dict (car kv) (cdr kv))))) + + (define (dictionary . plist) + (plist->dictionary plist)) + + (export dictionary + dictionary->plist + plist->dictionary + dictionary->alist + alist->dictionary))