-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A replacement of Yampa based on Monadic Stream Functions. -- -- A Yampa replacement built using Dunai. @package bearriver @version 0.10.4 -- | Vector space type relation and basic instances. module FRP.Yampa.VectorSpace class (Eq a, Floating a) => VectorSpace v a | v -> a where v ^/ a = (1 / a) *^ v negateVector v = (- 1) *^ v v1 ^-^ v2 = v1 ^+^ negateVector v2 norm v = sqrt (v `dot` v) normalize v = if nv /= 0 then v ^/ nv else error "normalize: zero vector" where nv = norm v zeroVector :: VectorSpace v a => v (*^) :: VectorSpace v a => a -> v -> v (^/) :: VectorSpace v a => v -> a -> v negateVector :: VectorSpace v a => v -> v (^+^) :: VectorSpace v a => v -> v -> v (^-^) :: VectorSpace v a => v -> v -> v dot :: VectorSpace v a => v -> v -> a norm :: VectorSpace v a => v -> a normalize :: VectorSpace v a => v -> v instance FRP.Yampa.VectorSpace.VectorSpace GHC.Types.Float GHC.Types.Float instance FRP.Yampa.VectorSpace.VectorSpace GHC.Types.Double GHC.Types.Double instance (GHC.Classes.Eq a, GHC.Float.Floating a) => FRP.Yampa.VectorSpace.VectorSpace (a, a) a instance (GHC.Classes.Eq a, GHC.Float.Floating a) => FRP.Yampa.VectorSpace.VectorSpace (a, a, a) a instance (GHC.Classes.Eq a, GHC.Float.Floating a) => FRP.Yampa.VectorSpace.VectorSpace (a, a, a, a) a instance (GHC.Classes.Eq a, GHC.Float.Floating a) => FRP.Yampa.VectorSpace.VectorSpace (a, a, a, a, a) a -- | 3D vector abstraction (R^3). -- -- ToDo: Deriving Show, or provide dedicated show instance? module FRP.Yampa.Vector3 data RealFloat a => Vector3 a vector3 :: RealFloat a => a -> a -> a -> Vector3 a vector3X :: RealFloat a => Vector3 a -> a vector3Y :: RealFloat a => Vector3 a -> a vector3Z :: RealFloat a => Vector3 a -> a vector3XYZ :: RealFloat a => Vector3 a -> (a, a, a) vector3Spherical :: RealFloat a => a -> a -> a -> Vector3 a vector3Rho :: RealFloat a => Vector3 a -> a vector3Theta :: RealFloat a => Vector3 a -> a vector3Phi :: RealFloat a => Vector3 a -> a vector3RhoThetaPhi :: RealFloat a => Vector3 a -> (a, a, a) vector3Rotate :: RealFloat a => a -> a -> Vector3 a -> Vector3 a instance (GHC.Float.RealFloat a, GHC.Show.Show a) => GHC.Show.Show (FRP.Yampa.Vector3.Vector3 a) instance GHC.Float.RealFloat a => GHC.Classes.Eq (FRP.Yampa.Vector3.Vector3 a) instance GHC.Float.RealFloat a => FRP.Yampa.VectorSpace.VectorSpace (FRP.Yampa.Vector3.Vector3 a) a -- | 2D vector abstraction (R^2). -- -- ToDo: Deriving Show, or provide dedicated show instance? module FRP.Yampa.Vector2 data RealFloat a => Vector2 a vector2 :: RealFloat a => a -> a -> Vector2 a vector2X :: RealFloat a => Vector2 a -> a vector2Y :: RealFloat a => Vector2 a -> a vector2XY :: RealFloat a => Vector2 a -> (a, a) vector2Polar :: RealFloat a => a -> a -> Vector2 a vector2Rho :: RealFloat a => Vector2 a -> a vector2Theta :: RealFloat a => Vector2 a -> a vector2RhoTheta :: RealFloat a => Vector2 a -> (a, a) vector2Rotate :: RealFloat a => a -> Vector2 a -> Vector2 a instance (GHC.Float.RealFloat a, GHC.Show.Show a) => GHC.Show.Show (FRP.Yampa.Vector2.Vector2 a) instance GHC.Float.RealFloat a => GHC.Classes.Eq (FRP.Yampa.Vector2.Vector2 a) instance GHC.Float.RealFloat a => FRP.Yampa.VectorSpace.VectorSpace (FRP.Yampa.Vector2.Vector2 a) a -- | Affine space type relation. module FRP.Yampa.AffineSpace class (Floating a, VectorSpace v a) => AffineSpace p v a | p -> v, v -> a where p .-^ v = p .+^ (negateVector v) distance p1 p2 = norm (p1 .-. p2) origin :: AffineSpace p v a => p (.+^) :: AffineSpace p v a => p -> v -> p (.-^) :: AffineSpace p v a => p -> v -> p (.-.) :: AffineSpace p v a => p -> p -> v distance :: AffineSpace p v a => p -> p -> a -- | 2D point abstraction (R^2). -- -- ToDo: Deriving Show, or provide dedicated show instance? module FRP.Yampa.Point2 data RealFloat a => Point2 a Point2 :: !a -> !a -> Point2 a point2X :: RealFloat a => Point2 a -> a point2Y :: RealFloat a => Point2 a -> a instance (GHC.Float.RealFloat a, GHC.Show.Show a) => GHC.Show.Show (FRP.Yampa.Point2.Point2 a) instance GHC.Float.RealFloat a => GHC.Classes.Eq (FRP.Yampa.Point2.Point2 a) instance GHC.Float.RealFloat a => FRP.Yampa.AffineSpace.AffineSpace (FRP.Yampa.Point2.Point2 a) (FRP.Yampa.Vector2.Vector2 a) a -- | 3D point abstraction (R^3). module FRP.Yampa.Point3 data RealFloat a => Point3 a Point3 :: !a -> !a -> !a -> Point3 a point3X :: RealFloat a => Point3 a -> a point3Y :: RealFloat a => Point3 a -> a point3Z :: RealFloat a => Point3 a -> a instance GHC.Float.RealFloat a => GHC.Classes.Eq (FRP.Yampa.Point3.Point3 a) instance GHC.Float.RealFloat a => FRP.Yampa.AffineSpace.AffineSpace (FRP.Yampa.Point3.Point3 a) (FRP.Yampa.Vector3.Vector3 a) a module FRP.BearRiver type Time = Double type DTime = Double type SF m = MStreamF (ClockInfo m) type ClockInfo m = ReaderT DTime m identity :: Monad m => SF m a a constant :: Monad m => b -> SF m a b iPre :: Monad m => a -> SF m a a time :: Monad m => SF m () Time integral :: (Monad m, VectorSpace a s) => SF m a a integralFrom :: (Monad m, VectorSpace a s) => a -> SF m a a derivative :: (Monad m, VectorSpace a s) => SF m a a derivativeFrom :: (Monad m, VectorSpace a s) => a -> SF m a a data Event a Event :: a -> Event a NoEvent :: Event a noEvent :: Event a event :: a -> (b -> a) -> Event b -> a fromEvent :: Event t -> t isEvent :: Event t -> Bool tag :: Event a -> b -> Event b mergeBy :: (a -> a -> a) -> Event a -> Event a -> Event a lMerge :: Event a -> Event a -> Event a eventToMaybe :: Event a -> Maybe a maybeToEvent :: Maybe a -> Event a boolToEvent :: Bool -> Event () edge :: Monad m => SF m Bool (Event ()) edgeBy :: Monad m => (a -> a -> Maybe b) -> a -> SF m a (Event b) edgeFrom :: Monad m => Bool -> SF m Bool (Event ()) -- | Suppression of initial (at local time 0) event. notYet :: Monad m => SF m (Event a) (Event a) hold :: Monad m => a -> SF m (Event a) a loopPre :: Monad m => c -> SF m (a, c) (b, c) -> SF m a b after :: Monad m => Time -> b -> SF m a (Event b) (-->) :: Monad m => b -> SF m a b -> SF m a b accumHoldBy :: Monad m => (b -> a -> b) -> b -> SF m (Event a) b 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)) -> SF m a (col b) dSwitch :: Monad m => SF m a (b, Event c) -> (c -> SF m a b) -> SF m a b switch :: Monad m => SF m a (b, Event c) -> (c -> SF m a b) -> SF m a b parC :: Monad m => SF m a b -> SF m [a] [b] parC' :: Monad m => [SF m a b] -> SF m [a] [b] iterFrom :: Monad m => (a -> a -> DTime -> b -> b) -> b -> SF m a b reactimate :: IO a -> (Bool -> IO (DTime, Maybe a)) -> (Bool -> b -> IO Bool) -> SF Identity a b -> IO () dup :: t -> (t, t) swap :: (t1, t) -> (t, t1) instance GHC.Show.Show a => GHC.Show.Show (FRP.BearRiver.Event a) instance GHC.Base.Functor FRP.BearRiver.Event instance GHC.Base.Applicative FRP.BearRiver.Event module FRP.Yampa