Note that this is not subsumed by Signal.applicativeInstance because
Signal.applicativeInstance requires a Concurrent[F]
since it non-deterministically zips elements together while our
Functor
instance has no other constraints.
Note that this is not subsumed by Signal.applicativeInstance because
Signal.applicativeInstance requires a Concurrent[F]
since it non-deterministically zips elements together while our
Functor
instance has no other constraints.
Separating the two instances allows us to make the Functor
instance
more general.
We put this in a SignalLowPriorityImplicits
trait to resolve ambiguous
implicits if the Signal.applicativeInstance is applicable, allowing
the Applicative
instance to be chosen.