#!/usr/local/bin/node #!/usr/bin/js function monad(f){ f.bind = function(g){ return g(this()) }; f.push = function(g){ return this.bind(monad(function(){ return g })) }; return f; } var getClockTime = monad(function(){ return (new Date) + '' }); var putStrLn = function(s){ return monad(function(){ console.log(s) }) }; var pi = Math.atan2(1,1)*4; var main = getClockTime.bind(putStrLn).push(putStrLn(pi)); main();