The above type is a generalization for:
sample :: Signal a -> [a]
Get an infinite list of samples from a
Signal
The elements in the list correspond to the values of the
Signal
at consecutive clock cycles
sample s == [s0, s1, s2, s3, ...
NB: This function is not synthesizable