Gauche:define-struct

Gauche:define-struct

継承しないバージョンfrom shiroさん: PLTのdefine-structは継承できるらしい。

(use srfi-9)

(define-macro (define-struct name fields)
  (let ((constructor (string->symbol #`"make-,|name|"))
        (predicate (string->symbol #`",|name|?"))
        (acc&mods (map (lambda (field)
                         (list field
                               (string->symbol #`",|name|-,|field|")
                               (string->symbol #`"set-,|name|-,|field|!")))
                       fields)))
    `(define-record-type
       ,name
       (,constructor ,@fields)
       ,predicate
       ,@acc&mods)))

Last modified : 2004/02/06 10:43:26 UTC