diff --git a/bracket/runtime-config.rkt b/bracket/runtime-config.rkt index 48e3e9662..38ca43912 100644 --- a/bracket/runtime-config.rkt +++ b/bracket/runtime-config.rkt @@ -21,7 +21,10 @@ (current-print (λ (val) (unless (void? val) - (displayln (unparse val))))) + (define u (unparse val)) + (if (string? u) + (displayln u) + (old-print u))))) ; pict hack ) diff --git a/bracket/tests/test-graphics.rkt b/bracket/tests/test-graphics.rkt index 25b9c0a04..883d363b8 100644 --- a/bracket/tests/test-graphics.rkt +++ b/bracket/tests/test-graphics.rkt @@ -10,4 +10,4 @@ Graphics({Hue(0),Point({0,0}),Hue(1/3),Point({3,0}),Hue(2/3),Point({6,0})}); Graphics({Line({10,10},{20,20},{20,30},{30,30}), Point({10,10})}); -Graphics(AppendStar(Map((λx.{Hue(x/(2*pi)),Point({8*Sin(2*x),8*Cos(3*x)})}),Range(0,2*pi,1/128)))) +Graphics(AppendStar(Map((λ x.{Hue(x/(2*pi)),Point({8*Sin(2*x),8*Cos(3*x)})}),Range(0,2*pi,1/128)))) diff --git a/bracket/unparse.rkt b/bracket/unparse.rkt index 1ee0f6382..44781d92f 100644 --- a/bracket/unparse.rkt +++ b/bracket/unparse.rkt @@ -7,7 +7,8 @@ (require (submod "bracket.rkt" expression-core) (submod "bracket.rkt" equation-expression) - (submod "bracket.rkt" bracket)) + (submod "bracket.rkt" bracket) + slideshow/pict) (define (map/first? base f xs) @@ -33,16 +34,21 @@ (unparse-sum form first? level-below-times?)) (define (unparse-sum form [first? #t] [level-below-times? #f]) - (case (operator form) - [(Plus) - (define ops (operands form)) - (define unwrapped - (string-append* - (maybe-add-between (map unparse-product ops) "+" #\-))) - (wrap-if (and level-below-times? (>= (length ops) 2)) - unwrapped)] - [else - (unparse-product form first? level-below-times?)])) + (if (pict? form) + form ; hack: A single pict is returned as is + ; The unparse functions needs to return + ; something else than just strings in order + ; support other values such as snips. + (case (operator form) + [(Plus) + (define ops (operands form)) + (define unwrapped + (string-append* + (maybe-add-between (map unparse-product ops) "+" #\-))) + (wrap-if (and level-below-times? (>= (length ops) 2)) + unwrapped)] + [else + (unparse-product form first? level-below-times?)]))) (define (wrap-if test str) (if test (string-append "(" str ")") str)) @@ -135,7 +141,7 @@ (define x 'x) (define y 'y) (define z 'z) - + (displayln "TEST - Running tests in unparse.rkt") ;;; Numbers