この記事は言語実装 Advent Calendar 2020 の5日目の記事です. 一度でも型推論器を書いたことがあれば,そのあまりの邪悪さ,あるいはその複雑さに恐れ慄いたことでしょう. 参照を用いて単一化を実現しようものなら構文木は参照に汚染され,純粋関数型に実装しようものなら大量の型代入をどのような順序で適用したものか悩まされる. これは Hindley-Milner 型推論器を実装する上での宿命のようなものです.本記事では,MLのサブセット——型付きλ計算をletと参照で拡張した,let多相をサポートする言語——の型推論器を Coq で実装し,その正当性を証明します. Coq で検証を行うことで我々は型推論器のバグへの恐怖とデバッグの労力から真に解放され,枕を高くして眠ることができることでしょう. もっとも、型付きλ計算を let 多相で拡張した言語の型推論器の正当性は実はすでに証
私の前のボスのハーバードでの講演のビデオが公開されました: http://ocaml.janestcapital.com/?q=node/82 彼は早口ですが、まあ頑張って聞いてください。普通に判れば、アメリカで普通に仕事できます。判らなくても仕事できますから安心してください。 正直、この Effective ML 9ヶ条と Jane Street Core のソースコードを見れば、 Jane Street での関数型プログラミングの秘訣は大体抑えられると言ってよいでしょう。学問的には新しいことは何もありませんが、徒党を組んで関数型言語によるプロジェクトを行うには重要な物ばかりです。 この、Effective ML 9ヶ条をまとめておきました。これを見ながら視聴すると良いかもしれないです。オリジナルは 00:47:13 で見れますね。 コードライタよりもリーダの意見を尊重せよ。大体において
どんなあみだくじでも答えにたどり着くことを証明した。 ここでいうあみだくじとは 有限本のくじ(縦棒)がある 縦棒上の点と点を結ぶ横道が有限本ある 横道は水平線だけじゃなく、遠くのくじへ行ったり自身を上に行ったりできる ダメなこと 「ふりだしへもどる」はない 同じ点と点を結ぶことはできない 一方通行はない 一度通ると崩れるマリオのブロックみたいな道はない どちらに行くか選べる分岐みたいなのはない なぜ証明したか PPLで話題になって証明しようかなと思った。 ざっくりとしたアイディア あみだくじを形式的に定義するアイディア くじ(縦棒)の集合があったとき、横道の集まりで一つのあみだくじのデータを表現した。 例えばこのあみだくじは A0--B2, A1--B0, B1--C0 という3本の横道として表現する。横道は端点のペアであり、端点の添字は点の高さで上から順に一つづつ大きい数字になる。各くじ

次回の予定 † 日時:2008/09/24(水) 18:30〜 (開始時刻が変更されました) 場所:名古屋大学 IB館 南棟 5階 エレベーターホール 内容はてなインターン中の講義内容紹介(Gemmaさん)javascript, NekoVM, swf,PHPにコンパイルできるocaml製言語haXeについて。(話者:?) ↑ [NEWS] † オープンソースカンファレンス2008 名古屋で発表してきました。 詳しくはこちら OCaml-3.10.2 来ました!(2008-02-29) http://caml.inria.fr/ocaml/release.en.html 3.10.1 からの変更点 主に不具合修正.windows環境下でstr.mliが見付からなかったら、再インストールしましょう。 OCaml-3.10.1 来ました!(2008-01-11) 3.10.0 からの変
1リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く