ついでにjavascriptだとおもしろいことができる

注意

spidermonkeyで実行しているので、ブラウザでの「print()」とは異なる動作をします。(rubyの「puts()」とほとんど同じような動作)

function strange(n){
    if (n <= 0) { return }
    print(n);
    (function(s){ var n=s; print(n)})("strange")
    strange(n-1);
    (function(){ var n; print(n)})()
    print(n)
}
strange(2)
// 2
// strange
// 1
// strange
// undefined
// 1
// undefined
// 2
// undefined
function f(a, str){
    return a.map(function(e){return str+e})
}
function g(str){
    return function(a){return f(a, str);}
}
var a = [1,2,3,4,5]
print(g("count is: ")(a))
// count is: 1,count is: 2,count is: 3,count is: 4,count is: 5