The MinCaml compiler + shift/reset

(Japanese / English)
What is the MinCaml compiler ?
Extension to support shift/reset
  • source code (PowerPC version extended with shift/reset)
  • The delimited control operators shift and reset are proposed by Danvy and Filinski. Intuitively, shift captures the current continuation, and reset delimits the scope of the continuation captured by shift.
  • In this implementation, the expressions of the following forms
      shift (fun <var> -> <exp>)
      reset (fun () -> <exp>)
    
    are accepted as well as lists and simple pattern matching on lists.
  • The original MinCaml compiler uses a monomorphic type system, but here, we use a polymorphic type system which supports answer type polymorphism and answer type modification.
  • After the type inference, the compiler transforms identifiers shift and reset into ordinary external functions. So, the behaviors of shift/reset are described in libmincaml.s.
Papers
  • 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)