record-printer? added by andyjpb on Wed Apr 9 13:38:10 2014
----- (use records) ; stolen from db-hacks (define (make-record-printer type-name field-names) (lambda (record port) (fprintf port "`(~A)\n" (string-intersperse (map (lambda (field-name) (sprintf "(~A . ~S)" field-name ((record-accessor type-name field-name) record))) field-names) "\n ")))) ; EMAIL-ADDRESS ADTs (define email-address-fields '(name local-part domain-part route)) (define email-address-adt (make-record-type 'EMAIL-ADDRESS email-address-fields)) (define-record-printer email-address-adt (make-record-printer email-address-adt email-address-fields)) (define e ((record-constructor email-address-adt '()))) e ----- -> #<EMAIL-ADDRESS>