Receiver notation (a.msg(b)) and functional notation (msg(a,b)) are interchangeable in SuperCollider
SuperCollider offers two syntactically equivalent writing styles that compile to identical bytecode. In receiver notation, receiver.message(arguments), the object receives the message: 100.rand, 5.dup(20), 3.1415.round(0.1). In functional notation, message(receiver, arguments), the message is a function call with the receiver as its first argument: rand(100), dup(5, 20), round(3.1415, 0.1). Receiver.message(argument) is exactly equivalent to message(Receiver, argument). Receiver notation also allows chaining: 100.0.rand.round(0.01).dup(4). By convention, classes (capitalized) are almost always written in receiver notation — SinOsc.ar(440), not ar(SinOsc, 440). Knowing both matters because help files and community code mix them freely; the choice is a matter of clarity and personal preference.
Examples
5.dup(20); // receiver notation
dup(5, 20); // functional notation — identical result
3.1415.round(0.1); // receiver
round(3.1415, 0.1); // functional
Assessment
Rewrite 100.0.rand.round(0.01).dup(4) entirely in functional notation and count how many nested function calls result. Evaluate both forms and confirm the results match.