Subscribed unsubscribe Subscribe Subscribe

もしswitch()がλになれたら

JavaScript ネタ
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万歳ということで。

追記: 例が適当じゃないのでちょっと変更。