OSDN Git Service

Fold in expect-right-bracket-lookahead
authorsforman <sforman@hushmail.com>
Tue, 24 Oct 2023 05:50:57 +0000 (22:50 -0700)
committersforman <sforman@hushmail.com>
Tue, 24 Oct 2023 05:50:57 +0000 (22:50 -0700)
implementations/scheme-chicken/joy.scm

index 186919f..2521052 100644 (file)
         ((string=? token "false") #f)
         (else (string->symbol token))))
 
-(define (expect-right-bracket tokens acc) 
-  (if (null? tokens)
+(define (expect-right-bracket tokens0 acc)
+  (if (null? tokens0)
     (abort "Missing closing bracket.")
-    (expect-right-bracket-lookahead (car tokens) (cdr tokens) acc)))
-
-(define (expect-right-bracket-lookahead token tokens acc)
-  (match token
-    ("]" (values acc tokens))
-    ("[" (receive (sub_list rest) (expect-right-bracket tokens '())
-           (receive (el rrest) (expect-right-bracket rest acc)
-             (values (cons sub_list el) rrest))))
-    (_ (receive (el rest) (expect-right-bracket tokens acc)
-       (values (cons (tokenator token) el) rest)))))
+    (receive (token tokens) (car+cdr tokens0)
+      (match token
+        ("]" (values acc tokens))
+        ("[" (receive (sub_list rest) (expect-right-bracket tokens '())
+               (receive (el rrest) (expect-right-bracket rest acc)
+                 (values (cons sub_list el) rrest))))
+        (_ (receive (el rest) (expect-right-bracket tokens acc)
+           (values (cons (tokenator token) el) rest)))))))
 
 (define (one-token-lookahead token tokens)
   (match token