From 699024646cc934c5af33c604a3586a0d3d414424 Mon Sep 17 00:00:00 2001 From: Akshay Date: Thu, 5 Nov 2020 11:55:27 +0530 Subject: repl code, refactor into modules --- main.scm | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/main.scm b/main.scm index 08a5a22..59dae1d 100644 --- a/main.scm +++ b/main.scm @@ -1,8 +1,10 @@ -(include "prelude/primitives.scm") -(include "util/table.scm") -(include "util/alist.scm") +(add-to-load-path ".") +(add-to-load-path "util/") +(add-to-load-path "prelude/") -(define (lift-bool expr) (if expr 'true 'false)) +(use-modules (environment)) +(use-modules (prelude/primitives)) +(use-modules (util/alist)) (define (tagged? expr tag) (if (pair? expr) @@ -32,11 +34,7 @@ (define (operands expr) (cdr expr)) (define (no-operands? expr) (null? expr)) (define (list-of-values ls env) - (if (no-operands? ls) - '() - (let ([first (eval-expr (car ls) env)]) - (let ([rest (list-of-values (cdr ls) env)]) - (cons first rest))))) + (map (lambda (l) (eval-expr l env)) ls)) ;;; quoted expressions (define (quote-form? expr) (tagged? expr 'quote)) @@ -70,3 +68,23 @@ (cond [(primitive? proc) (apply-primitive-proc proc args)] [else 'false])) + +(define the-global-env (setup-environment)) +(define input-prompt ";;; CIRCLE INPUT ") +(define output-prompt ";;; CIRCLE OUTPUT ") +(define (driver-loop) + (begin + (newline) + (display input-prompt) + (newline) + (let ([input (read)]) + (let ([output (eval-expr input the-global-env)]) + (begin + (display output-prompt) + (newline) + (show-lisp-expr output) + (newline) + (driver-loop)))))) + +(define (show-lisp-expr object) + (display object)) -- cgit v1.2.3