let fibonacci_it = fn (x) {
    if (x < 2) {
        return x;
    }
    let iter = fn (i, table) {
        if (i > x) {
            return last(table);
        } else {
            let new_table = push(table, table[i - 1] + table[i - 2]);
            return iter(i + 1, new_table);
        }
    };
    return iter(2, [0, 1]);
};
let fib = fibonacci_it(20);
puts(fib);
