picrin/contrib/20.repl/repl.scm

27 lines
689 B
Scheme

(define-library (picrin repl)
(import (scheme base)
(scheme read)
(scheme write)
(scheme eval))
(define (repl)
(display "> ")
(let ((expr (read)))
(if (eof-object? expr)
(newline) ; exit
(begin
(call/cc
(lambda (exit)
(with-exception-handler
(lambda (condition)
(display (error-object-message condition) (current-error-port))
(newline)
(exit))
(lambda ()
(write (eval expr '(picrin user)))
(newline)))))
(repl)))))
(export repl))