もしswitch()がλになれたら
var f = switch (a) { case 0: return 0; case 1: return 1; default: return f(a - 2) + f(a - 1); };
関数の結果にもマッチできるわけで。
var f = switch (a) { case f(a + 1) % 8 + 1: return a + 1; default: return a * 4 + 3; };
しかも yield (コルーチンの) できたりして。なんて変態的なんだろう。
var f = switch (a) { case 'boo': alert('moo'); yield; // fall-through case 'byu': alert('myu' + a); }; f('boo'); // moo f('boo'); // myu boo f('byu'); // myu byu // XXX: f のコンテキストを元に戻すには return しかないのか...
map の代わり (てかこれが本来の map なのかもしれない)
var map = switch (a) { case 1: return "a"; case 2: return "b"; }; alert(map(1)); // a alert(map(2)); // b map.case( function(a) { return a == 3; }, function() { return "c"; }); alert(map(3)); // c
とりあえず (広義の) ML万歳ということで。
追記: 例が適当じゃないのでちょっと変更。