(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))