tails package:synthesizer-core

Only non-empty suffixes are processed. More oftenly we might need
zipWithTails :: (Read sig b, Transform2 sig a) =>
(b -> sig a -> a) -> sig b -> sig a -> sig a
this would preserve the chunk structure of sig a, but it is a bit more hassle to implement that.
Can be implemented more efficiently than just by zipWith and tails for other data structures.
only non-empty suffixes are processed
in contrast to zipWithTails it also generates the empty suffix (once)
in contrast to zipWithTails it appends infinitely many empty suffixes