aboutsummaryrefslogtreecommitdiff
path: root/repl
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2018-03-25 01:50:10 +0100
committerDimitri Sokolyuk <demon@dim13.org>2018-03-25 01:50:10 +0100
commite5ed6e13a4adbbe61317194af36c33c82b33c90f (patch)
tree790b5c954959ac852f0072f8bb2bd3137a4dac48 /repl
parent88efa3eb20001d1dc23e6b5a8413ea7adf10294e (diff)
lost chapter
Diffstat (limited to 'repl')
-rw-r--r--repl/repl.go6
1 files changed, 5 insertions, 1 deletions
diff --git a/repl/repl.go b/repl/repl.go
index 3d75f8a..e267e1d 100644
--- a/repl/repl.go
+++ b/repl/repl.go
@@ -16,6 +16,7 @@ const PROMPT = ">> "
func Start(in io.Reader, out io.Writer) {
scanner := bufio.NewScanner(in)
env := object.NewEnvironment()
+ macroEnv := object.NewEnvironment()
for {
fmt.Print(PROMPT)
@@ -34,7 +35,10 @@ func Start(in io.Reader, out io.Writer) {
continue
}
- evaluated := evaluator.Eval(program, env)
+ evaluator.DefineMacros(program, macroEnv)
+ expanded := evaluator.ExpandMacros(program, macroEnv)
+
+ evaluated := evaluator.Eval(expanded, env)
if evaluated != nil {
io.WriteString(out, evaluated.Inspect())
io.WriteString(out, "\n")