From 7ed977e60d594929f290d5b31586c08ae674c695 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Wed, 17 Apr 2019 15:55:57 +0100 Subject: [PATCH] lib.converge: optimise --- lib/fixed-points.nix | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/fixed-points.nix b/lib/fixed-points.nix index 2f818c88de5..968930526a6 100644 --- a/lib/fixed-points.nix +++ b/lib/fixed-points.nix @@ -30,9 +30,12 @@ rec { # nix-repl> converge (x: x / 2) 16 # 0 converge = f: x: - if (f x) == x - then x - else converge f (f x); + let + x' = f x; + in + if x' == x + then x + else converge f x'; # Modify the contents of an explicitly recursive attribute set in a way that # honors `self`-references. This is accomplished with a function