Adam: Sweet! Are there implementations in Haskell?

Francesco: here is the problem that spurred me to write this email:

Tidal uses a |+| operator to conjoin what it calls OscPatterns. For instance, you can write:

  d1 $ sound "bd sn" |+| speed "3" |+| pan "1"

to tell the sampler named d1, "play the bd (bass drum) sample at phase 0 and the sn (snare drum) sample at pahse 1/2. Speed both up by a factor of 3, and pan both to the right speaker". (Phase takes values in the interval [0,1); upon reaching 1, a new cycle begins at 0.)

Tidal offers functions for changing patterns.  For instance, to slow down by a factor of 2 the frequency at which samples are triggered (that's how often a sample is played, not its playback speed), you can write this:

  d1 $ (slow 2 $ sound "bd sn") |+| speed "3" |+| pan "1"

Every instruction issued to d1 is a chain of |+|-separated OscPatterns. I often want to thread OscPatterns through functions before conjoining them. I therefore would like to be able to explain to Tidal that in whatever it finds to the right of a statement beginning with "d1 $", it should bind |+| after $. Then I would not need so many parentheses.

On Mon, Oct 19, 2015 at 1:01 PM, Francesco Ariis <fa-ml@ariis.it> wrote:
On Mon, Oct 19, 2015 at 12:39:04PM -0700, Jeffrey Brown wrote:
> Does anybody else think it would be nice if a library's author had only to
> decide its operators' precedence relative to each other, and could let
> users decide for themselves how fast its operators should bind relative to
> operators from another library?

It is true that fixity is ordinal, not cardinal, but I guess letting the
user decide for themselves how to blend operators from different libraries
could lead to a fragmentation where I will find difficult to
read/interpret your code and viceversa.

Can you make an example where the 10 levels of precedence (plus function
application) wasn't enough for you/other devs?
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe



--
Jeffrey Benjamin Brown