emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/geiser-guile 67905aa 084/284: Simpler, nicer, more efficie


From: Philip Kaludercic
Subject: [nongnu] elpa/geiser-guile 67905aa 084/284: Simpler, nicer, more efficient handling of evaluation results. It
Date: Sun, 1 Aug 2021 18:29:21 -0400 (EDT)

branch: elpa/geiser-guile
commit 67905aae390b21e4f27250b79d43184c833256a4
Author: Jose Antonio Ortega Ruiz <jao@gnu.org>
Commit: Jose Antonio Ortega Ruiz <jao@gnu.org>

    Simpler, nicer, more efficient handling of evaluation results. It
    comes with a pony too.
---
 geiser/evaluation.scm | 51 ++++++++++++++++++++++++---------------------------
 1 file changed, 24 insertions(+), 27 deletions(-)

diff --git a/geiser/evaluation.scm b/geiser/evaluation.scm
index 3e38843..c2147a1 100644
--- a/geiser/evaluation.scm
+++ b/geiser/evaluation.scm
@@ -47,40 +47,37 @@
     (else (display (format "ERROR: ~a, args: ~a" (car args) (cdr args)))))
   `(error (key . ,(car args))))
 
-(define (evaluate form module-name evaluator)
-  (let ((module (or (and (list? module-name)
-                         (resolve-module module-name))
-                    (current-module)))
-        (evaluator (lambda (f m)
-                     (call-with-values (lambda () (evaluator f m)) list)))
-        (result #f)
-        (captured-stack #f)
-        (error #f))
+(define (ge:compile form module-name)
+  (let* ((module (or (and (list? module-name)
+                          (resolve-module module-name))
+                     (current-module)))
+         (result #f)
+         (captured-stack #f)
+         (error #f)
+         (ev (lambda ()
+               (save-module-excursion
+                (set-current-module module)
+                (set! result (call-with-values
+                                 (lambda () (compile form))
+                               (lambda vs
+                                 (map (lambda (v)
+                                        (with-output-to-string
+                                          (lambda () (write v))))
+                                      vs))))))))
     (let ((output
            (with-output-to-string
              (lambda ()
-               (set! result
-                     (catch #t
-                       (lambda ()
-                         (start-stack 'geiser-eval (evaluator form module)))
-                       (lambda args
-                         (set! error #t)
-                         (apply handle-error captured-stack args))
-                       (lambda args
-                         (set! captured-stack (make-stack #t 2 15)))))))))
+               (catch #t
+                 (lambda () (start-stack 'geiser-eval (ev)))
+                 (lambda args
+                   (set! error #t)
+                   (apply handle-error captured-stack args))
+                 (lambda args
+                   (set! captured-stack (make-stack #t 2 15))))))))
       (write `(,(if error result (cons 'result result))
                (output . ,output)))
       (newline))))
 
-(define (eval-compile form module)
-  (save-module-excursion
-   (lambda ()
-     (set-current-module module)
-     (compile form))))
-
-(define (ge:compile form module-name)
-  (evaluate form module-name eval-compile))
-
 (define ge:eval ge:compile)
 
 (define (ge:compile-file path)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]