標高+1m

Don't be rational

JavaScriptでCLOSライクな多重継承と総称関数

2年ぶりくらいにCLOS(GaucheのやつなのでせいかくにはTklos)をかじったらやっと意味が分かりました。
多重ディスパッチかっこよすぎる。

おもむろにgithubを探したらJS-CLOSっていうロシアの人が1年前に放棄した動かないJSプロジェクトがあったので、フォークして、まあなんとか遊べる程度まで作り込んでみました。

Github:
https://github.com/ympbyc/js-clos

Qiita:
http://qiita.com/items/5877294b97aaeaee5ae1

詳しい説明はQiitaを見てもらうとして、JS-CLOSで僕が気に入ってるのは、is-a?に===での比較が含まれているところです。普通is-a?はインスタンスとクラスを見て、apple is a Fruitみたいな関係を調べると思うんですけど、JS-CLOSでは、an apple is an appleとかFruit is a Fruitっていう比較を許してるんですよ。
これでなにが嬉しいかっていうと、fibの例みたいに引数の型指定のところに値を入れたり、bumpの例みたいにクラスをマッチさせたりできることです。だから型指定というよりはむしろパターンマッチっぽいですね。