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))))) + + ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -