packages feed

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 }