From b59df2434aafb8604df38662be1b428bd19b80d6 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 22 Jul 2015 18:31:51 +0200 Subject: derivations: Improve complexity of 'substitution-oracle'. * guix/derivations.scm (substitution-oracle): Use a final 'concatenate' instead of repeated 'append's. --- guix/derivations.scm | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'guix') diff --git a/guix/derivations.scm b/guix/derivations.scm index f12127f0ed..d694ccf6d4 100644 --- a/guix/derivations.scm +++ b/guix/derivations.scm @@ -264,16 +264,16 @@ substituter many times." (derivation-prerequisites drv valid-input?))) (let* ((paths (delete-duplicates - (fold (lambda (drv result) - (let ((self (match (derivation->output-paths drv) - (((names . paths) ...) - paths)))) - (if (every valid? self) - result - (append (append self (dependencies drv)) - result)))) - '() - drv))) + (concatenate + (fold (lambda (drv result) + (let ((self (match (derivation->output-paths drv) + (((names . paths) ...) + paths)))) + (if (every valid? self) + result + (cons* self (dependencies drv) result)))) + '() + drv)))) (subst (list->set (substitutable-paths store paths)))) (cut set-contains? subst <>))) -- cgit v1.2.3