;;;; Cyclone Scheme ;;;; https://github.com/justinethier/cyclone ;;;; ;;;; Copyright (c) 2014-2016, Justin Ethier ;;;; All rights reserved. ;;;; ;;;; This module contains the repl library from r7rs. ;;;; (define-library (scheme repl) (export interaction-environment repl) (import (scheme base) (scheme eval) (scheme read) (scheme write)) (begin (define (interaction-environment) (setup-environment)) (define (repl) (with-handler (lambda (obj) (display "Error: ") (cond ((error-object? obj) (display (error-object-message obj)) (if (not (null? (error-object-irritants obj))) (display ": ")) (for-each (lambda (o) (write o) (display " ")) (error-object-irritants obj))) ((pair? obj) (when (string? (car obj)) (display (car obj)) (if (not (null? (cdr obj))) (display ": ")) (set! obj (cdr obj))) (for-each (lambda (o) (write o) (display " ")) obj)) (else (display obj))) (newline) (repl)) (display "cyclone> ") (let ((c (eval (read)))) (cond ((not (eof-object? c)) (write c) (newline) (repl)) (else (display "\n"))))))))