2014-02-16 17:20:31 +00:00
|
|
|
class Sequence {
|
2014-02-18 17:54:55 +00:00
|
|
|
map(f) {
|
2014-02-16 17:20:31 +00:00
|
|
|
var result = []
|
|
|
|
|
for (element in this) {
|
|
|
|
|
result.add(f.call(element))
|
|
|
|
|
}
|
|
|
|
|
return result
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-18 17:54:55 +00:00
|
|
|
where(f) {
|
2014-02-16 17:20:31 +00:00
|
|
|
var result = []
|
|
|
|
|
for (element in this) {
|
|
|
|
|
if (f.call(element)) result.add(element)
|
|
|
|
|
}
|
|
|
|
|
return result
|
|
|
|
|
}
|
2015-01-14 07:47:01 +00:00
|
|
|
|
2015-01-15 07:19:31 +00:00
|
|
|
all(f) {
|
2015-01-14 07:47:01 +00:00
|
|
|
for (element in this) {
|
2015-01-15 06:42:15 +00:00
|
|
|
if (!f.call(element)) return false
|
2015-01-14 07:47:01 +00:00
|
|
|
}
|
|
|
|
|
return true
|
|
|
|
|
}
|
2015-01-15 15:29:49 +00:00
|
|
|
|
|
|
|
|
reduce(acc, f) {
|
|
|
|
|
for (element in this) {
|
|
|
|
|
acc = f.call(acc, element)
|
|
|
|
|
}
|
|
|
|
|
return acc
|
|
|
|
|
}
|
|
|
|
|
|
2015-01-16 08:24:18 +00: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 15:29:49 +00:00
|
|
|
|
2014-02-16 17:20:31 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class List is Sequence {
|
2014-04-06 15:37:37 +00:00
|
|
|
addAll(other) {
|
|
|
|
|
for (element in other) {
|
|
|
|
|
add(element)
|
|
|
|
|
}
|
|
|
|
|
return other
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-04 16:44:59 +00:00
|
|
|
toString {
|
|
|
|
|
var result = "["
|
2014-02-13 01:33:35 +00:00
|
|
|
for (i in 0...count) {
|
2014-02-04 16:44:59 +00:00
|
|
|
if (i > 0) result = result + ", "
|
|
|
|
|
result = result + this[i].toString
|
|
|
|
|
}
|
|
|
|
|
result = result + "]"
|
|
|
|
|
return result
|
|
|
|
|
}
|
2014-02-14 17:09:02 +00:00
|
|
|
|
2014-04-09 00:54:37 +00:00
|
|
|
+(other) {
|
2014-02-15 04:10:41 +00:00
|
|
|
var result = this[0..-1]
|
2014-04-09 00:54:37 +00:00
|
|
|
for (element in other) {
|
2014-02-15 01:24:06 +00:00
|
|
|
result.add(element)
|
2014-02-14 17:09:02 +00:00
|
|
|
}
|
2014-02-15 01:24:06 +00:00
|
|
|
return result
|
2014-02-14 17:09:02 +00:00
|
|
|
}
|
2015-01-09 22:02:40 +00:00
|
|
|
|
|
|
|
|
contains(element) {
|
|
|
|
|
for (item in this) {
|
|
|
|
|
if (element == item) {
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false
|
|
|
|
|
}
|
2014-02-04 16:44:59 +00:00
|
|
|
}
|
2014-02-16 17:20:31 +00:00
|
|
|
|
|
|
|
|
class Range is Sequence {}
|