diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-07-22 18:31:51 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-07-22 22:56:41 +0200 |
commit | b59df2434aafb8604df38662be1b428bd19b80d6 (patch) | |
tree | 5b6c2f240c6b97ce50adfc02594d1e9dc28631ba | |
parent | 1bd4e6db15025ea7c2caf97bb77cca4eddf5ebea (diff) | |
download | guix-b59df2434aafb8604df38662be1b428bd19b80d6.tar.gz |
derivations: Improve complexity of 'substitution-oracle'.
* guix/derivations.scm (substitution-oracle): Use a final 'concatenate' instead of repeated 'append's.
-rw-r--r-- | guix/derivations.scm | 20 |
1 files changed, 10 insertions, 10 deletions
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 <>))) |