Files
wren/builtin/core.wren
T

84 lines
1.4 KiB
Plaintext
Raw Normal View History

2014-02-16 09:20:31 -08:00
class Sequence {
map(f) {
2014-02-16 09:20:31 -08:00
var result = []
for (element in this) {
result.add(f.call(element))
}
return result
}
where(f) {
2014-02-16 09:20:31 -08:00
var result = []
for (element in this) {
if (f.call(element)) result.add(element)
}
return result
}
2015-01-13 23:47:01 -08:00
2015-01-14 23:19:31 -08:00
all(f) {
2015-01-13 23:47:01 -08:00
for (element in this) {
2015-01-14 22:42:15 -08:00
if (!f.call(element)) return false
2015-01-13 23:47:01 -08:00
}
return true
}
2015-01-15 16:29:49 +01:00
reduce(acc, f) {
for (element in this) {
acc = f.call(acc, element)
}
return acc
}
2015-01-16 09:24:18 +01:00
reduce(f) {
var iter = iterate(null)
if (!iter) Fiber.abort("Can't reduce an empty sequence.")
// Seed with the first element.
var result = iteratorValue(iter)
while (iter = iterate(iter)) {
result = f.call(result, iteratorValue(iter))
}
return result
}
2015-01-15 16:29:49 +01:00
2014-02-16 09:20:31 -08:00
}
class List is Sequence {
2014-04-06 08:37:37 -07:00
addAll(other) {
for (element in other) {
add(element)
}
return other
}
2014-02-04 08:44:59 -08:00
toString {
var result = "["
2014-02-12 17:33:35 -08:00
for (i in 0...count) {
2014-02-04 08:44:59 -08:00
if (i > 0) result = result + ", "
result = result + this[i].toString
}
result = result + "]"
return result
}
+(other) {
var result = this[0..-1]
for (element in other) {
2014-02-14 17:24:06 -08:00
result.add(element)
}
2014-02-14 17:24:06 -08:00
return result
}
contains(element) {
for (item in this) {
if (element == item) {
return true
}
}
return false
}
2014-02-04 08:44:59 -08:00
}
2014-02-16 09:20:31 -08:00
class Range is Sequence {}