From 57aff6476e3d4c9a2df5ea98f2caaed1472972de Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 3 Oct 2015 12:28:58 +0200 Subject: utils: Add 'every*'. * guix/build/gnu-build-system.scm (every*): Move to... * guix/build/utils.scm (every*): ... here. New procedure. --- guix/build/utils.scm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'guix/build/utils.scm') diff --git a/guix/build/utils.scm b/guix/build/utils.scm index 971929621a..e3f9edc5b5 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -59,10 +59,12 @@ (define-module (guix build utils) list->search-path-as-string which + every* alist-cons-before alist-cons-after alist-replace modify-phases + with-atomic-file-replacement substitute substitute* @@ -454,6 +456,18 @@ (define (which program) ;;; phases. ;;; +(define (every* pred lst) + "This is like 'every', but process all the elements of LST instead of +stopping as soon as PRED returns false. This is useful when PRED has side +effects, such as displaying warnings or error messages." + (let loop ((lst lst) + (result #t)) + (match lst + (() + result) + ((head . tail) + (loop tail (and (pred head) result)))))) + (define* (alist-cons-before reference key value alist #:optional (key=? equal?)) "Insert the KEY/VALUE pair before the first occurrence of a pair whose key -- cgit v1.2.3