This channel is intended for people just starting with the Raku Programming Language ( Logs are available at
Set by lizmat on 8 June 2022.
00:00 hexology left, yjh left, deadmarshal_ left, lucs left, elcaro left, sjn left, sjn joined 00:02 hexology joined 00:05 lucs joined, elcaro joined 00:06 deadmarshal_ joined 03:15 kjp left 04:22 MasterDuke left 07:13 deoac left 07:54 dakkar joined 08:04 Manifest0 joined 08:21 tea3po joined 08:22 tea3po left, tea3po joined 08:24 teatwo left 08:35 ab5tract left, ab5tract joined
lizmat And yet another Rakudo Weekly News hits the Net: 12:05
12:56 deoac joined 14:16 camelia left 14:36 camelia joined 15:14 deoac left 15:30 deoac joined 16:36 dakkar left 17:21 deoac left 17:50 jgaz left
timemelon I'm trying to pass a list to a function and I think I'm messing up the implicit parenthesizing somehow 18:01
I have sub f(List:D @ints) { # ... }
and say f (1, 1, 2, 2, 2, 3);
I'm getting the error Type check failed in binding to parameter '@ints'; expected Positional[List] but got List ((1, 1, 2, 2, 2, 3)) 18:02
where am I going wrong? 18:03
lakmatiol @timemelonSee 18:15
timemelon ah thanks 18:20
so the type of an @ variable refers to the type of each element
lakmatiol yes 18:23
19:06 MasterDuke joined
nemokosch anyway, there is "no way" a List:U could get there 19:06
or at least it's controversial whether it should be allowed or not 19:07
@timemelon what languages have you used before, if I may? 19:09
timemelon my big ones are c, haskell, and apl 19:10
nemokosch great, I know no APL and have a very basic clue of what Haskell looks like... 19:11
I just wanted to say that something that has this @ sigil in front will violate a lot of ideas you may have about what "a variable" is
leomehraban I have this grammer: grammar Rix{ token TOP{ <statement>*%%';' } token statement{ [<proc_call> | <expr>] } token proc_call{ '.'<identifier> '['<expr>*%%',' ']' } token identifier{ \w+ } token expr{ '+' } }. However, when I do say(Rix.parse(".print[+];"));, it just says Nil. however, when I give it ".print[];", without the plus, it gives the expected result. 19:12
I'm still a bit confused with regexes, so it's very likely that I made some error, but I can't find it.
MasterDuke leomehraban: moritz is the grammar/regex expert, but you might be interested in to make your parsing of '[' <...> ']' easier 19:24
nemokosch what is this %% ? 19:31
> To also match trailing delimiters ( a, or a,a, ), you can use %% instead of %. 19:32
antononcube %% is the same as % -- as far as I can tell. I have seen it other's people code.
And, yes, I was puzzled by it too. 19:33
scullucs %% allows a trailing separator, while % does not. 19:42
Er, like @nemokosch mentioned. 19:43
antononcube @lucs Agh, good point!
nemokosch @leomehraban don't @ me at this but I think there is a phenomenon when a quantifier asterisk hard-locks to an empty match 19:44
also, does %% allow or mandate a trailing separator? 19:45
if it mandates one, the parsing should fail by all means
scullucs I believe it allows, not mandates.
(But who cares about my beliefs, better test 🙂 ) 19:46
nemokosch adding the comma after the plus did not help so that's definitely a hint
that wasn't the main issue 19:47
yes, there you go
<expr>+%%',' does work
MasterDuke,_%% isn't explicit about whether the trailing separator is optional or required 19:48
nemokosch maybe it's worth an issue says: 19:49
If you wish to allow the match to end after either side, use %% instead. Therefore / <ident>+ %% ',' / can match any of foo foo, foo,bar foo,bar, foo,bar,baz foo,bar,baz
I can just edit this one, rest assured 19:52
19:58 Manifest0 left
@leomehraban let me assume that you ultimately want this to work. I can't tell you why - apparently - %% hard-locks to an empty match when that's an available option but without using it, it's simple to write something that does work 20:03
token proc_call{ '.'<identifier> '[' [<expr>','?]* ']' }
it can also work by simply changing [<proc_call> | <expr>] to [<proc_call> || <expr>] 20:11
20:22 teatwo joined 20:25 tea3po left 20:40 deoac joined 21:14 deoac left