On 12/26/20 2:50 PM, Ralph Mellor wrote:
Is this .self with a better name?
No.
I know you've been progressing in your understanding of
OO in general, and Raku's in particular, since you wrote
this email. So I won't explain it for now, but rather just try
to confirm you now know what that bit of code is doing.
So, would you say you now understand that `.value` is a
method call on an "invocant" that is either explicitly written
to the left of the `.` or is implicitly whatever the current topic
is where the `.value` appears?
No idea since you hinted to a newbie like myself.
I do know that .value comes from the class definition
https://github.com/rakudo/rakudo/blob/5df809e29cd2e7ae496a33013b27d2f7b52c7f7d/src/Perl6/bootstrap.c/BOOTSTRAP.nqp#L3427
3427: Str.HOW.add_attribute(Str, BOOTSTRAPATTR.new(:name<$!value>,
:type(str), :box_target(1), :package(Str)));
And I would not say it was a method call. I would say
it is a "class" from
https://github.com/rakudo/rakudo/blob/5df809e29cd2e7ae496a33013b27d2f7b52c7f7d/src/Perl6/bootstrap.c/BOOTSTRAP.nqp#L19
19: my class BOOTSTRAPATTR {
So I still find the word "invocant" a bit bizarre.
https://www.merriam-webster.com/dictionary/invocant
Definition of invocant
: one that invokes
https://www.merriam-webster.com/dictionary/invokes
Definition of invoke
transitive verb
1a : to petition for help or support
b : to appeal to or cite as authority
2 : to call forth by incantation : conjure
3 : to make an earnest request for : solicit
4 : to put into effect or operation : implement
5 : bring about, cause
So from "context", what I pick up is that
1. it is an awful term to have used
2. that
24.cos
either the 24 appeals/requests to cos to do something
making the 24 the invocant,
or
.cos is the invocant and takes the 24 and appeals to
the code inside the method to "bring about" something.
The 24 may or may not be needed for the appeal, as
in ".rand"
So it is better to just tell me and not hint around.
I do appreciate your efforts a lot though. Who
"executes what" who be a better tactic.
-T