JSFiddle - React, Tailwind, and code Playground

JavaScript

var list = cycle(toList([1,2,3]));
var array = toArray(take(100, list));

document.body.innerHTML = "<ol>" + array.map(function (x) {
    return "<li>" + x + "</li>";
}).join("") + "</ol>";

function cons(head, tail) {
    return cont({
        head: head,
        tail: tail
    });
}

function cont(a) {
    return function (k) {
        return k(a);
    };
}

function toList(array) {
    var list = null, length = array.length;
    while (length) list = cons(array[--length], list);
    return list;
}

function toArray(list) {
    var array = [];

    while (list) {
        list = list(id);
        array = array.concat(list.head);
        list = list.tail;
    }

    return array;
}

function id(x) {
    return x;
}

function cycle(list) {
    list = list(id);
    var head = list.head;
    var tail = join(list.tail, cons(head, null));

    return function (k) {
        return k({
            head: head,
            tail: cycle(tail)
        });
    };
}

function join(xs, ys) {
    if (xs) {
        xs = xs(id);
        return cons(xs.head, join(xs.tail, ys));
    } else return ys;
}

function take(n, xs) {
    if (n > 0) {
        xs = xs(id);
        return cons(xs.head, take(n - 1, xs.tail));
    } else return null;
}