diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gleam/int.gleam | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/gleam/int.gleam b/src/gleam/int.gleam index f717eaa..0bbd63d 100644 --- a/src/gleam/int.gleam +++ b/src/gleam/int.gleam @@ -148,3 +148,22 @@ pub fn is_odd(x: Int) -> Bool { pub fn negate(x: Int) -> Int { -1 * x } + +/// Sums a list of Ints. +/// +/// ## Example +/// +/// > sum([1, 2, 3]) +/// 6 +/// +pub fn sum(numbers: List(Int)) -> Int { + numbers + |> do_sum(0) +} + +fn do_sum(numbers: List(Int), initial: Int) -> Int { + case numbers { + [] -> initial + [x, ..rest] -> do_sum(rest, x + initial) + } +} |