There is nothing like union for an elerea signal because of how the elerea network is modeled. The elerea signal contains exactly one value at each step, so there is no reasonable way to combine arbitrary values ββat the same time. However, there are several different ways to combine signals, depending on how you combine the values.
unions :: [Signal a] -> Signal [a] unions = sequence -- or Data.Traversable.sequenceA
or you can stack directly through the entrances
foldS :: (a -> b -> b) -> b -> [Signal a] -> Signal b foldS fb signals = foldr (\signal acc -> f <$> signal <*> acc) (return b) signals -- I think a right fold is more efficient, but it depends on elerea internals and I'm not sure
If you really don't care about the value and just want to make sure the signal is on, you can use
unions_ :: [Signal a] -> Signal () unions_ = sequence_
John l
source share