This channel is intended for people just starting with the Raku Programming Language (raku.org). Logs are available at irclogs.raku.org/raku-beginner/live.html
Set by lizmat on 8 June 2022.
sampersand—2B +| +^2B == FF say $addition.function()(1, 2); # OUTPUT: «3␤» # OR say $addition.function.(1, 2); # OUTPUT: «3␤» is the () at the start explicit syntactic sugar for . in this case or is the fact that ()( and .( are the same a coincidence 20:26
sub squared( Int $num ) { $num² }; say squared($_) for ^5; # OUTPUT: «0␤1␤4␤9␤16␤» what's ^ for in ^5? 20:40
Oh that's a range
nahita3882 .() is short for () like .[] is for [] etc. (postcircumfixes listed here are the others) 21:48
operators are functions in disguise, sometimes they are in methods 21:49
in the case of these postcircumfix ones, the invocant is to implement CALL-ME etc.
that it's all uppercase means it's not expected to be called from the user side; it2s automatically called by the compiler when the corresponding sugar happens, i.e., .() for CALL-ME 21:50
kind of like the dunders of Python
in your first example, we infer that $addition.function is itself a callable and also evaluates to one 21:51
last thing to note is if you only "mention" the name of a callable (without & in front, so it's in the "verb" form, not "noun"), it gets called automatically 21:52
that's in play in the 3rd line in your first example 21:53
sampersand—2B +| +^2B == FF i got my example from teh operators page. I guess i wasnt super clear: .function.(1,2) makes sense, and it works if function is a field, because that way you aren't trying to call the method function like you would .function(1,2). What's not clear to me is why .function()(1,2) works the same way: wouldnt that call the field function with no args, then call that return value with two 23:41
args?