When you create these objects, a console message says to use [send $0-var] instead.
But sl/rl actually function differently than s/r $0-var because sl/rl are local to a subpatch,
and thus behave more like local variables (i.e., local only to the (sub)canvas in which
they appear).

Practical example: if I have an [until] loop inside another [until] loop, I can put the nested
one in a subpatch and use [sl br]/[rl br] for both cases (or even just sl/rl with no names). 
I don't have to keep track of variable names outside of the canvas I'm currently looking at.

With s/r I have to give different names to the variables.  This becomes cumbersome with
even moderately complex patches because you either have to rely on abstractions and
create extra files, or keep track of variable names ($0-br1, $0-br2, etc.).

-Jonathan