improve 0.3.0 → 0.3.1
raw patch · 3 files changed
+17/−4 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- Language/ImProve.hs +2/−2
- Language/ImProve/Code.hs +14/−1
- improve.cabal +1/−1
Language/ImProve.hs view
@@ -518,13 +518,13 @@ -- | Verify a program. ----- > verify pathToYices maxK program+-- > verify pathToYices program verify :: FilePath -> Stmt () -> IO () verify yices program = V.verify yices stmt where (_, _, stmt) = evalStmt 0 [] program --- | Generate C code.+-- | Generate C and Simulink code. code :: Name -> Stmt () -> IO () code name program = C.code name stmt where
Language/ImProve/Code.hs view
@@ -136,7 +136,7 @@ -- Simulink generation. codeMdl :: Name -> Statement -> IO () codeMdl name stmt = do- net <- execStateT all (Netlist 0 [] paths env [] [])+ net <- execStateT all (Netlist 0 [] paths env [] []) >>= return . removeNullEffect writeFile (name ++ ".mdl") $ show $ mdl name $ (mdlBlocks $ blocks net) ++ (mdlLines $ nets net) where vars = stmtVars stmt@@ -420,4 +420,17 @@ Mux' -> f "Switch" ["Criteria" :- "u2 ~= 0"] where f typ args = mdlBlock typ name args++isSrc :: Block -> Bool+isSrc a = case a of+ Outport _ -> False+ Assertion -> False+ _ -> True++removeNullEffect :: Netlist -> Netlist+removeNullEffect net = if null unused then net else removeNullEffect net { blocks = blocks', nets = nets' }+ where+ unused = [ name | (name, block) <- blocks net, isSrc block, not $ any (\ (n, _) -> name == n) $ nets net ]+ blocks' = [ (name, block) | (name, block) <- blocks net, not $ elem name unused ]+ nets' = [ (src, (dest, port)) | (src, (dest, port)) <- nets net, not $ elem dest unused ]
improve.cabal view
@@ -1,5 +1,5 @@ name: improve-version: 0.3.0+version: 0.3.1 category: Language, Formal Methods, Embedded