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

Reply via email to