diff options
Diffstat (limited to 'srfi-9.scm')
-rw-r--r-- | srfi-9.scm | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/srfi-9.scm b/srfi-9.scm new file mode 100644 index 0000000..e55b193 --- /dev/null +++ b/srfi-9.scm @@ -0,0 +1,16 @@ +(require 'record) +(define-syntax define-record-field + (syntax-rules () + ((define-record-field type field-tag accessor) + (define accessor (record-accessor type 'field-tag))) + ((define-record-field type field-tag accessor modifier) + (begin (define accessor (record-accessor type 'field-tag)) + (define modifier (record-modifier type 'field-tag)))))) +;@ +(define-syntax define-record-type + (syntax-rules () + ((define-record-type type (constructor constructor-tag ...) predicate (field-tag accessor . more) ...) + (begin (define type (make-record-type 'type '(field-tag ...))) + (define constructor (record-constructor type '(constructor-tag ...))) + (define predicate (record-predicate type)) + (define-record-field type field-tag accessor . more) ...)))) |