Thank for sharing, I'll watch right now

On Wed, Feb 12, 2020 at 4:28 PM William Michels <w...@caa.columbia.edu>
wrote:

>
>
> 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
>>
>

-- 
Aureliano Guedes
skype: aureliano.guedes
contato:  (11) 94292-6110
whatsapp +5511942926110

Reply via email to