<div dir="ltr">Adam: Sweet! Are there implementations in Haskell?<br><div><br></div><div>Francesco: here is the problem that spurred me to write this email:</div><div><br></div><div>Tidal uses a |+| operator to conjoin what it calls OscPatterns. For instance, you can write:</div><div><br></div><div>  d1 $ sound "bd sn" |+| speed "3" |+| pan "1"</div><div><br></div><div>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.)</div><div><br></div><div>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:</div><div><br></div><div>  d1 $ (slow 2 $ sound "bd sn") |+| speed "3" |+| pan "1"</div><div><br></div><div>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.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Oct 19, 2015 at 1:01 PM, Francesco Ariis <span dir="ltr"><<a href="mailto:fa-ml@ariis.it" target="_blank">fa-ml@ariis.it</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Mon, Oct 19, 2015 at 12:39:04PM -0700, Jeffrey Brown wrote:<br>
> Does anybody else think it would be nice if a library's author had only to<br>
> decide its operators' precedence relative to each other, and could let<br>
> users decide for themselves how fast its operators should bind relative to<br>
> operators from another library?<br>
<br>
</span>It is true that fixity is ordinal, not cardinal, but I guess letting the<br>
user decide for themselves how to blend operators from different libraries<br>
could lead to a fragmentation where I will find difficult to<br>
read/interpret your code and viceversa.<br>
<br>
Can you make an example where the 10 levels of precedence (plus function<br>
application) wasn't enough for you/other devs?<br>
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Jeffrey Benjamin Brown</div></div>
</div>