On Wed, Feb 12, 2020 at 8:12 AM Aureliano Guedes <guedes.aureli...@gmail.com>
wrote:

>
>
> On Wed, Feb 12, 2020 at 1:09 PM Andy Bach <andy_b...@wiwb.uscourts.gov>
> wrote:
>
>> > So, the problem is you didn't call the same var you had declared.
>>
>> my $foo = * **2;
>>
>> > Then you call
>>
>> foo(2).say
>>
>> > Missing the $
>> D'oh!  Thanks.
>>
>> > About the
>>
>> my @a = * **2;
>>
>> > Your suggestion works
>>
>> @a[0](2)
>>
>> > or
>>
>> @a[0].(2)
>>
>> > But I would appreciate an explanation about why `$a[0](0)` didn't work.
>>
>> Same reason as mine didn't work "$a" of "$a[0]" is *not* the same
>> variable as @a - raku doesn't swap sigils, so arrays always use @ even when
>> they're being dereferenced (?) to a single element - unlike Perl5
>>
> Now I see. I din't know that. Thanks. I must study better Raku.
>

Hi Aureliano, watch about a minute of this Damian Conway video--where he
shows the new Raku (Perl6) sigil table:

https://youtu.be/Nq2HkAYbG5o?t=568

HTH, Bill.



