年末年始は結局だらだらと本を読んで過ごしてて全然Carrotを触ってなかった。昨日今日と頑張ったらとりあえず動く型チェッカができて、わりかし欲しいものに近付いた気がする。 今はCarrotを、クロージャといくつかの基本型しかない、型なしλ計算計算機みたいな抽象機械で動かしてるので、代数的データ型っぽいことをやるのに一工夫必要で、不思議な型システムができた。 概要はこのまえアドベントカレンダーのときに書いた通り、部分適用状態のクロージャに型を付けるというアイディアをベースにしていて、例えばリストならこんな風になる。 ;; コンストラクタ ;; {:expr (^ f (f x xs)) :env {x ? y ?}}という形のクロージャが(List a)と型付けされる (= (cons a (List a) (List a)) x xs f (f x xs)) (= (nil (List a
Stop Writing JavaScript Compilers! Make Macros Insteadを読んで、sweet.jsを使ってみた。 解決したい事 JavaScriptでは非同期処理が多いので、継続渡しスタイルのコードばっかりになるのだけど、みんなこれをcallback hellとかpyramid of doomとか呼んで嫌っている。 そこでプロミスとかフューチャっていうのが使われるようになった。プロミスを使う利点は結果が出ていない状態をファーストクラスな値として使える事だと思う。ネストはなくなるけど、結局文法の支援がないからpromise.then(function () {...})みたいに、限定継続渡し的なことはしなくちゃいけない。 継続渡し形式が嫌ならcall/ccとかshift/resetを導入したらいいんじゃないかとはずっと思っていた。そこで今日は、sweet.
Stop Writing JavaScript Compilers! Make Macros Instead The past several years have been kind to JavaScript. What was once a mediocre language plagued with political stagnation is now thriving with an incredible platform, a massive and passionate community, and a working standardization process that moves quickly. The web is the main reason for this, but node.js certainly has played its part. ES6,
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く