On 07/14, Till Bovermann wrote:
> Dear list,
>
> I am confused about this.
> I have the following function taking a list of arguments (note the inner
> brackets;
>
> ((( input args as list:
> reason being that this function will later be encapsulated into a recursion
> operator that applies the function multiple times; the recursion operator
> should not depend on number of inputs/outputs as long as they have the same
> dimensionality
> )))
>
>
> here's the function:
>
> ```
> dsm1_fbck((permanentIn, s0_prev, s1_prev, out_prev)) = permanentIn, s0, s1,
> out with {
> s0 = permanentIn - s1_prev + s0_prev;
> s1 = (s0 >=0) : select2(_, -1, 1); // bi-modal (for computation)
> out = s1 > 0; // make uni-modal
> };
> ```
>
> to my understanding, the function should have the same input and output
> dimensionality, however, this:
>
> ```
> process = dsm1_fbck((_, _, _, _));
> ```
>
> shows me a block diagram with 10(!) ins and 4 outs.
Let me provide a simple example. Suppose you have
twice(x) = x + x;
Now,
process = twice;
will work as expected, but
process = twice(_);
will have 2 inputs because this expands to
process = _ + _;
> How can I prevent this?
You can do
process(permanentIn, s0_prev, s1_prev, out_prev) =
dsm1_fbck((permanentIn, s0_prev, s1_prev, out_prev));
or
process = \(permanentIn, s0_prev, s1_prev,
out_prev).(dsm1_fbck((permanentIn, s0_prev, s1_prev, out_prev)));
or you can simply remove the extra parentheses:
dsm1_fbck(permanentIn, s0_prev, s1_prev, out_prev) = ...;
process = dsm1_fbck;
Oleg.
_______________________________________________
Faudiostream-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/faudiostream-users