bearriver 0.10.4.4 → 0.10.4.5
raw patch · 2 files changed
+17/−4 lines, 2 filesdep ~dunaiPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
Dependency ranges changed: dunai
API changes (from Hackage documentation)
+ FRP.BearRiver: instance GHC.Classes.Eq a => GHC.Classes.Eq (FRP.BearRiver.Event a)
+ FRP.BearRiver: localTime :: Monad m => SF m () Time
+ FRP.BearRiver: parB :: Monad m => [SF m a b] -> SF m a [b]
+ FRP.BearRiver: rMerge :: Event a -> Event a -> Event a
+ FRP.Yampa: localTime :: Monad m => SF m () Time
+ FRP.Yampa: parB :: Monad m => [SF m a b] -> SF m a [b]
+ FRP.Yampa: rMerge :: Event a -> Event a -> Event a
Files
- bearriver.cabal +2/−2
- src/FRP/BearRiver.hs +15/−2
bearriver.cabal view
@@ -1,5 +1,5 @@ name: bearriver-version: 0.10.4.4+version: 0.10.4.5 synopsis: A replacement of Yampa based on Monadic Stream Functions. description: A Yampa replacement built using Dunai. homepage: keera.co.uk@@ -23,7 +23,7 @@ FRP.Yampa.AffineSpace, FRP.BearRiver - build-depends: base >=4.6 && <5, transformers >=0.3, mtl, dunai >= 0.5 && < 0.6, MonadRandom+ build-depends: base >=4.6 && <5, transformers >=0.3, mtl, dunai >= 0.5.2 && < 0.6, MonadRandom hs-source-dirs: src/ default-language: Haskell2010
src/FRP/BearRiver.hs view
@@ -19,6 +19,7 @@ import Control.Monad.Trans.Maybe import Control.Monad.Trans.MSF hiding (switch) import Control.Monad.Trans.MSF.Except as MSF hiding (switch)+import Control.Monad.Trans.MSF.List (widthFirst, sequenceS) import Control.Monad.Trans.MSF.Random import Data.Functor.Identity import Data.Maybe@@ -49,8 +50,11 @@ -- * Continuous time time :: Monad m => SF m () Time-time = integral <<< constant 1+time = localTime +localTime :: Monad m => SF m () Time+localTime = constant 1.0 >>> integral+ integral :: (Monad m, VectorSpace a s) => SF m a a integral = integralFrom zeroVector @@ -71,7 +75,7 @@ -- * Events data Event a = Event a | NoEvent- deriving Show+ deriving (Eq, Show) instance Functor Event where fmap f NoEvent = NoEvent@@ -106,9 +110,15 @@ mergeBy _ NoEvent re@(Event _) = re mergeBy resolve (Event l) (Event r) = Event (resolve l r) +-- | Left-biased event merge (always prefer left event, if present). lMerge :: Event a -> Event a -> Event a lMerge = mergeBy (\e1 _ -> e1) +-- | Right-biased event merge (always prefer right event, if present).+rMerge :: Event a -> Event a -> Event a+rMerge = flip lMerge++ -- ** Relation to other types eventToMaybe = event Nothing Just@@ -216,6 +226,9 @@ accumHoldBy f b = feedback b $ arr $ \(a, b') -> let b'' = event b' (f b') a in (b'', b'')++parB :: (Monad m) => [SF m a b] -> SF m a [b]+parB = widthFirst . sequenceS dpSwitchB :: (Monad m , Traversable col) => col (SF m a b) -> SF m (a, col b) (Event c) -> (col (SF m a b) -> c -> SF m a (col b))