From 4df31667b6a5a4edfc6ee199ae94da69fb919730 Mon Sep 17 00:00:00 2001 From: sforman Date: Tue, 10 Oct 2023 11:16:30 -0700 Subject: [PATCH] Remove global stack, dict. Pass them through the recursive loop instead. --- implementations/scheme-chicken/joy.scm | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/implementations/scheme-chicken/joy.scm b/implementations/scheme-chicken/joy.scm index 27fc3a8..7c55501 100644 --- a/implementations/scheme-chicken/joy.scm +++ b/implementations/scheme-chicken/joy.scm @@ -248,26 +248,18 @@ (define (prompt) (display "joy? ") (read-line)) -(define DICTIONARY (initialize)) -(define STACK '()) - -(define (doit text) - (receive (stack dict) (joy STACK (text->expression text) DICTIONARY) - (set! DICTIONARY dict) - (set! STACK stack) - (joy-expression->string (reverse stack)))) - -(define (main-loop) +(define (main-loop stack0 dict0) (let ((text (prompt))) - (if (not (string=? text "")) - ((print (doit text)) (main-loop)) - (else)))) - + (if (not (eof-object? text)) + (receive (stack dict) (joy stack0 (text->expression text) dict0) + (print (joy-expression->string (reverse stack))) + (main-loop stack dict)) + (print)))) (define (joy-trace stack expression) (print (conc (joy-expression->string (reverse stack)) " . " (joy-expression->string expression)))) -(main-loop) +(main-loop '() (initialize)) ;(display (doit "5 [] cons [4] concat first"))