shift/reset 入り MinCaml コンパイラ

(Japanese / English)
MinCaml コンパイラとは
  • MinCaml コンパイラは東北大の住井先生が開発された、プログラミング 言語 ML のサブセット「MinCaml」のコンパイラです。
  • MinCaml、および MinCaml コンパイラについての詳細は、 「速攻 MinCaml コンパイラ概説」 をご参照ください。
shift/reset による拡張
  • ソースコード (PowerPC 版の拡張)
  • shift/reset は、Danvy と Filinski らによって提案された 限定継続のための命令です。shift は現在の継続を 切り取る命令、resetshift が切り取る継続の 範囲を限定する命令です。
  • 今回の実装では、
      shift (fun <var> -> <exp>)
      reset (fun () -> <exp>)
    
    という式を受け取ります。
    また、リストとごく簡単なマッチ文も読み込みます。
  • オリジナルの MinCaml コンパイラの型推論は単相ですが、この実装では answer type modification を許した、多相の型推論を用いています。
  • 型推論後、shiftreset は外部関数に変換しています。 (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)