From 75138db4db98a545c71c95cf64e3224583a12652 Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Thu, 7 Aug 2014 11:47:23 +0900 Subject: [PATCH] add define-record-writer --- piclib/CMakeLists.txt | 1 + piclib/picrin/record.scm | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 piclib/picrin/record.scm diff --git a/piclib/CMakeLists.txt b/piclib/CMakeLists.txt index 87dd693f..43d5ab4a 100644 --- a/piclib/CMakeLists.txt +++ b/piclib/CMakeLists.txt @@ -6,6 +6,7 @@ list(APPEND PICLIB_SCHEME_LIBS ${PROJECT_SOURCE_DIR}/piclib/scheme/base.scm + ${PROJECT_SOURCE_DIR}/piclib/picrin/record.scm ${PROJECT_SOURCE_DIR}/piclib/picrin/array.scm ${PROJECT_SOURCE_DIR}/piclib/picrin/dictionary.scm ${PROJECT_SOURCE_DIR}/piclib/picrin/test.scm diff --git a/piclib/picrin/record.scm b/piclib/picrin/record.scm new file mode 100644 index 00000000..818913e8 --- /dev/null +++ b/piclib/picrin/record.scm @@ -0,0 +1,17 @@ +(define-library (picrin record) + (import (scheme base)) + + (define (define-record-writer* record-type writer) + (record-set! record-type 'writer writer)) + + (define-syntax define-record-writer + (syntax-rules () + ((_ (type obj) body ...) + (define-record-writer* type + (lambda (obj) + body ...))) + ((_ type writer) + (define-record-writer* type + writer)))) + + (export define-record-writer))