diff options
author | Richard Viney <richard.viney@gmail.com> | 2024-10-07 17:40:31 +1300 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2024-10-08 12:16:44 +0100 |
commit | 0a087d5d80b803e70909848f5b7b28ce2b5df4fc (patch) | |
tree | e67d3d529e565d89b76e7cfe76caf72c684e7102 /src | |
parent | 3b966c2715593d07bfa1208879aa5ccbdb648dbc (diff) | |
download | gleam_stdlib-0a087d5d80b803e70909848f5b7b28ce2b5df4fc.tar.gz gleam_stdlib-0a087d5d80b803e70909848f5b7b28ce2b5df4fc.zip |
Optimise string.repeat
Diffstat (limited to 'src')
-rw-r--r-- | src/gleam/string.gleam | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/gleam/string.gleam b/src/gleam/string.gleam index e530c8f..0906481 100644 --- a/src/gleam/string.gleam +++ b/src/gleam/string.gleam @@ -438,10 +438,14 @@ pub fn concat(strings: List(String)) -> String { /// ``` /// pub fn repeat(string: String, times times: Int) -> String { - iterator.repeat(string) - |> iterator.take(times) - |> iterator.to_list - |> concat + do_repeat(string, times, "") +} + +fn do_repeat(string: String, times: Int, acc: String) -> String { + case times <= 0 { + True -> acc + False -> do_repeat(string, times - 1, acc <> string) + } } /// Joins many `String`s together with a given separator. |