Stephen Tetley schrieb:
> On 22 February 2011 23:41, Evan Laforge <qdun...@gmail.com> wrote:

>> Can you write 'inst2 pitch = reverse (inst1 pitch)'?
> 
> Is 'inst2 pitch = reverse (inst1 pitch)' the backwards instrument? My
> first thought would be this is hard to write in any continuous
> language even functional/FRP.

Since SuperCollider is intended as realtime synthesizer it supports
certainly only causal signal processes, which 'reverse' is not. I do
not think that its internal design of linked nodes and arrays of input
and output buffers can be extended to do something like 'reverse'. If
lazy evaluation in Haskell would work properly, that is reliably without
memory leaks, then you could nicely combine causal processes (via lazy
evaluation) and non-causal processes like reverse (not lazy, but could
work on the same signal representation). Another nice example of
breaking the orchestra-score barrier is the effect of slowing down a
record containing synthesized music.

That said, I think separating causal and non-causal processes is a good
thing anyway, because e.g. feedback can be done reliably (i.e. without
deadlocks) only with causal arrows. However Haskell integrates both
causal processing (via arrows) and non-time restricted evaluation (via
laziness).

_______________________________________________
haskell-art mailing list
haskell-art@lurk.org
http://lists.lurk.org/mailman/listinfo/haskell-art

Reply via email to