At Tue, 3 Mar 2009 15:39:54 -0500, Felix Klock's PLT scheme proxy wrote: > Example Code to illustrate what I am talking about: > > ;;; FILE: bug.ss > #lang scheme > (provide external) > (require mzlib/pconvert) > ; (install-converting-printer) > (define-struct internal (value) #:transparent) > (define (external v) (make-internal v)) > (current-print-convert-hook > (let ((old-hook (current-print-convert-hook))) > (lambda (v basic-convert sub-convert) > (if (internal? v) > `(external ,(sub-convert (internal-value v))) > (old-hook v basic-convert sub-convert))))) > ;;; END OF FILE bug.ss > > ;;; FILE: bug2.ss > (require "bug.ss") > > ;; EXPRESSION DESIRED-OUTPUT ACTUAL-OUTPUT > (external 3) ; (external 3) (make-internal 3) > > ;;; END OF FILE bug2.ss
I think you want to implement the `prop:print-convert-constructor-name' property: #lang scheme (provide external) (require mzlib/pconvert-prop) (define-struct internal (value) #:transparent #:property prop:print-convert-constructor-name 'external) (define (external v) (make-internal v))
