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. |
|||
00:23
jgaz left
|
|||
jack9 | nqp | 02:26 | |
can a parameter be both positional and named | 02:32 | ||
Nemokosch | Could you give an example? | 03:06 | |
jack9 | sub f(<pos-or-named>$x) { $x } f(1) # 1 f(:x(1)) # 1 | 03:10 | |
@Nemokosch | 03:11 | ||
rf | jack9: multi sub | 03:14 | |
m: multi sub f(:$x) { say $x }; multi sub f($x) { say $x }; f(4); f(:x<abc>); | |||
camelia | 4 abc |
||
rf | m: multi sub f(:$x) { say $x }; multi sub f($x) { f(:$x) }; f(4); f(:x<abc>); | 03:15 | |
camelia | 4 abc |
||
jack9 | looks cumbersome but ok | ||
jaguart | m: multi sub f(:$x) { say $x }; multi sub f($x) { say $x }; f(4); f(:x<abc>); | 03:16 | |
camelia | 4 abc |
||
jaguart | m: multi sub f(:$x) { say $x }; multi sub f($x) { say $x }; f(4); f(:yabc>); | ||
camelia | ===SORRY!=== Error while compiling <tmp> Missing required term after infix at <tmp>:1 ------> lti sub f($x) { say $x }; f(4); f(:yabc>⏏); expecting any of: prefix term |
||
rf | You may be able to use slurpies | ||
jaguart | m: multi sub f(:$x) { say $x }; multi sub f($x) { say $x }; f(4); f(y:<abc>); | ||
camelia | ===SORRY!=== Error while compiling <tmp> Unsupported use of y///. In Raku please use: tr///. at <tmp>:1 ------> }; multi sub f($x) { say $x }; f(4); f(y⏏:<abc>); |
||
jaguart | argh | ||
m: multi sub f(:$x) { say $x }; multi sub f($x) { say $x }; f(4); f(:y<abc>); | 03:17 | ||
camelia | 4 Cannot resolve caller f(:y(Str)); none of these signatures matches: (:$x) ($x) in block <unit> at <tmp> line 1 |
||
jaguart | so even though you passed in one arg (a pair) it was NOT matched against the multi with 1 arg | ||
rf | Yes | ||
I am trying to understand how it does this, but I think it will be awhile. | 03:18 | ||
Moar code is plentiful | |||
jaguart | we need to be able to create sigs that say 'and no named args' somehow | ||
rf | m: multi sub f(:$x) { say $x }; multi sub f($x) { f(:$x) }; f(4); f((x => 123)); | 03:19 | |
camelia | 4 x => 123 |
||
rf | If you wrap in parens it counts as a pair. | ||
jaguart | yeah - but when writing utils you dont really want to hamstring the caller | 03:20 | |
rf | m: multi sub f(:$x) { say $x }; multi sub f($x) { f(:$x) }; f(4); f: x => 123; | ||
camelia | ===SORRY!=== Error while compiling <tmp> Bogus statement at <tmp>:1 ------> sub f($x) { f(:$x) }; f(4); f: x => 123;⏏ expecting any of: prefix term |
||
rf | m: multi sub f(:$x) { say $x }; multi sub f($x) { f(:$x) }; f(4); f: (x => 123); | ||
camelia | WARNINGS for <tmp>: 4 Useless use of constant value x => 123 in sink context (line 1) Useless use of "x => 123" in sink context (line 1) |
||
rf | m: multi sub f(:$x) { say $x }; multi sub f($x) { f(:$x) }; f(4); f: :x<abc> | 03:21 | |
camelia | WARNINGS for <tmp>: 4 Useless use of constant value :x<abc> in sink context (line 1) Useless use of ":x<abc>" in sink context (line 1) |
||
rf | m: multi sub f(:$x) { say $x }; multi sub f($x) { f(:$x) }; f(4); f: :x<abc>; | 03:22 | |
camelia | WARNINGS for <tmp>: 4 Useless use of ":x<abc>" in sink context (line 1) Useless use of constant value :x<abc> in sink context (line 1) |
||
rf | I'm gonna quit while im ahead hahaha | ||
jaguart | even `multi sub (Pair:D $p )` doesnt seem to work | ||
rf | You have to wrap, same reason 1, 2, 3, 4 can be interpreted as args rather than a list iirc | ||
03:58
rf left
06:00
jaguart left,
jaguart joined
|
|||
Nemokosch | Yes, I think this is plain old syntactic ambiguity | 07:56 | |
So it's not like Pairs are reinterpreted as named arguments - this calling syntax is for named arguments | 08:03 | ||
09:09
dakkar joined
13:20
discord-raku-bot left
13:38
jgaz joined
13:56
rf joined
16:12
Heptite left
16:13
discord-raku-bot joined
16:25
stevied_test left
16:28
discord-raku-bot left,
discord-raku-bot joined
16:49
stevied_test joined
17:35
dakkar left
18:22
Heptite joined
18:56
NemokoschKiwi joined
19:00
NemokoschKiwi left
19:56
ab5tract joined
20:31
ab5tract left
|
|||
stevied | can someone point me the docs for handling args for a raku command line script? can't find it | 20:47 | |
looking for how to do getopt, specifically | |||
ok, just found it: docs.raku.org/language/create-cli | 20:48 | ||
21:08
rf left
21:13
rf joined
|
|||
Nemokosch | Getopt::Long6 is pretty good, too | 21:25 | |
and it integrates with sub MAIN reasonably well | |||
22:02
rf left
22:18
guifa_ left
22:25
deoac joined
|
|||
deoac | I would like to create a regex like this: `^ h <foo> e <foo> l <foo> l <foo> o <foo> $` | 22:27 | |
`I tried 'Hello'.comb.join(<foo>)` without success | |||
Any ideas? | 22:28 | ||
Nemokosch | hm, not sure you can generate such a regex just yet. However, this time around, it is actually close, RakuAST code generation reached the experimental stage | 22:35 | |
for now, the "stable solution" would involve EVAL | |||
jaguart | m: ("rx/ " ~ "Hello".comb.join(<foo>) ~ " /").EVAL | 22:41 | |
camelia | ( no output ) | ||
jaguart | m: ("rx/ " ~ "Hello".comb.join(<foo>) ~ " /").EVAL.raku | ||
camelia | ( no output ) | ||
jaguart | m: ("rx/ " ~ "Hello".comb.join(<foo>) ~ " /").EVAL.raku.say | 22:42 | |
camelia | rx/ Hfooefoolfoolfooo / | ||
jaguart | would be cool if the evalbot did $_.say if there was no output... | ||
deoac | Thanks, I'll give it a shot! | 22:50 | |
Nemokosch | m: ("rx/ " ~ "Hello".comb.join('<foo>') ~ " /").EVAL.raku.say | 23:00 | |
probably the quotes help | |||
by default, <foo> would be like word quoting, more or less like 'foo' in this case | 23:01 | ||
deoac | Bingo! Exactly what I needed. | 23:05 |