Observation : the set of all possible values forms a semigroup with {}.
Idea : similar to relieve working on arbitrary semigroups, signal can also work on arbitrary semigroups (not only {}). This is useful if a continuous time variable is defined not in term of successive states, but in term of successive diffs. If the diffs form a semigroup, we get the publisher for free.
Proposition :
Add arity 2 to signal : (signal semigroup flow). Arity 1 has same meaning as before, equivalent to (signal {} flow)
For consistency, add arity 1 to relieve, equivalent to (relieve {} flow)
It makes sense for {} to be the default semigroup, because it's always defined and idiomatic for continuous time.
Observation : the set of all possible values forms a semigroup with
{}
.Idea : similar to
relieve
working on arbitrary semigroups,signal
can also work on arbitrary semigroups (not only{}
). This is useful if a continuous time variable is defined not in term of successive states, but in term of successive diffs. If the diffs form a semigroup, we get the publisher for free.Proposition :
signal
:(signal semigroup flow)
. Arity 1 has same meaning as before, equivalent to(signal {} flow)
relieve
, equivalent to(relieve {} flow)
It makes sense for
{}
to be the default semigroup, because it's always defined and idiomatic for continuous time.Example for integers with
+
: