Yields the infinite fibonacci sequence (1, 1, 2, 3, 5, 8, 13, etc...)
function fibonacci() {
    return defer(function* () {
        let prev = 1;
        let curr = 1;
        yield prev;
        yield curr;
        for (;;) {
            let temp = prev;
            prev = curr;
            curr = temp + curr;
            yield curr;
        }
    });
}