I was wrong. The code below accomplishes what you want. It sets up an evaluator in the *sl languages, including hooks to print #t and #f properly.
(Matthew reminded me but I had to re-run the rendering script in a clean directory to validate his reminder.) (define-syntax-rule (*sl-eval module-lang reader def ...) ;; ===>>> (let () (define me (make-base-eval)) (me '(require (only-in racket empty? first rest cons? sqr true false))) (me '(require lang/posn)) (me '(require racket/pretty)) (me '(current-print pretty-print-handler)) (me '(pretty-print-columns 65)) (me 'def) ... (call-in-sandbox-context me (lambda () (error-print-source-location #f))) (call-in-sandbox-context me (lambda () (current-print-convert-hook (let ([prev (current-print-convert-hook)]) ;; tell `print-convert' to leave images as themselves: (lambda (v basic sub) (if (convertible? v) v (prev v basic sub))))) (pretty-print-size-hook (let ([prev (pretty-print-size-hook)]) ;; tell `pretty-print' that we'll handle images specially: (lambda (v w? op) (if (convertible? v) 1 (prev v w? op))))) (pretty-print-print-hook (let ([prev (pretty-print-print-hook)]) ;; tell `pretty-print' how to handle images, which is ;; by using `write-special': (lambda (v w? op) (if (convertible? v) (write-special v op) (prev v w? op))))) ((dynamic-require 'htdp/bsl/runtime 'configure) (dynamic-require reader 'options)))) (call-in-sandbox-context me (lambda () (namespace-require module-lang))) (interaction-eval #:eval me (require 2htdp/image)) (interaction-eval #:eval me (require 2htdp/batch-io)) ;; --- splice in the defs me)) (define-syntax-rule (bsl-eval def ...) (*sl-eval 'lang/htdp-beginner 'htdp/bsl/lang/reader def ...)) (define-syntax-rule (bsl-eval+ def ...) (*sl-eval 'lang/htdp-beginner-abbr 'htdp/bsl+/lang/reader def ...)) (define-syntax-rule (isl-eval def ...) (*sl-eval 'lang/htdp-intermediate 'htdp/isl/lang/reader def ...)) (define-syntax-rule (isl-eval+ def ...) (*sl-eval 'lang/htdp-intermediate-lambda 'htdp/isl/lang/reader def ...)) On Feb 27, 2012, at 10:31 AM, Robby Findler wrote: > Should consider this a bug (that that the call to make-evaluator below > doesn't set things up properly for this usecase)? > > Robby > > On Mon, Feb 27, 2012 at 9:27 AM, Matthias Felleisen > <matth...@ccs.neu.edu> wrote: >> >> I am running a short filter function on the output that changes #t to true. >> -- Matthias >> >> >> >> On Feb 27, 2012, at 10:23 AM, Klaus Ostermann wrote: >> >>> Hi all, >>> >>> I want to use Scribble for some lecture notes using HTDP/2e. >>> >>> The example "An Introduction to Racket with Pictures" illustrates how to >>> use Scribble and embed Racket evaluation. However, the HTDP >>> languages behave different in some ways - for instance, they >>> print "#t" as "true" and various other differences. >>> >>> How can I use Scribble to write about examples in the HTDP languages? >>> I want the exact behavior of the HTDP languages. Using, say, >>> (make-evaluator 'lang/htdp-intermediate) >>> is not sufficient. >>> >>> HTDP/2e itself seems to be written using Scribble, which would mean that >>> there is already a solution to this problem (?). >>> >>> Regards, >>> Klaus >>> ____________________ >>> Racket Users list: >>> http://lists.racket-lang.org/users >> >> >> ____________________ >> Racket Users list: >> http://lists.racket-lang.org/users ____________________ Racket Users list: http://lists.racket-lang.org/users