appLeft/appRight/appBoth choose which pattern donates structure when a pattern of functions meets a pattern of values
When a pattern of functions is applied to a pattern of values (Applicative style), the two patterns’ timespans must be reconciled, and Strudel offers three strategies that differ in where the resulting whole timespan comes from. appBoth takes the intersection of the function-hap and value-hap timespans, so both patterns constrain structure. appLeft keeps the whole from the function/left/inner pattern, preserving its onsets and structure. appRight keeps the whole from the value/right/outer pattern. The named operators (|+, +|, |+|, etc.) are sugar over these three, so knowing which side donates structure explains why the same arithmetic yields different rhythms.
Examples
// note(“c3 e3”) |+ note(“0 7”) -> appLeft (structure from left) // note(“c3 e3”) +| note(“0 7”) -> appRight (structure from right) // note(“c3 e3”) |+| note(“0 7”) -> appBoth (intersection)
Assessment
For note("c3 e3 g3") |+ note("0 7"), predict the number of onsets per cycle and justify it, then rewrite with +| and explain the structural difference.