source: project/release/4/vandusen/trunk/vandusen-eval.scm @ 18259

Last change on this file since 18259 was 18259, checked in by Moritz Heidkamp, 11 years ago

vandusen: initial import

File size: 743 bytes
RevLine 
[18259]1(module vandusen-eval ()
2
3(import chicken scheme extras ports)
4(use vandusen environments srfi-18)
5
6(plugin 'eval
7        (lambda ()
8          (let ((env (environment-copy (scheme-report-environment 5) #t)))
9            (define (reply-with-eval-result m expression)
10              (condition-case (reply-to m (format "~S" (eval (with-input-from-string expression read) env)))
11                              (e () (reply-to m (format "error - ~A" 
12                                                        ((condition-property-accessor 'exn 'message) e))))))
13
14            (command 'eval
15                     '(: "eval" (+ whitespace) (submatch (+ any)))
16                     (lambda (m expression)
17                       (thread-start! (lambda ()
18                                        (let ((thread (thread-start! (cut reply-with-eval-result m expression))))
19                                          (thread-sleep! 3)
20                                          (thread-terminate! thread))))))))))
21
Note: See TracBrowser for help on using the repository browser.