shift/reset 入り MinCaml コンパイラ
MinCaml コンパイラとは
- MinCaml コンパイラは東北大の住井先生が開発された、プログラミング 言語 ML のサブセット「MinCaml」のコンパイラです。
- MinCaml、および MinCaml コンパイラについての詳細は、 「速攻 MinCaml コンパイラ概説」 をご参照ください。
shift/reset による拡張
- ソースコード (PowerPC 版の拡張)
- shift/reset は、Danvy と Filinski らによって提案された 限定継続のための命令です。shift は現在の継続を 切り取る命令、reset は shift が切り取る継続の 範囲を限定する命令です。
-
今回の実装では、
shift (fun <var> -> <exp>) reset (fun () -> <exp>)
という式を受け取ります。
また、リストとごく簡単なマッチ文も読み込みます。 - オリジナルの MinCaml コンパイラの型推論は単相ですが、この実装では answer type modification を許した、多相の型推論を用いています。
- 型推論後、shift と reset は外部関数に変換しています。 (shift/reset の実際の挙動を記述しているのは、 libmincaml.s です。)
論文
- M. Masuko, and K. Asai "Direct Implementation of Shift and Reset in the MinCaml Compiler", Technical Report of Department of Information Science, Ochanomizu University, OCHA-IS 09-1, 27 pages (May 2009). (a4.pdf)
- M. Masuko, and K. Asai "Direct Implementation of Shift and Reset in the MinCaml Compiler", Proceedings of the 2009 ACM SIGPLAN Workshop on ML, pp. 49-60 (September 2009). (the ACM digital library)