This channel is intended for people just starting with the Raku Programming Language (raku.org). Logs are available at irclogs.raku.org/raku-beginner/live.html
Set by lizmat on 8 June 2022.
lizmat and yet another Rakudo Weekly News hit the Net: rakudoweekly.blog/2023/03/13/2023-11-ainions/ (yesterday already :-) 14:10
ToddAndMargo regex question.  in the following string "1.2.3.4" where only the dots are consistent and the numbers will vary, how do I  locate the last dot and delete the dot and everything after it? 18:43
This is what I have so far: 18:47
$x="1.2.3.4"; $x~~s/  (.*) $( Q[.] )  /Z/; print $0 ~"\n"; print "$x\n";
1.2.3
Z4
it works, but it is ugly
Have not figured ot how to use "$" to mean the end of the line 18:49
Nahita $s.subst(/ '.' <-[.]>* $$/) is an alternative; it matches a literal dot, followed by anything-but-dot 0 or more times until the end of a line 19:16
$$ marks end-of-line, $ does end-of-string
second argument-less .subst removes what matches, so the last dot and what's after it till the end are gone 19:17
the anything-but-dot there helps pinpoint the last dot 19:18
Nemokosch > Have not figured ot how to use "$" to mean the end of the line 19:19
whitespace would help here; $() specifically means "make a Scalar value of it"
ToddAndMargo Is there any way to just drop the ` $x~~s/  (.*) $( Q[.] )  /Z/` and grab $0 without first assigning the `s/` to $x? 19:39
Nahita well after removing things, what's left is equivalent to $0.Str, no? so $x.subst(/ '.' <-[.]>* $$/) 20:18
or you can match the other part with $x.match(/ .* <?before '.'> /) 20:19
that gives a match object
ToddAndMargo actually I meant with a regex 20:22
Nemokosch these are all regexes
ToddAndMargo Thank you! 20:24
ToddAndMargo Found a pretty way! 20:35
my $x="1.2.3.4"; S/ (.*) $( Q[.] ) // given $x; print $0 ~ "\n";
1.2.3
yoreei Hello, I was wondering why specifying a type constraint breaks the following code snippet: 20:39
$_="a,b,c,d";
dd split(',',$_);                 #("a", "b", "c", "d").Seq
my @A=split(',',$_);
dd @A;                           #Array @A = ["a", "b", "c", "d"]
my Array @A2=split(',',$_);
dd @A2;                         #Type check failed for an element of @A2; expected Array but got Str ("a")
                                       # in block <unit> at ./raku.raku line 194
For @A, the Seq is eagered into an Array, but not for @A2. I would have expected that it works in both cases
The error message is also a bit strange. It looks as if it's trying to give only the first element of the Seq to @A2
Can anybody help me make sense of this?
Nemokosch Array @something means an Array whose elements are... Arrays 20:43
m: Array @foo; say @foo.WHAT; 20:44
Raku eval Exit code: 1 ===SORRY!=== Error while compiling /home/glot/main.raku Two terms in a row at /home/glot/main.raku:1 ------> Array⏏ @foo; say @foo.WHAT; expecting any of: infix infix stopper statement end statement modifier statement modifier loop
Nemokosch oops
m: my Array @foo; say @foo.WHAT;
Raku eval (Array[Array])
Nemokosch if you want to specify the type constraint on the symbol itself, use the is trait 20:45
m: my @foo is List; say @foo.WHAT;
Raku eval (List)
yoreei That's interesting. I am reading Learning Perl 6 and they have some examples like: 20:52
    my Int $number;
    $number = 137;
    $number = 'Hamadryas';  # NOPE! Error
So Int here describes the type that the container $number holds, the same way Array described what the array A2 holds?
Nemokosch in this analogy, "the array A2" holds multiple things, it doesn't have an identity on its own 20:54
its elements have identities each
actually, you cannot even set a default value for the array - you can set a default value for an individual element of it 20:55
m: my @foo is default(42); say ++@foo[22];
Raku eval 43
yoreei Thanks, Nemokosch, things are clearer now :) 21:00
Nemokosch no problem, and keep it up ^^ 21:02