From c399f94bb3bfad7fab7760d4842b38c9642541b5 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 24 Jul 2015 15:55:39 +0200 Subject: [PATCH] intersperse: Fix quadratic performance --- lib/strings.nix | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/strings.nix b/lib/strings.nix index c5af703e4e1f..bac03c9d7ad9 100644 --- a/lib/strings.nix +++ b/lib/strings.nix @@ -29,8 +29,7 @@ rec { intersperse = separator: list: if list == [] || length list == 1 then list - else [(head list) separator] - ++ (intersperse separator (tail list)); + else tail (lib.concatMap (x: [separator x]) list); # Concatenate a list of strings with a separator between each element, e.g. @@ -128,9 +127,9 @@ rec { addContextFrom = a: b: substring 0 0 a + b; - # Cut a string with a separator and produces a list of strings which were - # separated by this separator. e.g., - # `splitString "." "foo.bar.baz"' returns ["foo" "bar" "baz"]. + # Cut a string with a separator and produces a list of strings which + # were separated by this separator; e.g., `splitString "." + # "foo.bar.baz"' returns ["foo" "bar" "baz"]. splitString = _sep: _s: let sep = addContextFrom _s _sep;