File: srfi-9.scm

package info (click to toggle)
slib 3b1-3
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 4,032 kB
  • ctags: 2,236
  • sloc: lisp: 29,164; makefile: 438; sh: 279
file content (16 lines) | stat: -rw-r--r-- 786 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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) ...))))