Yampa-0.14.9: Elegant Functional Reactive Programming Language for Hybrid Systems
Copyright(c) Ivan Perez 2014-2022
(c) George Giorgidze 2007-2012
(c) Henrik Nilsson 2005-2006
(c) Antony Courtney and Henrik Nilsson Yale University 2003-2004
LicenseBSD-style (see the LICENSE file in the distribution)
Maintainerivan.perez@keera.co.uk
Stabilityprovisional
Portabilitynon-portable (GHC extensions)
Safe HaskellSafe-Inferred
LanguageHaskell2010

FRP.Yampa.Basic

Description

Defines basic signal functions, and elementary ways of altering them.

This module defines very basic ways of creating and modifying signal functions. In particular, it defines ways of creating constant output producing SFs, and SFs that just pass the signal through unmodified.

It also defines ways of altering the input and the output signal only by inserting one value in the signal, or by transforming it.

Synopsis

Basic signal functions

identity :: SF a a Source #

Identity: identity = arr id

Using identity is preferred over lifting id, since the arrow combinators know how to optimise certain networks based on the transformations being applied.

constant :: b -> SF a b Source #

Identity: constant b = arr (const b)

Using constant is preferred over lifting const, since the arrow combinators know how to optimise certain networks based on the transformations being applied.

Initialization

(-->) :: b -> SF a b -> SF a b infixr 0 Source #

Initialization operator (cf. Lustre/Lucid Synchrone).

The output at time zero is the first argument, and from that point on it behaves like the signal function passed as second argument.

(-:>) :: b -> SF a b -> SF a b infixr 0 Source #

Output pre-insert operator.

Insert a sample in the output, and from that point on, behave like the given sf.

(>--) :: a -> SF a b -> SF a b infixr 0 Source #

Input initialization operator.

The input at time zero is the first argument, and from that point on it behaves like the signal function passed as second argument.

(-=>) :: (b -> b) -> SF a b -> SF a b infixr 0 Source #

Transform initial output value.

Applies a transformation f only to the first output value at time zero.

(>=-) :: (a -> a) -> SF a b -> SF a b infixr 0 Source #

Transform initial input value.

Applies a transformation f only to the first input value at time zero.

initially :: a -> SF a a Source #

Override initial value of input signal.