copilot-core-0.2.4: An intermediate representation for Copilot.

Safe HaskellSafe



Intermediate representation for Copilot specifications. The form of the representation is based on this paper:

  • Carette, Jacques and Kiselyov, Oleg and Shan, Chung-chieh, "Finally tagless, partially evaluated: Tagless staged interpreters for simpler typed languages", Journal of Functional Programming vol. 19, p. 509-543, 2009.

The following article might also be useful:

  • Guillemette, Louis-Julien and Monnier, Stefan, "Type-Safe Code Transformations in Haskell", Electronic Notes in Theoretical Computer Science vol. 174, p. 23-39, 2007.

For examples of how to traverse a Copilot specification see the source code of the interpreter (Copilot.Core.Interpret) and the pretty-printer (Copilot.Core.PrettyPrint).


module Data.Int

module Data.Word