Just a small question: Are the accessors visible in the protocol <exp>?
Here is an example that would use this to copy a record.
(define-record-type point
(protocol
(lambda (new)
(case-lambda
((x y) (new x y)) ; Create new
((old-point) (new (point-x old-point) ; Copy existing
(point-y old-point)))))
(fields (immutable x)
(immutable y)))
Regards
Andre