> ------------------------------
>> *From:* Aureliano Guedes <guedes.aureli...@gmail.com>
>> *Sent:* Tuesday, February 11, 2020 7:00 PM
>> *To:* Andy Bach <andy_b...@wiwb.uscourts.gov>; perl6-users <
>> perl6-us...@perl.org>
>> *Subject:* Re: variable as subroutine?
>>
>> Sorry, I sent my answer just for you.
>>
>> So, the problem is you didn't call the same var you had declared.
>>
>> my $foo = * **2;
>>
>> Then you call
>>
>> foo(2).say
>>
>> Missing the $
>> Try:
>>
>> $foo(2).say
>>
>> or
>>
>> say $foo(2)
>>
>>
>> About the
>>
>> my @a = * **2;
>>
>> Your suggestion works
>>
>> @a[0](2)
>>
>> or
>>
>> @a[0].(2)
>>
>> But I would appreciate an explanation about why `$a[0](0)` didn't work.
>>
>>
>> On Tue, Feb 11, 2020 at 9:45 PM Andy Bach <andy_b...@wiwb.uscourts.gov>
>> wrote:
>>
>> > I think it should be like this:
>>
>> > my $foo = * **2;
>> { ... }
>> > say $foo(4)
>> 16
>>
>> That's what the doc says, but that's not what my install version says.  I
>> do get
>> > my $foo = * **2;
>> { ... }
>>
>> but say foo get the "unknown sub" error
>>
>> > But I have another point::
>>
>> > my @a = * **2;
>> > @a(2)
>> Invocant of method 'CALL-ME' must be a type object of type 'List', not an
>> object instance of type 'Array'.  Did you forget a 'multi'?
>>   in block <unit> at <unknown file> line 1
>> Yeah, I'd be surprised if that worked
>>
>> > $a[0](2)
>> ===SORRY!=== Error while compiling:
>> Variable '$a' is not declared. Did you mean '@a'?
>> ------> <BOL>⏏$a[0](2)
>>
>> raku doesn't swap sigils anymore, so it should be
>> @a[0](2)
>>
>> maybe, pass the param, to the first bucket in @a which is holding a sub,
>> so run it  - works here
>> > my @a = * **2;
>> [{ ... }]
>> > say @a[0](4);
>> 16
>>
>> as does ".()"
>> > say @a[0].(5);
>> 25
>> ------------------------------
>> *From:* Aureliano Guedes <guedes.aureli...@gmail.com>
>> *Sent:* Tuesday, February 11, 2020 6:36 PM
>> *To:* Andy Bach <andy_b...@wiwb.uscourts.gov>
>> *Subject:* Re: variable as subroutine?
>>
>> I think it should be like this:
>>
>> > my $foo = * **2;
>> { ... }
>> > say $foo(4)
>> 16
>>
>> But I have another point::
>>
>> > my @a = * **2;
>> [{ ... }]
>> > @a(2)
>> Invocant of method 'CALL-ME' must be a type object of type 'List', not an
>> object instance of type 'Array'.  Did you forget a 'multi'?
>>   in block <unit> at <unknown file> line 1
>>
>> > $a[0](2)
>> ===SORRY!=== Error while compiling:
>> Variable '$a' is not declared. Did you mean '@a'?
>> ------> <BOL>⏏$a[0](2)
>>
>>
>>
>> On Tue, Feb 11, 2020 at 8:43 PM Andy Bach <andy_b...@wiwb.uscourts.gov>
>> wrote:
>>
>> >The * * * call generates a WhateverCode block. This is expecting 2
>> arguments.
>>
>> -> $x { $x * $x } is taking one argument.
>>
>> > The best documentation would probably be :
>> https://docs.raku.org/type/Whatever
>>
>> so, from:
>> Multiple * in one expression generate closures with as many arguments:
>>
>> my $c = * + *;          # same as   -> $x, $y { $x + $y }
>> Using * in complex expressions will also generate closures:
>>
>> my $c = 4 * * + 5;      # same as   -> $x { 4 * $x + 5 }
>>
>> The * *  * the parser says "one whatever, one math op (*) and one more
>> whatever"
>> my $foo =  $x, $y { $x + $y };
>>
>> so,
>> my $foo = *  **2;
>> should do $x * $x? Though I see
>>
>> > my $foo = * **2;
>> { ... }
>> say foo(4);
>> ===SORRY!=== Error while compiling:
>> Undeclared routine:
>>     foo used at line 1
>>
>> but '&' works
>> > my &foo = * **2;
>> { ... }
>> > foo(4);
>> 16
>> > my &c = * **2;
>> { ... }
>> > say c(4);
>> 16
>>
>>
>>
>>
>>
>> ------------------------------
>> *From:* Simon Proctor <simon.proc...@gmail.com>
>> *Sent:* Tuesday, February 11, 2020 9:27 AM
>> *To:* Andy Bach <andy_b...@wiwb.uscourts.gov>
>> *Cc:* perl6-users <perl6-us...@perl.org>
>> *Subject:* Re: variable as subroutine?
>>
>> The * * * call generates a WhateverCode block. This is expecting 2
>> arguments.
>>
>> -> $x { $x * $x } is taking one argument.
>>
>> The best documentation would probably be :
>> https://docs.raku.org/type/Whatever
>>
>> Hope that helps.
>>
>> (For giggles earlier I made this dumb example of functional programming)
>>
>>
>> my &ident = {$_};
>> my &sq = {$_ * $_};
>> sub trinar( &test, &true, &false, *@values ) { @values.map( -> $v {
>> &test($v) ?? &true($v) !! &false($v) } ) };
>> trinar( *.is-prime, &sq,&ident, ^30 ).say
>>
>> Enjoy. ;)
>>
>> On Tue, 11 Feb 2020 at 15:22, Andy Bach <andy_b...@wiwb.uscourts.gov>
>> wrote:
>>
>> I have a few less related questions
>> >> those are 3 ways to write the same sub:
>>
>>     sub foo ($x) { $x * $x }
>>     my &foo = -> $x { $x * $x }
>>     my &foo = * * *;
>>
>> > A Note on Marc's comment:
>> my &foo = * * *
>> is not the same as:
>> my &foo = -> $x { $x * $x }
>> it is the same  as:
>> my &foo = -> $x, $y { $x * $y }
>>
>> Okay, "* * *" - how does that work?  How is it different than
>> -> $x { $x * $x }
>> ?  It needs two params?
>>
>> I followed the callable link but that left me with more questions:
>>
>> method CALL-ME
>> method CALL-ME(Callable:D $self: |arguments)
>> This method is required for postfix:«( )» and postfix:«.( )». It's what
>> makes an object actually call-able and needs to be overloaded to let a
>> given object act like a routine. If the object needs to be stored in a
>> &-sigiled container, is has to implement Callable.
>>
>> class A does Callable {
>>     submethod CALL-ME(|c){ 'called' }
>> }
>> my &a = A;
>> say a(); # OUTPUT: «called␤»
>>
>> That second "postfix" operator, means
>> say a.();  # also outputs "called"
>>
>> but what is the "pipe c" signature doing for the submethod?
>> ------------------------------
>> *From:* Simon Proctor <simon.proc...@gmail.com>
>> *Sent:* Tuesday, February 11, 2020 3:17 AM
>> *To:* ToddAndMargo <toddandma...@zoho.com>
>> *Cc:* perl6-users <perl6-us...@perl.org>
>> *Subject:* Re: variable as subroutine?
>>
>> If you can store a subroutine in a variable then you can pass said
>> subroutine to another one as an argument.
>>
>> This leads us into the joys of functional programming.
>>
>> And you may have used it already and not even realised.
>>
>> The .map and .grep methods (and .reduce and bunch of others) all expect a
>> callable code block (that might be a subroutine) as a function.
>>
>> This :
>>
>> my @a = (1..10).map( * ** 2 )
>>
>> and this :
>>
>> my &sq = sub ($v) { $v ** 2 };
>> my @a = (1..10).map( &sq );
>>
>> are doing the same thing. Except the second one has the &sq function
>> available for other things.
>>
>> (A Note on Marc's comment * * * is not the same as -> $x { $x * $x } it
>> is the same  as -> $x, $y { $x * $y } )
>>
>> You can then start doing things like storing functions as values in
>> hashes and doing all *kinds* of fun stuff.
>>
>> Welcome to the tip of the iceberg.
>>
>> Simon
>>
>>
>> On Tue, 11 Feb 2020 at 03:21, ToddAndMargo via perl6-users <
>> perl6-us...@perl.org> wrote:
>>
>> Hi All,
>>
>> Is Larry using his magic powder again?
>>
>> Can I declare a subroutine as a variable?
>>
>>      my $abc = my sub (UInt $u, Str $s, Int $I) {
>>
>> How would I use it?
>>
>> And why would do such a thing?
>>
>> -T
>>
>>
>>
>> --
>> Simon Proctor
>> Cognoscite aliquid novum cotidie
>>
>> http://www.khanate.co.uk/
>>
>>
>>
>> --
>> Simon Proctor
>> Cognoscite aliquid novum cotidie
>>
>> http://www.khanate.co.uk/
>>
>>
>>
>> --
>> Aureliano Guedes
>> skype: aureliano.guedes
>> contato:  (11) 94292-6110
>> whatsapp +5511942926110
>>
>>
>>
>> --
>> Aureliano Guedes
>> skype: aureliano.guedes
>> contact:  (11) 94292-6110
>> WhatsApp +5511942926110
>>
>
>
> --
> Aureliano Guedes
> skype: aureliano.guedes
> contato:  (11) 94292-6110
> whatsapp +5511942926110
>

Reply via email to