reactive-banana 0.7.0.1 → 0.7.1.0
raw patch · 7 files changed
+27/−18 lines, 7 filesdep −QuickCheckdep ~containersdep ~hashabledep ~transformersPVP ok
version bump matches the API change (PVP)
Dependencies removed: QuickCheck
Dependency ranges changed: containers, hashable, transformers, unordered-containers, vault
API changes (from Hackage documentation)
Files
- reactive-banana.cabal +5/−5
- src/Reactive/Banana/Experimental/Calm.hs +0/−1
- src/Reactive/Banana/Frameworks.hs +14/−4
- src/Reactive/Banana/Internal/DependencyGraph.hs +2/−2
- src/Reactive/Banana/Internal/Phantom.hs +0/−2
- src/Reactive/Banana/Internal/PulseLatch0.hs +1/−3
- src/Reactive/Banana/Internal/Types2.hs +5/−1
reactive-banana.cabal view
@@ -1,10 +1,10 @@ Name: reactive-banana-Version: 0.7.0.1+Version: 0.7.1.0 Synopsis: Practical library for functional reactive programming (FRP). Description: Reactive-banana is a practical library for Functional Reactive Programming (FRP). .- FRP offers an elegant and concise way to express interactive programs such as graphical user interfaces, animations, computer music or robot controllers. Thus, the reactive-banana library promises to avoid the spagethetti code commonly used in traditional GUI technologies.+ FRP offers an elegant and concise way to express interactive programs such as graphical user interfaces, animations, computer music or robot controllers. Thus, the reactive-banana library promises to avoid the spaghetti code commonly used in traditional GUI technologies. . See the project homepage <http://haskell.org/haskellwiki/Reactive-banana> for a more detailed introduction and features.@@ -59,8 +59,7 @@ extensions: EmptyDataDecls, BangPatterns - build-depends: QuickCheck >= 1.2 && < 2.6,- unordered-containers >= 0.2.1.0 && < 0.3,+ build-depends: unordered-containers >= 0.2.1.0 && < 0.3, hashable == 1.1.* -- CPP-options: -DUseExtensions@@ -93,6 +92,7 @@ HUnit >= 1.2 && < 2, test-framework == 0.6.*, test-framework-hunit == 0.2.*,- reactive-banana+ reactive-banana, vault, containers, transformers,+ unordered-containers, hashable
src/Reactive/Banana/Experimental/Calm.hs view
@@ -21,7 +21,6 @@ module Control.Applicative, never, unionWith, filterE, accumE, apply, stepper,- -- $classes -- * Derived Combinators -- ** Filtering
src/Reactive/Banana/Frameworks.hs view
@@ -16,7 +16,9 @@ compile, Frameworks, AddHandler, fromAddHandler, fromChanges, fromPoll, reactimate, initial, changes,- FrameworksMoment(..), execute, liftIONow, liftIOLater,+ FrameworksMoment(..), execute, liftIOLater, liftIONow,+ -- $liftIO+ module Control.Monad.IO.Class, -- * Running event networks EventNetwork, actuate, pause,@@ -31,6 +33,7 @@ ) where import Control.Monad+import Control.Monad.IO.Class import Data.IORef import Reactive.Banana.Combinators@@ -225,9 +228,16 @@ . Prim.mapE (fmap last . sequence . map (unM . unFM) ) . unE --- | Lift an 'IO' action into the 'Moment' monad.+-- $liftIO+-- +-- > liftIO :: Frameworks t => IO a -> Moment t a+--+-- Lift an 'IO' action into the 'Moment' monad.++{-# DEPRECATED liftIONow "Use liftIO instead." #-}+-- | Deprecated. Use 'liftIO' instead. liftIONow :: Frameworks t => IO a -> Moment t a-liftIONow = M . Prim.liftIONow+liftIONow = liftIO -- | Lift an 'IO' action into the 'Moment' monad, -- but defer its execution until compilation time.@@ -327,6 +337,6 @@ -- inside a 'reactimate'. newEvent :: Frameworks t => Moment t (Event t a, a -> IO ()) newEvent = do- (addHandler, fire) <- liftIONow $ newAddHandler+ (addHandler, fire) <- liftIO $ newAddHandler e <- fromAddHandler addHandler return (e,fire)
src/Reactive/Banana/Internal/DependencyGraph.hs view
@@ -17,12 +17,12 @@ {----------------------------------------------------------------------------- Dependency graph data type ------------------------------------------------------------------------------}--- depdendency graph+-- dependency graph data Deps a = Deps { dChildren :: Map a [a] -- children depend on their parents , dParents :: Map a [a] , dRoots :: Set a- } deriving (Eq,Show)+ } deriving (Show) -- convenient queries children deps x = maybe [] id . Map.lookup x $ dChildren deps
src/Reactive/Banana/Internal/Phantom.hs view
@@ -10,8 +10,6 @@ Frameworks, FrameworksD, ) where -import Reactive.Banana.Internal.Types2- -- | Class constraint on the type parameter @t@ of the 'Moment' monad. -- -- Indicates that we can add input and output to an event network.
src/Reactive/Banana/Internal/PulseLatch0.hs view
@@ -2,7 +2,7 @@ reactive-banana ------------------------------------------------------------------------------} {-# LANGUAGE Rank2Types, RecursiveDo, ExistentialQuantification,- TypeSynonymInstances #-}+ TypeSynonymInstances, FlexibleInstances #-} module Reactive.Banana.Internal.PulseLatch0 where import Control.Applicative@@ -24,14 +24,12 @@ import Data.Hashable import Data.Unique.Really import qualified Data.Vault as Vault-import qualified Data.HashMap.Lazy as Map import Data.Functor.Identity import System.IO.Unsafe import Debug.Trace -type Map = Map.HashMap type Deps = Deps.Deps debug s m = m
src/Reactive/Banana/Internal/Types2.hs view
@@ -8,10 +8,11 @@ import Control.Applicative import Control.Monad+import Control.Monad.IO.Class import Control.Monad.Fix import qualified Reactive.Banana.Internal.EventBehavior1 as Prim-+import Reactive.Banana.Internal.Phantom {-| @Event t a@ represents a stream of events as they occur in time. Semantically, you can think of @Event t a@ as an infinite list of values@@ -57,3 +58,6 @@ instance MonadFix (Moment t) where mfix f = M $ mfix (unM . f) instance Functor (Moment t) where fmap f = M . fmap f . unM++instance Frameworks t => MonadIO (Moment t) where+ liftIO = M . Prim.liftIONow