From b8bd56a8f5441bb45f0f3731987fda27ccd9674f Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Thu, 18 Jan 2024 14:40:48 +0000 Subject: Fix par-map& To actually work in parallel. --- guix-data-service/utils.scm | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'guix-data-service') diff --git a/guix-data-service/utils.scm b/guix-data-service/utils.scm index 09f47f8..5d7d4ba 100644 --- a/guix-data-service/utils.scm +++ b/guix-data-service/utils.scm @@ -479,16 +479,18 @@ available. Return the resource once PROC has returned." (define (par-mapper' mapper cons) (lambda (proc . lists) - (let loop ((lists lists)) - (match lists - (((heads tails ...) ...) - (let ((tail (loop tails)) - (head (defer-to-parallel-fiber - (lambda () - (apply proc heads))))) - (cons (fetch-result-of-defered-thunks head) tail))) - (_ - '()))))) + (apply + fetch-result-of-defered-thunks + (let loop ((lists lists)) + (match lists + (((heads tails ...) ...) + (let ((tail (loop tails)) + (head (defer-to-parallel-fiber + (lambda () + (apply proc heads))))) + (cons head tail))) + (_ + '())))))) (define par-map& (par-mapper' map cons)) -- cgit v1.2.3