Quick hack to display picts in the DrRacket REPL

This commit is contained in:
Jens Axel Søgaard 2013-04-07 22:55:15 +02:00
parent f68eb51365
commit e2154543c5
3 changed files with 23 additions and 14 deletions

View File

@ -21,7 +21,10 @@
(current-print (current-print
(λ (val) (λ (val)
(unless (void? val) (unless (void? val)
(displayln (unparse val))))) (define u (unparse val))
(if (string? u)
(displayln u)
(old-print u))))) ; pict hack
) )

View File

@ -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}), Graphics({Line({10,10},{20,20},{20,30},{30,30}),
Point({10,10})}); 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))))

View File

@ -7,7 +7,8 @@
(require (submod "bracket.rkt" expression-core) (require (submod "bracket.rkt" expression-core)
(submod "bracket.rkt" equation-expression) (submod "bracket.rkt" equation-expression)
(submod "bracket.rkt" bracket)) (submod "bracket.rkt" bracket)
slideshow/pict)
(define (map/first? base f xs) (define (map/first? base f xs)
@ -33,16 +34,21 @@
(unparse-sum form first? level-below-times?)) (unparse-sum form first? level-below-times?))
(define (unparse-sum form [first? #t] [level-below-times? #f]) (define (unparse-sum form [first? #t] [level-below-times? #f])
(case (operator form) (if (pict? form)
[(Plus) form ; hack: A single pict is returned as is
(define ops (operands form)) ; The unparse functions needs to return
(define unwrapped ; something else than just strings in order
(string-append* ; support other values such as snips.
(maybe-add-between (map unparse-product ops) "+" #\-))) (case (operator form)
(wrap-if (and level-below-times? (>= (length ops) 2)) [(Plus)
unwrapped)] (define ops (operands form))
[else (define unwrapped
(unparse-product form first? level-below-times?)])) (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) (define (wrap-if test str)
(if test (string-append "(" str ")") str)) (if test (string-append "(" str ")") str))