List iota(int n) { List ret = new MTList : List(); while(n > 0) { ret = new ConsList : List(car = new Int : IInt(value = n), cdr = ret); n = n - 1; }; return ret; } int main() { List x = iota(100); List y = x.map(fun(Any x) { if(x isa IInt) { new Int : IInt(value = (x : IInt).value * 2); } else { x; }; }); (y.foldl(fun(Any x, Any i) { if x isa IInt && i isa IInt { new Int : IInt(value = (x : IInt).value + (i : IInt).value); } else { i; } ; }, new Int : IInt(value = 0)) : IInt).value; }