Hi Yann,

On 07/17, Yann Orlarey wrote:
>
> I'm not sure that answers your question,

No it doesn't ;) probably I wasn't clear, please see below.

> but you can do that, for instance:

of course, you can always rewrite dsBus2int or anything else, but what
if you do not want to change the "wants-the-list" function?

Let me provide a stupid/artificial but simple example. Suppose you have

        tsum((x, xs)) = tan(x) + tsum(xs);
        tsum(x) = tan(x);

Now,
        process = si.bus(4) : tsum;

obviously won't work.

        process = tsum(si.bus(4));

works, but only because "tsum" is simple enough. Lets complicate it:

        tsum((x, xs)) = sin(x)/cos(x) + tsum(xs);
        tsum(x) = sin(x)/cos(x);

after this change

        process = tsum(si.bus(4));

no longer works as expected, it has 4*2 inputs. You have to do

        process(x1,x2,x3,x4) = tsum((x1,x2,x3,x4));
or
        process = \(x1,x2,x3,x4).(tsum((x1,x2,x3,x4)));

but this is very inconvenient and doesn't allow to specify the number
of inputs.

The best solution I was able to find is something like this:

        apply(1, op) = \(x1).                   (op((x1)));
        apply(2, op) = \(x1,x2).                (op((x1,x2)));
        apply(3, op) = \(x1,x2,x3).             (op((x1,x2,x3)));
        apply(4, op) = \(x1,x2,x3,x4).          (op((x1,x2,x3,x4)));
        apply(5, op) = \(x1,x2,x3,x4,x5).       (op((x1,x2,x3,x4,x5)));
        ...
        apply(32,op) = ...;

this allows to do

        process = apply(N, tsum);
        
as long as N is constant and <= 32. But this is not nice, and I do not
know how can I define apply(n, op) for any "n".

Oleg.



_______________________________________________
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users

Reply via email to