From 874dacf7912210f1462c1dfc9c6ec8e955af2a8e Mon Sep 17 00:00:00 2001 From: Scott Richmond Date: Fri, 27 May 2022 19:09:25 -0400 Subject: [PATCH] Littl repl improvements --- src/ludus/repl.clj | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/ludus/repl.clj b/src/ludus/repl.clj index 035e54d..4b3e719 100644 --- a/src/ludus/repl.clj +++ b/src/ludus/repl.clj @@ -16,7 +16,7 @@ (def prompt "=> ") (def base-ctx (merge prelude/prelude - {::repl true "foo" :bar + {::repl true "repl" { ::data/struct true @@ -60,13 +60,18 @@ (swap! sessions #(assoc % name session)) session)) +(defn- exit [] + (println "\nGoodbye!") + (System/exit 0)) + (defn repl-loop [] (let [session-atom @current-session session @session-atom orig-ctx (:ctx session)] (print (str (:name session) prompt)) (flush) - (let [input (read-line) + (let [raw-input (read-line) + input (if raw-input raw-input (exit)) parsed (-> input (scanner/scan) (parser/parse)) {result :result ctx :ctx} (interpreter/interpret-repl parsed (:ctx session))] (if (= result ::interpreter/error) @@ -79,7 +84,7 @@ (defn launch [] (println "Welcome to Ludus (v. 0.1.0-alpha)") - (let [session (new-session "ludus")] + (let [session (new-session :ludus)] (reset! current-session session) (repl-loop)))