Futures in js

by egon

HTML

<div id="center">
    <hr />
    <div id="logDiv"></div>
    <script type="text/javascript">       
        log = (function(){
            var logDiv = document.getElementById("logDiv");
            return function(){
                var args = [];
                for(var i=0; i < arguments.length; i++)
                    args.push( arguments[i] );
                logDiv.innerHTML = "<p>" + JSON.stringify(args) + "</p>" + logDiv.innerHTML;
            };
        })();
    </script>
</div>

CSS

body {
    margin : 0 0;
    width  : 100%;
    background: #000;
}
#center {
    align : center;
    margin : 0 auto;
    margin-top : 30px;
    width : 400px;
}

hr {
    color: #fff;
}

#logDiv {
    font:normal 12px/16px Courier New, monospace;
    color: #fff;
    height: 400px;
    overflow: scroll;
}

JavaScript

function enumerate(from, to){
    if( from >= to )
        return [to];
    return [from, function(){ return enumerate(from + 1, to) }]
}

function car( stream ){
    return stream[0];
}

function cdr( stream ){
    if(stream[1])
        return stream[1]();
    else
        return undefined;
}

function isNull( stream ){
    return typeof stream === "undefined";
}

str = enumerate(10, 100);
while( !isNull(str) ){
    var v = car(str);
    log(v);
    str = cdr(str);
}