Yampa 0.10.2 → 0.10.3
raw patch · 3 files changed
+38/−3 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- FRP.Yampa.Event: instance Eq a => Eq (Event a)
- FRP.Yampa.Event: instance Forceable a => Forceable (Event a)
- FRP.Yampa.Event: instance Functor Event
- FRP.Yampa.Event: instance NFData a => NFData (Event a)
- FRP.Yampa.Event: instance Ord a => Ord (Event a)
- FRP.Yampa.Event: instance Show a => Show (Event a)
- FRP.Yampa.Forceable: instance (Forceable a, Forceable b) => Forceable (a, b)
- FRP.Yampa.Forceable: instance (Forceable a, Forceable b, Forceable c) => Forceable (a, b, c)
- FRP.Yampa.Forceable: instance (Forceable a, Forceable b, Forceable c, Forceable d) => Forceable (a, b, c, d)
- FRP.Yampa.Forceable: instance (Forceable a, Forceable b, Forceable c, Forceable d, Forceable e) => Forceable (a, b, c, d, e)
- FRP.Yampa.Forceable: instance Forceable ()
- FRP.Yampa.Forceable: instance Forceable Bool
- FRP.Yampa.Forceable: instance Forceable Char
- FRP.Yampa.Forceable: instance Forceable Double
- FRP.Yampa.Forceable: instance Forceable Float
- FRP.Yampa.Forceable: instance Forceable Int
- FRP.Yampa.Forceable: instance Forceable Integer
- FRP.Yampa.Forceable: instance Forceable a => Forceable (Maybe a)
- FRP.Yampa.Forceable: instance Forceable a => Forceable [a]
- FRP.Yampa.Point2: instance (RealFloat a, Show a) => Show (Point2 a)
- FRP.Yampa.Point2: instance RealFloat a => AffineSpace (Point2 a) (Vector2 a) a
- FRP.Yampa.Point2: instance RealFloat a => Eq (Point2 a)
- FRP.Yampa.Point2: instance RealFloat a => Forceable (Point2 a)
- FRP.Yampa.Point3: instance RealFloat a => AffineSpace (Point3 a) (Vector3 a) a
- FRP.Yampa.Point3: instance RealFloat a => Eq (Point3 a)
- FRP.Yampa.Point3: instance RealFloat a => Forceable (Point3 a)
- FRP.Yampa.Task: instance Applicative (Task a b)
- FRP.Yampa.Task: instance Functor (Task a b)
- FRP.Yampa.Task: instance Monad (Task a b)
- FRP.Yampa.Vector2: instance (RealFloat a, Show a) => Show (Vector2 a)
- FRP.Yampa.Vector2: instance RealFloat a => Eq (Vector2 a)
- FRP.Yampa.Vector2: instance RealFloat a => Forceable (Vector2 a)
- FRP.Yampa.Vector2: instance RealFloat a => VectorSpace (Vector2 a) a
- FRP.Yampa.Vector3: instance (RealFloat a, Show a) => Show (Vector3 a)
- FRP.Yampa.Vector3: instance RealFloat a => Eq (Vector3 a)
- FRP.Yampa.Vector3: instance RealFloat a => Forceable (Vector3 a)
- FRP.Yampa.Vector3: instance RealFloat a => VectorSpace (Vector3 a) a
- FRP.Yampa.VectorSpace: instance (Eq a, Floating a) => VectorSpace (a, a) a
- FRP.Yampa.VectorSpace: instance (Eq a, Floating a) => VectorSpace (a, a, a) a
- FRP.Yampa.VectorSpace: instance (Eq a, Floating a) => VectorSpace (a, a, a, a) a
- FRP.Yampa.VectorSpace: instance (Eq a, Floating a) => VectorSpace (a, a, a, a, a) a
- FRP.Yampa.VectorSpace: instance VectorSpace Double Double
- FRP.Yampa.VectorSpace: instance VectorSpace Float Float
+ FRP.Yampa.Event: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (FRP.Yampa.Event.Event a)
+ FRP.Yampa.Event: instance FRP.Yampa.Forceable.Forceable a => FRP.Yampa.Forceable.Forceable (FRP.Yampa.Event.Event a)
+ FRP.Yampa.Event: instance GHC.Base.Alternative FRP.Yampa.Event.Event
+ FRP.Yampa.Event: instance GHC.Base.Applicative FRP.Yampa.Event.Event
+ FRP.Yampa.Event: instance GHC.Base.Functor FRP.Yampa.Event.Event
+ FRP.Yampa.Event: instance GHC.Classes.Eq a => GHC.Classes.Eq (FRP.Yampa.Event.Event a)
+ FRP.Yampa.Event: instance GHC.Classes.Ord a => GHC.Classes.Ord (FRP.Yampa.Event.Event a)
+ FRP.Yampa.Event: instance GHC.Show.Show a => GHC.Show.Show (FRP.Yampa.Event.Event a)
+ FRP.Yampa.Forceable: instance (FRP.Yampa.Forceable.Forceable a, FRP.Yampa.Forceable.Forceable b) => FRP.Yampa.Forceable.Forceable (a, b)
+ FRP.Yampa.Forceable: instance (FRP.Yampa.Forceable.Forceable a, FRP.Yampa.Forceable.Forceable b, FRP.Yampa.Forceable.Forceable c) => FRP.Yampa.Forceable.Forceable (a, b, c)
+ FRP.Yampa.Forceable: instance (FRP.Yampa.Forceable.Forceable a, FRP.Yampa.Forceable.Forceable b, FRP.Yampa.Forceable.Forceable c, FRP.Yampa.Forceable.Forceable d) => FRP.Yampa.Forceable.Forceable (a, b, c, d)
+ FRP.Yampa.Forceable: instance (FRP.Yampa.Forceable.Forceable a, FRP.Yampa.Forceable.Forceable b, FRP.Yampa.Forceable.Forceable c, FRP.Yampa.Forceable.Forceable d, FRP.Yampa.Forceable.Forceable e) => FRP.Yampa.Forceable.Forceable (a, b, c, d, e)
+ FRP.Yampa.Forceable: instance FRP.Yampa.Forceable.Forceable ()
+ FRP.Yampa.Forceable: instance FRP.Yampa.Forceable.Forceable GHC.Integer.Type.Integer
+ FRP.Yampa.Forceable: instance FRP.Yampa.Forceable.Forceable GHC.Types.Bool
+ FRP.Yampa.Forceable: instance FRP.Yampa.Forceable.Forceable GHC.Types.Char
+ FRP.Yampa.Forceable: instance FRP.Yampa.Forceable.Forceable GHC.Types.Double
+ FRP.Yampa.Forceable: instance FRP.Yampa.Forceable.Forceable GHC.Types.Float
+ FRP.Yampa.Forceable: instance FRP.Yampa.Forceable.Forceable GHC.Types.Int
+ FRP.Yampa.Forceable: instance FRP.Yampa.Forceable.Forceable a => FRP.Yampa.Forceable.Forceable (GHC.Base.Maybe a)
+ FRP.Yampa.Forceable: instance FRP.Yampa.Forceable.Forceable a => FRP.Yampa.Forceable.Forceable [a]
+ FRP.Yampa.Point2: instance (GHC.Float.RealFloat a, GHC.Show.Show a) => GHC.Show.Show (FRP.Yampa.Point2.Point2 a)
+ FRP.Yampa.Point2: instance GHC.Float.RealFloat a => FRP.Yampa.AffineSpace.AffineSpace (FRP.Yampa.Point2.Point2 a) (FRP.Yampa.Vector2.Vector2 a) a
+ FRP.Yampa.Point2: instance GHC.Float.RealFloat a => FRP.Yampa.Forceable.Forceable (FRP.Yampa.Point2.Point2 a)
+ FRP.Yampa.Point2: instance GHC.Float.RealFloat a => GHC.Classes.Eq (FRP.Yampa.Point2.Point2 a)
+ FRP.Yampa.Point3: instance GHC.Float.RealFloat a => FRP.Yampa.AffineSpace.AffineSpace (FRP.Yampa.Point3.Point3 a) (FRP.Yampa.Vector3.Vector3 a) a
+ FRP.Yampa.Point3: instance GHC.Float.RealFloat a => FRP.Yampa.Forceable.Forceable (FRP.Yampa.Point3.Point3 a)
+ FRP.Yampa.Point3: instance GHC.Float.RealFloat a => GHC.Classes.Eq (FRP.Yampa.Point3.Point3 a)
+ FRP.Yampa.Task: instance GHC.Base.Applicative (FRP.Yampa.Task.Task a b)
+ FRP.Yampa.Task: instance GHC.Base.Functor (FRP.Yampa.Task.Task a b)
+ FRP.Yampa.Task: instance GHC.Base.Monad (FRP.Yampa.Task.Task a b)
+ FRP.Yampa.Vector2: instance (GHC.Float.RealFloat a, GHC.Show.Show a) => GHC.Show.Show (FRP.Yampa.Vector2.Vector2 a)
+ FRP.Yampa.Vector2: instance GHC.Float.RealFloat a => FRP.Yampa.Forceable.Forceable (FRP.Yampa.Vector2.Vector2 a)
+ FRP.Yampa.Vector2: instance GHC.Float.RealFloat a => FRP.Yampa.VectorSpace.VectorSpace (FRP.Yampa.Vector2.Vector2 a) a
+ FRP.Yampa.Vector2: instance GHC.Float.RealFloat a => GHC.Classes.Eq (FRP.Yampa.Vector2.Vector2 a)
+ FRP.Yampa.Vector3: instance (GHC.Float.RealFloat a, GHC.Show.Show a) => GHC.Show.Show (FRP.Yampa.Vector3.Vector3 a)
+ FRP.Yampa.Vector3: instance GHC.Float.RealFloat a => FRP.Yampa.Forceable.Forceable (FRP.Yampa.Vector3.Vector3 a)
+ FRP.Yampa.Vector3: instance GHC.Float.RealFloat a => FRP.Yampa.VectorSpace.VectorSpace (FRP.Yampa.Vector3.Vector3 a) a
+ FRP.Yampa.Vector3: instance GHC.Float.RealFloat a => GHC.Classes.Eq (FRP.Yampa.Vector3.Vector3 a)
+ FRP.Yampa.VectorSpace: instance (GHC.Classes.Eq a, GHC.Float.Floating a) => FRP.Yampa.VectorSpace.VectorSpace (a, a) a
+ FRP.Yampa.VectorSpace: instance (GHC.Classes.Eq a, GHC.Float.Floating a) => FRP.Yampa.VectorSpace.VectorSpace (a, a, a) a
+ FRP.Yampa.VectorSpace: instance (GHC.Classes.Eq a, GHC.Float.Floating a) => FRP.Yampa.VectorSpace.VectorSpace (a, a, a, a) a
+ FRP.Yampa.VectorSpace: instance (GHC.Classes.Eq a, GHC.Float.Floating a) => FRP.Yampa.VectorSpace.VectorSpace (a, a, a, a, a) a
+ FRP.Yampa.VectorSpace: instance FRP.Yampa.VectorSpace.VectorSpace GHC.Types.Double GHC.Types.Double
+ FRP.Yampa.VectorSpace: instance FRP.Yampa.VectorSpace.VectorSpace GHC.Types.Float GHC.Types.Float
- FRP.Yampa.Miscellany: fDiv :: RealFrac a => a -> a -> Integer
+ FRP.Yampa.Miscellany: fDiv :: (RealFrac a) => a -> a -> Integer
- FRP.Yampa.Miscellany: fDivMod :: RealFrac a => a -> a -> (Integer, a)
+ FRP.Yampa.Miscellany: fDivMod :: (RealFrac a) => a -> a -> (Integer, a)
- FRP.Yampa.Miscellany: fMod :: RealFrac a => a -> a -> a
+ FRP.Yampa.Miscellany: fMod :: (RealFrac a) => a -> a -> a
Files
- CHANGELOG +4/−0
- Yampa.cabal +1/−1
- src/FRP/Yampa/Event.hs +33/−2
CHANGELOG view
@@ -1,3 +1,7 @@+2015-10-02 Ivan Perez <ivan.perez@keera.co.uk>+ * src:/ Event instances of Applicative and Alternative.+ * Yampa.cabal: Version bump (0.10.3).+ 2015-06-19 Ivan Perez <ivan.perez@keera.co.uk> * src:/ instances of DeepSeq (see #5). * Yampa.cabal: Deepseq added to dependencies. Version bump (0.10.2).
Yampa.cabal view
@@ -1,5 +1,5 @@ name: Yampa-version: 0.10.2+version: 0.10.3 cabal-version: >= 1.8 license: BSD3 license-file: LICENSE
src/FRP/Yampa/Event.hs view
@@ -78,7 +78,9 @@ -- (==) :: Event a -> Event a -> Bool -- (<=) :: Event a -> Event a -> Bool +import Control.Applicative import Control.DeepSeq (NFData(..))+import Data.Functor import FRP.Yampa.Diagnostics import FRP.Yampa.Forceable@@ -156,6 +158,26 @@ ------------------------------------------------------------------------------+-- Applicative instance+------------------------------------------------------------------------------++instance Applicative Event where+ pure = Event+ NoEvent <*> _ = NoEvent+ Event f <*> x = f <$> x+++------------------------------------------------------------------------------+-- Alternative instance+------------------------------------------------------------------------------++instance Alternative Event where+ empty = NoEvent+ NoEvent <|> r = r+ l <|> _ = l+++------------------------------------------------------------------------------ -- Forceable instance ------------------------------------------------------------------------------ @@ -211,11 +233,17 @@ ------------------------------------------------------------------------------ -- | Tags an (occurring) event with a value ("replacing" the old value).+--+-- Applicative-based definition:+-- tag = ($>) tag :: Event a -> b -> Event b e `tag` b = fmap (const b) e -- | Tags an (occurring) event with a value ("replacing" the old value). Same -- as 'tag' with the arguments swapped.+--+-- Applicative-based definition:+-- tagWith = (<$) tagWith :: b -> Event a -> Event b tagWith = flip tag @@ -238,12 +266,12 @@ -- | Left-biased event merge (always prefer left event, if present). lMerge :: Event a -> Event a -> Event a-le `lMerge` re = event re Event le+lMerge = (<|>) -- | Right-biased event merge (always prefer right event, if present). rMerge :: Event a -> Event a -> Event a-le `rMerge` re = event le Event re+rMerge = flip (<|>) -- | Unbiased event merge: simultaneous occurrence is an error.@@ -252,6 +280,9 @@ -- | Event merge parameterized by a conflict resolution function.+--+-- Applicative-based definition:+-- mergeBy f re le = (f <$> re <*> le) <|> re <|> le mergeBy :: (a -> a -> a) -> Event a -> Event a -> Event a mergeBy _ NoEvent NoEvent = NoEvent mergeBy _ le@(Event _) NoEvent = le