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);
}