circ 0.0.3 → 0.0.4
raw patch · 2 files changed
+6/−27 lines, 2 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Language.CIRC: Spec :: Name -> [Import] -> TypeName -> [TypeDef] -> [Transform] -> Spec
+ Language.CIRC: Spec :: ModuleName -> ModuleName -> TypeName -> [TypeDef] -> [Transform] -> Spec
Files
- Language/CIRC.hs +5/−26
- circ.cabal +1/−1
Language/CIRC.hs view
@@ -28,8 +28,8 @@ import System.IO import Text.Printf --- | A specification is a module name for the initial type, common imports, the root type, the initial type definitions, and a list of transforms.-data Spec = Spec Name [Import] TypeName [TypeDef] [Transform]+-- | A specification is the initial type module name, the initial transform module name, the root type, the initial type definitions, and a list of transforms.+data Spec = Spec ModuleName ModuleName TypeName [TypeDef] [Transform] type Name = String type ModuleName = String@@ -63,10 +63,8 @@ -- | Compiles a CIRC spec. circ :: Spec -> IO ()-circ (Spec initModuleName initImports rootTypeName typeDefsUnsorted transforms) = do- maybeWriteFile (initModuleName ++ ".hs") $ codeTypeModule initModuleName initImports typeDefs- maybeWriteFile (initModuleName ++ "Trans.hs") $ codeInitTransModule initModuleName rootTypeName- foldM_ codeTransform (initModuleName, typeDefs) transforms+circ (Spec initTypeModuleName initTransModuleName rootTypeName typeDefsUnsorted transforms) = do+ foldM_ codeTransform (initTransModuleName, typeDefs) transforms where typeDefs = sortTypeDefs typeDefsUnsorted @@ -74,7 +72,7 @@ codeTransform (prevModuleName, prevTypeDefs) (Transform moduleName typeImports transImports removedCtors typeRefinements) = do maybeWriteFile (moduleName ++ ".hs") $ codeTypeModule moduleName typeImports typeDefs maybeWriteFile (moduleName ++ "Trans.hs") $ codeTransModule- initModuleName+ initTypeModuleName rootTypeName prevModuleName prevTypeDefs@@ -130,25 +128,6 @@ TList a -> "[" ++ codeType a ++ "]" TMaybe a -> "(Maybe " ++ codeType a ++ ")" TTuple a -> "(" ++ intercalate ", " (map codeType a) ++ ")"---- | Code the initial transform module.-codeInitTransModule :: ModuleName -> TypeName -> String-codeInitTransModule moduleName rootTypeName = unlines- [ printf "module %sTrans" moduleName- , printf " ( transform"- , printf " , transform'"- , printf " ) where"- , printf ""- , printf "import Language.CIRC.Runtime (CIRC)"- , printf "import %s (%s)" moduleName rootTypeName- , printf ""- , printf "transform :: %s -> CIRC (%s, [%s])" rootTypeName rootTypeName rootTypeName- , printf "transform a = return (a, [a])"- , printf ""- , printf "transform' :: %s -> CIRC %s" rootTypeName rootTypeName- , printf "transform' = return"- , printf ""- ] -- | Code the module that contains the IR transformations. codeTransModule :: ModuleName -> TypeName -> ModuleName -> [TypeDef] -> ModuleName -> [Import] -> [TypeDef] -> [(CtorName, Code)] -> [(CtorName, Code)] -> String
circ.cabal view
@@ -1,5 +1,5 @@ name: circ-version: 0.0.3+version: 0.0.4 synopsis: A Compiler IR Compiler. description: A Compiler IR Compiler. license: BSD3