On 07/18, Yann Orlarey wrote:
>
> Hi Oleg,
>
> Here is an implementation of apply. It's the closest I've found ;-). The
> idea is to pass to the op function a list of selectors that simulate the
> formal parameters but that can be created in arbitrary numbers.
(Heh ;) I tried to do something similar but I used ba.selector(i, N) rather
than route(). ba.selector doesn't work and I am not surprised).
> tsum((x, xs)) = sin(x)/cos(x) + tsum(xs);
> tsum(x) = sin(x)/cos(x);
>
> apply(N,op) = par(i,N,_) <: op(selectors(N))
> with {
> selectors(N) = par(i,N,selector(N,i));
> selector(N,i) = route(N,1,i+1,1);
> };
Ah, thanks a lot Yann! It seems to work.
Hmm. If only I understood why does it work ;) Say,
apply(N,op) = op(par(i,N, route(1,1,1,1)));
doesn't. It acts the same as si.bus() and has the same problem. Looks
like, "<:" above is essential part.
apply(N,op) = op(route(N,N, par(i,N, (i+1,i+1))));
process = apply(4, tsum);
doesn't even compile. Apparently because, unlike par(), route() doesn't
match to (x,xs). Indeed, isBoxPatternOp() doesn't even check isBoxRoute...
Please consider this as a feature request ;)
Thanks!
Oleg.
_______________________________________________
Faudiostream-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/faudiostream-users