csound-expression-dynamic 0.1.0 → 0.1.1
raw patch · 2 files changed
+17/−4 lines, 2 filesdep ~data-fix-cse
Dependency ranges changed: data-fix-cse
Files
csound-expression-dynamic.cabal view
@@ -1,5 +1,5 @@ Name: csound-expression-dynamic-Version: 0.1.0+Version: 0.1.1 Cabal-Version: >= 1.6 License: BSD3 License-file: LICENSE@@ -25,7 +25,7 @@ Ghc-Options: -Wall Build-Depends: base >= 4, base < 5, data-default, containers, array, transformers >= 0.3, wl-pprint, - Boolean >= 0.1.0, data-fix, data-fix-cse+ Boolean >= 0.1.0, data-fix, data-fix-cse >= 0.0.2 Hs-Source-Dirs: src/ Exposed-Modules: Csound.Dynamic
src/Csound/Dynamic/Render/Instr.hs view
@@ -9,7 +9,7 @@ import Data.Maybe(fromJust) import Data.Fix(Fix(..), cata)-import Data.Fix.Cse(fromDag, cse)+import Data.Fix.Cse(fromDag, cseFramed, FrameInfo(..)) import qualified Text.PrettyPrint.Leijen as P @@ -38,7 +38,20 @@ -- E -> Dag toDag :: E -> Dag RatedExp -toDag expr = filterDepCases $ fromDag $ cse $ trimByArgLength expr+toDag expr = filterDepCases $ fromDag $ cseFramed getFrameInfo $ trimByArgLength expr++getFrameInfo :: RatedExp a -> FrameInfo+getFrameInfo x = case ratedExpExp x of+ -- | Imperative If-then-else+ IfBegin _ -> StartFrame+ ElseIfBegin _ -> NextFrame+ ElseBegin -> NextFrame + IfEnd -> StopFrame+ -- | looping constructions+ UntilBegin _ -> StartFrame+ UntilEnd -> StopFrame+ _ -> NoFrame+ trimByArgLength :: E -> E trimByArgLength = cata $ \x -> Fix x{ ratedExpExp = phi $ ratedExpExp x }