From 14e091f45ab85b5f9471a56ef6cfdea19855d740 Mon Sep 17 00:00:00 2001 From: Dane Johnson Date: Sun, 14 Dec 2025 10:35:52 -0600 Subject: [PATCH] Utilize a library function to find list indices --- bytecode-compiler.scm | 10 +++------- direct-style-interpreter.scm | 11 ++++------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/bytecode-compiler.scm b/bytecode-compiler.scm index 61dfad4..243b99a 100644 --- a/bytecode-compiler.scm +++ b/bytecode-compiler.scm @@ -88,17 +88,13 @@ (closed-environment closure-closed-environment)) ;; Helpers -(define (find-indexed pred lst) - (find (lambda (kons) (pred (car kons))) - (zip lst (iota (length lst))))) - (define (local-variable env ref) (let scan-env ([env env] [i 0]) (if (null? env) #f - (let ([the-match (find-indexed (lambda (name) (eq? name ref)) (car env))]) - (if the-match - `(local ,i . ,(cadr the-match)) + (let ([j (list-index (lambda (name) (eq? name ref)) (car env))]) + (if j + `(local ,i . ,j) (scan-env (cdr env) (+ i 1))))))) (define (global-variable env ref) diff --git a/direct-style-interpreter.scm b/direct-style-interpreter.scm index 87d2209..e35418a 100644 --- a/direct-style-interpreter.scm +++ b/direct-style-interpreter.scm @@ -95,17 +95,13 @@ (closed-environment closure-closed-environment)) ;; Helpers -(define (find-indexed pred lst) - (find (lambda (kons) (pred (car kons))) - (zip lst (iota (length lst))))) - (define (local-variable env ref) (let scan-env ([env env] [i 0]) (if (null? env) #f - (let ([the-match (find-indexed (lambda (name) (eq? name ref)) (car env))]) - (if the-match - `(local ,i . ,(cadr the-match)) + (let ([j (list-index (lambda (name) (eq? name ref)) (car env))]) + (if j + `(local ,i . ,j) (scan-env (cdr env) (+ i 1))))))) (define (global-variable env ref) @@ -151,6 +147,7 @@ (if (zero? i) (activation-rec-ref r j) (activation-rec-ref (activation-record-next r) (1- i) j))])) + (define (activation-rec-length r) (vector-length (activation-record-vals r)))