diff options
author | inoas <mail@inoas.com> | 2022-06-25 16:33:29 +0200 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2022-07-03 22:10:45 +0100 |
commit | cddb0ff3ed01f0ff13d6f98085a41b1d0866f6ad (patch) | |
tree | c1a9adb5f661f0ae3a3902bcb407c9a95c92cd68 /src | |
parent | bde95f08122dda73867c745fd866f4c74b9e105d (diff) | |
download | gleam_stdlib-cddb0ff3ed01f0ff13d6f98085a41b1d0866f6ad.tar.gz gleam_stdlib-cddb0ff3ed01f0ff13d6f98085a41b1d0866f6ad.zip |
attempt at fixing missing tco
Diffstat (limited to 'src')
-rw-r--r-- | src/gleam/list.gleam | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/gleam/list.gleam b/src/gleam/list.gleam index 9c554f7..8beeeb9 100644 --- a/src/gleam/list.gleam +++ b/src/gleam/list.gleam @@ -790,7 +790,19 @@ pub fn find_map( pub fn all(in list: List(a), satisfying predicate: fn(a) -> Bool) -> Bool { case list { [] -> True - [x, ..rest] -> predicate(x) && all(rest, predicate) + list -> all_tail_recursive(list, predicate, True) + } +} + +fn all_tail_recursive( + list: List(a), + predicate: fn(a) -> Bool, + accumulator: Bool, +) -> Bool { + case list { + [] -> accumulator + [x, ..rest] -> + all_tail_recursive(rest, predicate, accumulator && predicate(x)) } } |