From de04fc85bcb18feaf4ec7d01e9624bdbe9667c8d Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Sun, 23 Feb 2014 11:01:35 +0900 Subject: [PATCH] Adding a sample repl server. --- examples/repl-server.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 examples/repl-server.scm diff --git a/examples/repl-server.scm b/examples/repl-server.scm new file mode 100644 index 00000000..eaa9ab44 --- /dev/null +++ b/examples/repl-server.scm @@ -0,0 +1,26 @@ +#!/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)