An Interpolation represents a range of values between a starting and ending
value. The interpolation is also optionally transformed by an easing
function. The starting value is mapped to 0.0 and the ending value to 1.0.
When a number of steps is specified the interpolation is transformed into a
transducer, which may be run or composed with other transducers.
Interpolations may be transformed by map and product (functor and
semigroupal) to construct more complex interpolations.
The differences between an interpolation and a transducer are as follows:
An interpolation specifies a start and end value. When a number of steps
is given it becomes a transducer. When interpolations are combined in
parallel, with product, they always take the same amount of time when
converted to a transducer. Transducers combined in parallel may take
differing amounts of time.
A transducer can represent arbitrary FSMs, while an interpolation moves
from start to end value.
Transducers can be run. Interpolations must be transformed to
transducers to run.
Create a transducer that will produce the given number of values before it
stops. So, for example, calling forSteps(2) will create a transducer
that produces 2 values before it stops.
Create a transducer that will produce the given number of values before it
stops. So, for example, calling forSteps(2) will create a transducer
that produces 2 values before it stops.
The number of steps must be non-negative. 0 steps means a transducer that
stops immediately. 1 step will produce the start value for a half-open
interval and the stop value for a closed interval.