
How do I make a Behavior of a bouncing motion? I want to reverse the velocity when the object goes beyond a certain position, but since the position depends on the velocity, I have a loop. Is there a way to make recursive behaviors, or am I going about this all wrong? bouncingPosition :: Behavior Double bouncingPosition = ??? bouncingVelocity :: Double -> Behavior TimeT -> Behavior Double bouncingVelocity v0 t = velocityB v0 t `switcher` ??? collision :: Event a -> Behavior Double -> Event Double collision e = once . filterMP (< -2) . snapshot_ e positionB :: Double -> Behavior Double -> Behavior Double -> Behavior Double positionB x0 v t = (x0 +) <$> liftA2 (*) v t velocityB :: Double -> Behavior Double -> Behavior Double velocityB v0 t = velocity v0 <$> t velocity :: Double -> TimeT -> Double velocity v0 t = v0 - 9.8 * t Thanks, Greg