Yampa- Library for programming hybrid systems.

Copyright(c) Antony Courtney and Henrik Nilsson Yale University 2003
LicenseBSD-style (see the LICENSE file in the distribution)
Safe HaskellNone



Derived utility definitions.


  • Possibly add impulse :: VectorSpace a k => a -> Event a But to do that, we need access to Event, which we currently do not have.
  • The general arrow utilities should be moved to a module FRP.Yampa.Utilities.
  • I'm not sure structuring the Yampa "core" according to what is core functionality and what's not is all that useful. There are many cases where we want to implement combinators that fairly easily could be implemented in terms of others as primitives simply because we expect that that implementation is going to be much more efficient, and that the combinators are used sufficiently often to warrant doing this. E.g. switch should be a primitive, even though it could be derived from pSwitch.
  • Reconsider recur. If an event source has an immediate occurrence, we'll get into a loop. For example: recur now. Maybe suppress initial occurrences? Initial occurrences are rather pointless in this case anyway.



sampleWindow :: Int -> Time -> SF a (Event [a]) #

Window sampling

First argument is the window length wl, second is the sampling interval t. The output list should contain (min (truncate (T/t) wl)) samples, where T is the time the signal function has been running. This requires some care in case of sparse sampling. In case of sparse sampling, the current input value is assumed to have been present at all points where sampling was missed.