Make Sequence base class.

This lets us share functionality between List and Range (and
other user-defined sequence types).
This commit is contained in:
Bob Nystrom
2014-02-16 09:20:31 -08:00
parent 4d8bf4bc8e
commit f8a9d7f321
8 changed files with 68 additions and 53 deletions
+21 -17
View File
@@ -1,4 +1,22 @@
class List {
class Sequence {
map (f) {
var result = []
for (element in this) {
result.add(f.call(element))
}
return result
}
where (f) {
var result = []
for (element in this) {
if (f.call(element)) result.add(element)
}
return result
}
}
class List is Sequence {
toString {
var result = "["
for (i in 0...count) {
@@ -16,20 +34,6 @@ class List {
}
return result
}
map (f) {
var result = []
for (element in this) {
result.add(f.call(element))
}
return result
}
where (f) {
var result = []
for (element in this) {
if (f.call(element)) result.add(element)
}
return result
}
}
class Range is Sequence {}