cbaines pushed a commit to branch trunk
in repository data-service.

commit 8c79536fa4ad6e7f4f6214f5d391d109afcbf51b
Author: Christopher Baines <[email protected]>
AuthorDate: Mon Mar 10 14:09:23 2025 +0000

    Improve the chunking procedures
    
    Remove the empty chunk and use = for numeric equality.
---
 guix-data-service/utils.scm | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)

diff --git a/guix-data-service/utils.scm b/guix-data-service/utils.scm
index c85bed3..4fa5813 100644
--- a/guix-data-service/utils.scm
+++ b/guix-data-service/utils.scm
@@ -76,24 +76,30 @@
   (set! var var))
 
 (define (chunk lst max-length)
-  (if (> (length lst)
-         max-length)
+  (let ((len (length lst)))
+    (cond
+     ((= 0 len) '())
+     ((> (length lst) max-length)
       (call-with-values (lambda ()
                           (split-at lst max-length))
         (lambda (first-lst rest)
           (cons first-lst
-                (chunk rest max-length))))
-      (list lst)))
+                (chunk rest max-length)))))
+     (else
+      (list lst)))))
 
 (define (chunk! lst max-length)
-  (if (> (length lst)
-         max-length)
+  (let ((len (length lst)))
+    (cond
+     ((= 0 len) '())
+     ((> (length lst) max-length)
       (call-with-values (lambda ()
                           (split-at! lst max-length))
         (lambda (first-lst rest)
           (cons first-lst
-                (chunk! rest max-length))))
-      (list lst)))
+                (chunk! rest max-length)))))
+     (else
+      (list lst)))))
 
 (define* (chunk-for-each! proc chunk-size #:rest lsts)
   (define (do-one-iteration lsts)
@@ -114,10 +120,10 @@
         (apply proc lsts)))
 
   (let ((list-lengths (map length lsts)))
-    (unless (eq? 1 (length (delete-duplicates list-lengths)))
+    (unless (= 1 (length (delete-duplicates list-lengths)))
       (error "lists not equal length"))
 
-    (unless (eq? 0 (first list-lengths))
+    (unless (= 0 (first list-lengths))
       (do-one-iteration lsts)))
 
   #t)

Reply via email to