What do the official tests for this show?

On 11/16/19, Joseph Brenner <doom...@gmail.com> wrote:
> William Michels<w...@caa.columbia.edu>        wrote:
>
>> I went over this with Joe as well, and I was
>> equally confused.
>
> Part of our trouble was we were playing around with the
> routine form of comb (rather than the Str method), which
> had a bug in it with the :match option (which lizmat just fixed).
> Even when we tried the Right Thing it was still going wrong.
>
> But then, like I was saying at the time, I really needed to
> re-read the material on subroutine signatures-- I wasn't
> even sure if the ":match" flag was supposed to be positional
> or not-- a point Yary picked up on.
>
>> So if I understand what you're
>> saying correctly, if we see something like "Bool
>> :$match" that says we should drop the dollar-sign
>> ($) and enter ":match" to set "Bool" = True, and
>> thus return the list of match objects?
>
> Something like that.  The ":$match" declares a variable named
> $match for use inside the routine-- it also makes it a little
> simpler to work with an input variable also named $match.
>
> Take this as an example:
>
>     sub doom_flag (Bool :$flag) {
>         if $flag {  # declared by the sub signature, no "my $flag"
>             say "The flag is UP"
>         } else {
>             say "The flag is down."
>         }
>     }
>
>     doom_flag();  # The flag is down.
>
>     # All of the following invocations say:
>     #   The flag is UP
>
>     doom_flag( flag => True );
>     doom_flag( :flag );
>
>     my $flag = True;
>     doom_flag( flag => $flag );
>     doom_flag( :$flag );
>
> That last one is a funny short-cut for entering a Pair that's built-in
> to Raku: it's pretty common when you're working with named arguments to
> end up with code that looks redundant, like this:
>
>    make_connection(
>                     ip     =>  $ip,
>                     user =>  $user,
>                     pw   =>  $pw
>     );
>
> But you could just use "colon-pair"s and do it like this:
>
>    make_connection( :$ip, :$user, :$pw );
>
> Does this make more sense?  There's a few different idiomatic short-cuts
> here that I think are supposed to seem similar and suggest each other...
>
>
> On 11/16/19, William Michels <w...@caa.columbia.edu> wrote:
>> Hi Yary,
>>
>> I went over this with Joe as well, and I was equally confused. So if I
>> understand what you're saying correctly, if we see something like
>> "Bool :$match" that says we should drop the dollar-sign ($) and enter
>> ":match" to set "Bool" = True, and thus return the list of match
>> objects?
>>
>> On another note (or possibly the same note), I tried code similar to
>> Joe's with fair success. I was able to get the REPL to understand a
>> "True" or "False" parameter, but never in conjunction with a "$limit"
>> parameter. Is this the correct behaviour, and why?
>>
>>> #REPL
>> Nil
>>> say comb(/\w/, "a;b;c",  False).perl;
>> ().Seq
>>> say comb(/\w/, "a;b;c",  True).perl;
>> ("a",).Seq
>>> say comb(/\w+/, "a;b;c",  True).perl;
>> ("a",).Seq
>>> say comb(/\w+/, "a;b;c",  2).perl;
>> ("a", "b").Seq
>>> say comb(/\w+/, "a;b;c",  3).perl;
>> ("a", "b", "c").Seq
>>> say comb(/\w+/, "a;b;c",  4).perl;
>> ("a", "b", "c").Seq
>>> say comb(/\w+/, "a;b;c",  True).perl;
>> ("a",).Seq
>>> say comb(/\w+/, "a;b;c",  2, True).perl;
>> Too many positionals passed; expected 2 or 3 arguments but got 4
>>   in block <unit> at <unknown file> line 1
>>
>>> say comb(/\w+/, "a;b;c",  2, :True).perl;
>> Unexpected named argument 'True' passed
>>   in block <unit> at <unknown file> line 1
>>
>>> $*VM
>> moar (2019.07.1)
>>
>> Any help appreciated, Bill.
>>
>>
>>
>>
>> On Mon, Nov 11, 2019 at 9:46 AM yary <not....@gmail.com> wrote:
>>>
>>> The syntax is in the declaration you pasted in your email
>>>
>>> > multi sub    comb(Regex:D $matcher, Str:D $input, $limit = Inf, Bool
>>> > :$match)
>>>
>>> The colon in "Bool :$match" makes it a named argument. Not sure where
>>> definitive docs are, decent starting point is
>>> https://docs.perl6.org/type/Signature#Positional_vs._named_arguments
>>>
>>>
>>> -y
>>>
>>>
>>> On Sun, Nov 10, 2019 at 11:18 PM Joseph Brenner <doom...@gmail.com>
>>> wrote:
>>>>
>>>> Thanks, that form does what I want--
>>>>
>>>> I don't see how I could've understood that from the docs, though.
>>>> For example, I don't see any place where the :match adverb is
>>>> mentioned for either the method or routine form of comb.
>>>>
>>>>
>>>>
>>>> On 11/10/19, Elizabeth Mattijsen <l...@dijkmat.nl> wrote:
>>>> > dd "foobar".comb(/./, :g, :match);
>>>> > (「f」 「o」 「o」 「b」 「a」 「r」)
>>>> >
>>>> >> On 10 Nov 2019, at 23:46, Joseph Brenner <doom...@gmail.com> wrote:
>>>> >>
>>>> >> Can someone give me an example of how to use the comb routine to
>>>> >> return a list of match objects?
>>>> >>
>>>> >> The documentation here:
>>>> >>
>>>> >> https://docs.perl6.org/type/Str#routine_comb
>>>> >>
>>>> >> Mentions a boolean option to get match objects:
>>>> >>
>>>> >>> If $matcher is a Regex, each Match object is
>>>> >>> converted to a Str, unless $match is set.
>>>> >>
>>>> >> I gather that I must be reading this signature
>>>> >> wrong somehow, I can't get it to work:
>>>> >>
>>>> >>> multi sub    comb(Regex:D $matcher, Str:D $input, $limit = Inf,
>>>> >>> Bool
>>>> >>> :$match)
>>>> >>
>>>> >> I keep trying variations of things like this:
>>>> >>
>>>> >>    my @hits = comb(m/$search_pattern/, $chunk, 100, True);
>>>> >
>>
>

Reply via email to