diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/geiser/geiser.ss | 18 | 
1 files changed, 9 insertions, 9 deletions
| diff --git a/src/geiser/geiser.ss b/src/geiser/geiser.ss index 960b71a..dae82c0 100644 --- a/src/geiser/geiser.ss +++ b/src/geiser/geiser.ss @@ -9,6 +9,12 @@            geiser:macroexpand)    (import (chezscheme)) +  (define-syntax as-string +    (syntax-rules () ((_ b ...) (with-output-to-string (lambda () b ...))))) + +  (define (write-to-string x) (as-string (write x))) +  (define (pretty-string x) (as-string (pretty-print x))) +    (define (call-with-result thunk)      (let ((output-string (open-output-string)))        (write @@ -20,17 +26,14 @@                  (k `((result "")                       (output . ,(get-output-string output-string))                       (error (key . condition) -                            (msg . ,(with-output-to-string -                                      (lambda () (display-condition e)))))))) +                            (msg . ,(as-string (display-condition e)))))))              (lambda ()                (call-with-values                    (lambda ()                      (parameterize ((current-output-port output-string)) (thunk)))                  (lambda result -                  `((result ,(with-output-to-string -                               (lambda () -                                 (pretty-print -                                  (if (null? (cdr result)) (car result) result))))) +                  `((result ,(pretty-string +                              (if (null? (cdr result)) (car result) result)))                      (output . ,(get-output-string output-string))))))))))        (newline)        (close-output-port output-string))) @@ -71,9 +74,6 @@                    (map write-to-string                         (environment-symbols (interaction-environment)))))) -  (define (write-to-string x) -    (with-output-to-string (lambda () (write x)))) -    (define (geiser:eval module form)      (call-with-result       (lambda () (if module (eval form (environment module)) (eval form))))) | 
