Temporary stuff.

FUNCTION: STREAM, STREAM -> STREAM
We often need to merge exactly two streams, and to deal with this frequent use case we use the  decorator illustrated in the following code which sets z[j] = 2*x[j] + 3*y[j].

@merge_2_e
f(x, y): return 2*x + 3*y
z = f(x, y)
SPLIT
FUNCTION:  STREAM -> LIST OF STREAMS
Split functions are functions that split a single stream into multiple streams. The split operation requires you to specify the number of output streams into which the input stream is split. 

Let g be a function that always returns a list of k values and let z be a stream. The following code creates a list, y, of k streams. Let g_i be the i-th value returned by g and let y_i be the i-th stream in y. The code makes

y_i[n] = g_i(z[n])
@split_e
    def h(v): return g(v)
y = h(z, num_out_streams=k)
For example, the following code creates streams x and y, and sets x[n] = 2*z[n], and sets y[n]=z[n]+3.

@split_e
    def h(v): return 2*v, 3+v
x, y = h(z, num_out_streams=2)
The special case of splitting a stream into two streams is common; so we use a decorator for that case which doesn’t require specifying the number of output streams. The following example is equivalent to the previous one.

@split_2_e
   def h(v): return 2*v, 3+v
x, y = h(z)

SPLIT

function: stream -> list of streams

Split functions are functions that split a single stream into multiple streams. The split operation requires you to specify the number of output streams into which the input stream is split.

Let g be a function that always returns a list of k values and let z be a stream. The following code creates a list, y, of k streams. Let g_i be the i-th value returned by g and let y_i be the i-th stream in y. The code makes

y_i[n] = g_i(z[n])

SPLIT

function: stream -> list of streams

Split functions are functions that split a single stream into multiple streams. The split operation requires you to specify the number of output streams into which the input stream is split.

Let g be a function that always returns a list of k values and let z be a stream. The following code creates a list, y, of k streams. Let g_i be the i-th value returned by g and let y_i be the i-th stream in y. The code makes

y_i[n] = g_i(z[n])