From 3bb57f3982c8f73c5a5a44d2b3ac03e8d7913bf8 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Tue, 29 Sep 2020 11:30:11 -0400 Subject: array-list: Add array-list-fold procedure. --- chickadee/array-list.scm | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/chickadee/array-list.scm b/chickadee/array-list.scm index 3b11ec1..5e2174c 100644 --- a/chickadee/array-list.scm +++ b/chickadee/array-list.scm @@ -30,7 +30,8 @@ array-list-push! array-list-pop! array-list-clear! - array-list-for-each)) + array-list-for-each + array-list-fold)) (define-record-type (%make-array-list vector size) @@ -116,3 +117,12 @@ (when (< i size) (proc i (vector-ref vec i)) (loop (1+ i)))))) + +(define (array-list-fold proc init array-list) + (let ((size (array-list-size array-list)) + (vec (array-list-vector array-list))) + (let loop ((i 0) + (prev init)) + (if (< i size) + (loop (1+ i) (proc i (vector-ref vec i) prev)) + prev)))) -- cgit v1.2.3