On Dec 1, 2006, at 3:49 PM, Jeff Read wrote:
Here's a hack I came up with:
(define-macro (define-record-type name constructor predicate . fields) (let* ((te (string->symbol (string-append "type-exhibitor-" (symbol->string name))))) `(begin (define-type ,name constructor: ,constructor predicate: ,predicate type-exhibitor: ,te ,@fields) (define ,name (,te)))))
Thanks, I changed define-macro to define-runtime-macro and put this right into _nonstd.scm as
[brad:~/programs/gambc-4.0b20/lib] lucier% rcsdiff -u _nonstd.scm
RCS file: RCS/_nonstd.scm,v retrieving revision 1.1 diff -u -r1.1 _nonstd.scm --- _nonstd.scm 2006/12/01 22:58:04 1.1 +++ _nonstd.scm 2006/12/01 23:20:38 @@ -998,10 +998,17 @@ (##define-type-expand 'define-structure #f #f args)) (define-runtime-macro (define-record-type name constructor predicate . fields)
- `(define-type ,name
constructor: ,constructor
predicate: ,predicate
,@fields))
- (let* ((te (string->symbol (string-append "type-exhibitor-"
(symbol->string name)))))
- `(begin
(define-type ,name
constructor: ,constructor
predicate: ,predicate
type-exhibitor: ,te
,@fields)
(define ,name (,te)))))
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -