packages feed

machinecell 1.3.0 → 1.3.1

raw patch · 3 files changed

+63/−4 lines, 3 files

Files

CHANGELOG.md view
@@ -1,3 +1,8 @@++1.3.1+------------+* (Fix test suite of 1.3.0)+ 1.3.0 ------------ * Support of `ArrowState`.@@ -21,7 +26,7 @@ * Added `feedback` * Fixed `accum` -1.0,1+1.0.1 ------------ * Fix some bugs of core part. * Added `onEnd`.
machinecell.cabal view
@@ -1,5 +1,5 @@ name:                machinecell-version:             1.3.0+version:             1.3.1 synopsis:            Arrow based stream transducers license:             BSD3 license-file:        LICENSE@@ -33,7 +33,7 @@   default-language:    Haskell2010   hs-source-dirs:      test   main-is:             spec.hs-  other-modules:       RandomProc+  other-modules:       RandomProc, LoopUtil   Build-depends:       base >=4.0 && <5.0, mtl >=2.0.1.1, profunctors >=4.0, QuickCheck >=1.0, hspec >=0.2.0, machinecell -any  source-repository head@@ -44,4 +44,4 @@ source-repository this   type:		git   location:	https://github.com/as-capabl/machinecell.git-  tag:		release-1.3.0+  tag:		release-1.3.1
+ test/LoopUtil.hs view
@@ -0,0 +1,54 @@+{-# LANGUAGE Arrows #-}++module+    LoopUtil+where++import Data.Functor+import Control.Arrow+import Test.Hspec++import Control.Category ((>>>))++import Control.Arrow.Machine as P+import Control.Monad.Trans (liftIO)+import qualified Control.Arrow.Machine.Misc.Pump as Pump++doubler = arr (fmap $ \x -> [x, x]) >>> P.fork++loopUtil =+  do+    describe "cycleDelay" $+      do+        it "can refer a recent value at downstream." $+          do+            let +                pa :: ProcessA (Kleisli IO) (Event Int) (Event Int)+                pa = proc evx ->+                  do+                    rec+                        y <- P.cycleDelay -< r2+                        anytime (Kleisli putStr) -< "" <$ evx -- side effect+                        evx2 <- doubler -< evx+                        r2 <- P.accum 0 -< (+) <$> evx2+                    returnA -< y <$ evx+            ret <- liftIO $ runKleisli (P.run pa) [1, 2, 3]+            ret `shouldBe` [0, 1+1, 1+1+2+2]+    describe "Pump" $+      do+        it "pumps up an event stream." $+          do+            let+                pa :: ProcessA (Kleisli IO) (Event Int) (Event Int)+                pa = proc evx ->+                  do+                    rec+                         evOut <- Pump.outlet -< (dct, () <$ evx)+                         anytime (Kleisli putStr) -< "" <$ evx -- side effect+                         so <- doubler -< evx+                         dct <- Pump.intake -< (so, () <$ evx)+                    returnA -< evOut++            ret <- liftIO $ runKleisli (P.run pa) [4, 5, 6]+            ret `shouldBe` [4, 4, 5, 5, 6, 6]+