-------------------------------------------------------------------------------- -- Copyright © 2011 National Institute of Aerospace / Galois, Inc. -------------------------------------------------------------------------------- -- | 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 Copilot.Core ( module Copilot.Core.Error , module Copilot.Core.Expr , module Copilot.Core.External , module Copilot.Core.MakeTags , module Copilot.Core.Operators , module Copilot.Core.Spec , module Copilot.Core.Type , module Copilot.Core.Type.Uninitialized , module Data.Int , module Data.Word ) where import Copilot.Core.Error import Copilot.Core.Expr import Copilot.Core.External import Copilot.Core.MakeTags import Copilot.Core.Operators import Copilot.Core.Spec import Copilot.Core.Type import Copilot.Core.Type.Uninitialized import Data.Int import Data.Word