Re: compunit classes

2019-11-19 Thread William Michels via perl6-users
Hi Richard,

Have you gotten a response to your query? I'd be interested to know
how this documentation is progressing.

Best Regards, Bill.

On Sat, Nov 16, 2019 at 8:28 AM Richard Hainsworth
 wrote:
>
> Hi,
>
> I'm sending an email rather than IRC to catch more feedback.
>
> There are several CompUnit::Repository classes, viz.
>
> AbsolutePath
>
> FileSystem
>
> Installable
>
> Installation
>
> Locally
>
> NQP
>
> Perl5
>
> Spec
>
> Unknown
>
>
> Would it be possible for someone to provide a line or two as to the
> purpose/use/use-case for each class. I'm trying to document these classes.
>
> Regards,
>
> Richard


Re: Question about "colon syntax" for calling other methods on 'self' inside a method

2019-11-19 Thread Brad Gilbert
$ by itself is a an anonymous state variable.

So these two lines would be exactly the same.

$.foo
(state $).foo

A feature was added where $.foo would instead be used for public attributes.
Since a public attribute just adds a method, it was allowed to use it to
call any method.
Which probably made it simpler to add.
(Note that calling a method on an anonymous variable doesn't make much
sense anyway, so there is no big loss.)

Basically it was made so that these two lines would be the same:

$.foo
$( self.foo() )

Using : on the method was probably just overlooked, because that is not
what that feature is meant for.

On Tue, Nov 19, 2019 at 12:04 AM Raymond Dresens 
wrote:

> Hello Vadim, Yary,
>
> Thanks for your feedback,
>
> I've filed an issue: https://github.com/rakudo/rakudo/issues/3306
>
> Yary, about the dollar sign,
>
> The snippet of code in the issue shows that expression "$.attribute"
> inside a method 'just works' for accessing individual attributes (or
> rather: implicitly invoking their accessors?), suggesting [to me] that the
> variable '$' can be used in the context of method lookup on "self". I would
> expect that it would work too when I try to invoke an attribute as a
> method...
>
> ...though solely printing '$' in a method yields "(Any)", not the same as
> printing "self"! Indeed: there's more going on that meets the eye, which
> makes me curious ;) Perhaps the docs mention why, I'll look for that when I
> have the opportunity to do so,
>
> Regards,
>
> Raymond.
>
> On Mon, 18 Nov 2019 at 18:13, Vadim Belman  wrote:
>
>>
>> I would say filing an issue might make sense in this case. Here is a
>> related comment from Jonathan:
>> https://github.com/rakudo/rakudo/issues/3222#issuecomment-539915286 –
>> and it explicitly states that $. is a shortcut for method calling.
>> Therefore, use of colon instead of braces should be a valid construct.
>>
>> Best regards,
>> Vadim Belman
>>
>> On Nov 18, 2019, at 11:40 AM, yary  wrote:
>>
>> I take that back! What is the dollar sign doing there in the '$.print:
>> ..." example?
>>
>> Try it without the dollar sign. Right now you're calling .print on the
>> anonymous variable '$'
>>
>> -y
>>
>>
>> On Mon, Nov 18, 2019 at 8:38 AM yary  wrote:
>>
>>> looks like a bug to me-file an issue on the rakudo GitHub
>>>
>>> On Sat, Nov 16, 2019 at 5:29 AM Raymond Dresens <
>>> raymond.dres...@gmail.com> wrote:
>>>
 Hello,

 I have a question related to the 'colon syntax' of Raku, which allows
 you to call methods without parenthesis like this:

 class Foo
 {
 method print($x, $y)
 {
 say "bar: {$x}, {$y}"
 }
 }

 my $a = Foo.new;

 $a.print: 3, 5; # ...this is what i mean with "colon syntax" ;)

 It is possible to use this syntax to call methods on 'self' as well:

 class Bar is Foo
 {
 method printDefault
 {
 self.print: 8, 12
 }
 }

 my $b = Bar.new;

 $b.printDefault;

 I use $. rather than 'self' in order to work with attributes inside
 methods in my classes, well, ... mostly, because it does not seem
 possible to do this (in rakudo, at least version 2019.07.1):

 class Baz is Foo
 {
 method printDefault
 {
 $.print: 8, 12
 }
 }

 This yields a "Confused" error, stating that it expects a so-called
 'colon pair'.

 Is this intentional? Because I'm kind of confused as well about this,

 I can live with this 'syntactical quirk', but I just keep wondering
 about it because I'd personally expect that this "$.methodname: $args"
 variant should "just work" as well...

 ...so "what gives"? ;)

 Thanks for your insights!

 Regards,

 Raymond.

>>> --
>>> -y
>>>
>>
>>