chibi-scheme/examples/repl-server.scm
2015-01-26 08:06:59 +09:00

26 lines
885 B
Scheme

#!/usr/bin/env chibi-scheme
(import (scheme base) (scheme read) (scheme write) (scheme eval)
(chibi net) (chibi net server))
(define (repl-handler in out sock addr)
(let ((env (environment '(scheme base)
'(only (chibi) import))))
(let lp ()
(let ((expr (read in)))
(cond
((not (eof-object? expr))
(let ((result (guard (exn (else
(display "ERROR: " out)
(write exn out)
(newline out)
(if #f #f)))
(eval expr env))))
(cond
((not (eq? result (if #f #f)))
(write result out)
(newline out)))
(flush-output-port out)
(lp))))))))
(run-net-server 5556 repl-handler)