feat: add reduce method to Sequence with two overloads and tests

Implement `reduce` on the `Sequence` class in core.wren with two overloads: one taking an initial accumulator and a function, and another using the first element as the initial accumulator. Add three test files covering normal reduction, single-element edge case, and wrong arity error.
This commit is contained in:
Luchs
2015-01-15 15:29:49 +00:00
parent d3ea153a31
commit afa0a0a8e9
5 changed files with 31 additions and 0 deletions
+10
View File
@@ -21,6 +21,16 @@ class Sequence {
}
return true
}
reduce(acc, f) {
for (element in this) {
acc = f.call(acc, element)
}
return acc
}
reduce(f) { this[1..-1].reduce(this[0], f) }
}
class List is Sequence {