-- | Minimal FRP core. -- -- For documentation purposes only, to serve as a minimal FRP implementation. -- Based on Antony Courtney's thesis "Modeling User Interfaces in a -- Functional Language", page 48 -- (see https://www.antonycourtney.com/pubs/ac-thesis.pdf, page 61). -- -- Notes: -- -- - While 'time' is defined as "core", it is not a primitive in Yampa, and it -- is actually defined as the 'integral' of @1@ over time. -- -- - This does not include 'derivative'. -- -- - This does not include parallel switching combinators (see -- 'FRP.Yampa.Switches'). -- module FRP.Yampa.Core ( -- * Signal function SF -- * Stateless combinators , iPre , arr , (>>>) , first -- * Stateful combinators , loop -- | Instantly loops an SF, making the second output also the second -- input, using the fix combinator. This introduces a instant loop; -- without delays, that may lead to an infinite loop. , integral -- ** Switching upon certain events , Event(..) , switch -- ** Time -- | Note: The function 'time' is actually the 'integral' of @1@ over time. -- So, it's not really necessary. , Time , time ) where import FRP.Yampa