🦋 Welcome to Raku! raku.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: colabti.org/irclogger/irclogger_log/raku Set by ChanServ on 14 October 2019. |
|||
00:07
patrickz joined
00:11
patrickb left
|
|||
cpan-raku | New module released to CPAN! Red (0.1.4) by 03FCO | 00:20 | |
00:42
sena_kun left
00:43
lucasb left
00:44
patrickz left
00:45
brass left
00:47
johnjohn101 left
00:57
sena_kun joined
01:00
brass joined
|
|||
AlexDaniel | .tell sergot Sorry, I was in the middle of something, not sure if you received my late answer. Basically, you are free to do it if you think it's going to be better, but there's no guarantee that it will in fact be better this way. Now with more people with privs contributing should be easier, but again I can't promise anything :) | 01:01 | |
tellable6 | AlexDaniel, I'll pass your message to sergot | ||
02:01
unicodable6 left,
sourceable6 left,
statisfiable6 left,
reportable6 left,
coverable6 left,
notable6 left,
quotable6 left,
bloatable6 left,
benchable6 left,
releasable6 left,
greppable6 left,
squashable6 left,
nativecallable6 left,
bisectable6 left,
shareable6 left,
committable6 left
02:02
reportable6 joined,
bisectable6 joined,
sourceable6 joined,
coverable6 joined,
shareable6 joined,
nativecallable6 joined
02:03
squashable6 joined,
committable6 joined,
notable6 joined
02:04
benchable6 joined,
greppable6 joined,
statisfiable6 joined,
bloatable6 joined,
unicodable6 joined,
quotable6 joined,
releasable6 joined
02:05
Doc_Holliwood left
02:42
sena_kun left
02:57
sena_kun joined
03:57
evalable6 left,
evalable6 joined
04:25
mahmudov left
04:42
sena_kun left
04:55
sena_kun joined
05:55
sourceable6 left,
coverable6 left,
nativecallable6 left,
quotable6 left,
squashable6 left,
notable6 left,
bloatable6 left,
committable6 left,
releasable6 left,
reportable6 left,
benchable6 left,
shareable6 left,
greppable6 left,
statisfiable6 left,
unicodable6 left
05:56
bisectable6 left,
nativecallable6 joined,
squashable6 joined,
sourceable6 joined
05:57
greppable6 joined,
bisectable6 joined,
notable6 joined,
benchable6 joined,
reportable6 joined,
shareable6 joined,
bloatable6 joined,
statisfiable6 joined
05:58
coverable6 joined,
releasable6 joined,
committable6 joined
05:59
quotable6 joined,
unicodable6 joined
06:25
sauvin joined
06:41
sena_kun left
06:57
sena_kun joined
07:02
epony left
07:05
epony joined
07:19
horsepatat joined
07:45
jmerelo joined
07:50
veesh_ joined
07:52
veesh left,
veesh_ is now known as veesh
|
|||
squashable6 | 🍕 JJ++ submitted a review on pull request “Clarification of item an…”: github.com/Raku/doc/pull/3137#pull...-337975710 | 07:57 | |
🍕🍕🍕 First contribution by JJ++! ♥ | |||
🍕 JJ++ merged pull request “Clarification of item an…”: github.com/Raku/doc/pull/3137 | |||
Geth | doc/master: 4 commits pushed by threadless-screw++, (Juan Julián Merelo Guervós)++ | ||
07:58
Doc_Holliwood joined
|
|||
squashable6 | 🍕 JJ++ wrote a comment on “Cache generated documentation”: github.com/Raku/doc/issues/717#iss...-570495321 | 08:00 | |
Xliff | squashable6: status | 08:11 | |
squashable6 | Xliff, 🍕🍕 SQUASHathon is in progress! The end of the event in 2 days and ≈3 hours. See github.com/rakudo/rakudo/wiki/Mont...Squash-Day | ||
Xliff, Log and stats: gist.github.com/108474be1333314431...d5d36bf800 | |||
tellable6 | hey Xliff, you have a message: gist.github.com/00a174a73f96cac796...92cb67d9d4 | ||
jmerelo | Hum | ||
tellable6 | 2020-01-01T21:40:38Z #raku <tbrowder> jmerelo: ^^^ | 08:12 | |
jmerelo | I think this is just squashable working on autopilot | ||
Xliff | Doesn't look to be a squashathon for this month. | ||
jmerelo: Yep. | |||
jmerelo | .tell tbrowder raku-advent.blog is cool. | 08:14 | |
tellable6 | jmerelo, I'll pass your message to tbrowder | ||
08:17
wamba joined
08:35
wamba left
08:38
xinming_ joined
|
|||
Geth | doc: 107da69ab6 | (JJ Merelo)++ | README.md Clarifies cache closes #717 |
08:39 | |
squashable6 | 🍕 JJ++ closed issue “Cache generated documentation”: github.com/Raku/doc/issues/717 | ||
08:41
xinming left
|
|||
Geth | doc: bdae66fbfe | (JJ Merelo)++ | README.md Some reflow and rewriting |
08:41 | |
08:42
sena_kun left
08:56
sena_kun joined
08:57
scimon joined
|
|||
stoned75 | jmerelo ? | 08:57 | |
jmerelo | yep | ||
stoned75 | an example in doc/language/typesystem had me wondering for a couple of minutes, until I found in this file history a commit from you that now is making me wondering :) | 08:58 | |
jmerelo | stoned75: which one? | 08:59 | |
stoned75 | so if I may disturb you, I would like to have your comments on commit c9539cf2230f45fda3be25637ffa5c8ad469f5da about the enum exemple starting with enum E(<one two>) | ||
jmerelo | m: enum E(<one two>); my @keys = E::.values; say @keys.map: *.enums; | 09:00 | |
camelia | (Map.new((one => 0, two => 1)) Map.new((one => 0, two => 1))) | ||
stoned75 | see how the 'map: *.perl' was rewritten as 'map: *enums' ? | ||
jmerelo | right | 09:01 | |
stoned75 | it seems a bit odd to me. or at least I do not understand the purpose of the example | 09:02 | |
09:02
chloekek joined
|
|||
jmerelo | stoned75: that was more than a year ago. And I should have done that example separately, but I would say that since the example talks about keys _and_ values, the original one just returned keys | 09:02 | |
stoned75 | IC | 09:03 | |
jmerelo | But then it repeats the key-value mapping twice, so... | ||
stoned75 | hum I suppose I don't quite get the 'All of them turn the values into C<Str>' part | 09:04 | |
jmerelo | m: enum E(<one two>); say = E::.values; | 09:05 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Preceding context expects a term, but found infix = instead. Did you make a mistake in Pod syntax? at <tmp>:1 ------> 3enum E(<one two>); say =7⏏5 E::.values; |
||
jmerelo | m: enum E(<one two>); say E::.values; | ||
camelia | (one two) | ||
jmerelo | stoned75: I didn't write that part myself... But I guess it's because what you want is the enum object, not the string equivalent. | ||
m: enum E(<one two>); say E::.values[0] | |||
camelia | two | ||
jmerelo | m: enum E(<one two>); say E::.values[0].enums | ||
camelia | Map.new((one => 0, two => 1)) | ||
jmerelo | m: enum E(<one two>); say E::.values[0].^name | 09:06 | |
camelia | E | ||
jmerelo | m: enum E(<one two>); say E::.values[0].^mro | ||
camelia | ((E) (Int) (Cool) (Any) (Mu)) | ||
stoned75 | oh and btw, do you agree that the () serve no purpose in E(<one two>) ? | 09:07 | |
jmerelo | stoned75: I think that's the thing. E::.values returns the actual objects, of the actual type, E in this case. enums works on the type as well as the instances, so I guess that's the intention docs.raku.org/routine/enums | 09:08 | |
stoned75: right-on, yes. | |||
m: enum E <one two>; say E::.values | 09:09 | ||
camelia | (two one) | ||
jmerelo | stoned75: the thing is that, looking at the context, enums returns key and values for an enum. It's probably a bit misguided to modify the original instead of rewriting from scratch | 09:10 | |
m: enum E <one two>; say E.enums | |||
camelia | Map.new((one => 0, two => 1)) | ||
chloekek | Is there a reliable way to check (mechanically) whether a distribution allows redistribution? There’s of course the license field in META6.json but how reliable is it? | 09:11 | |
I want to mirror all versions of all distributions provided they are free software. | |||
But I’m going through each manually. :þ | 09:12 | ||
stoned75 | jmerelo: ok, thanks for your comments. I'll ponder this a bit more :) | ||
jmerelo | chloekek: I don't think it's even compared with the actual LICENSE file. | ||
chloekek | not going through each manually* | ||
Ah yeah, license files. | 09:13 | ||
jmerelo | stoned75: any time :-) | ||
chloekek | There is probably a Perl or Node.js library that has a function that takes a tarball and returns a license name. | ||
That implements all of the heuristics. | |||
jmerelo | chloekek: github does that. They might have released that thing... | 09:14 | |
chloekek | I’ll give that a try and then fall back to the license field in META6.json. | ||
Thanks. | |||
jmerelo | chloekek: sure :-) | ||
chloekek | I also want to extrac readmes and render them with pandoc. :) | 09:17 | |
stoned75 | hum. how can I get the origin of a method ? | 09:22 | |
lizmat | what do you mean by "the origin of a method| | 09:23 | |
"? | |||
the class it is actually defined in? | |||
stoned75 | I mean which class/role defines it | ||
lizmat | hmmm... | 09:24 | |
m: dd Str.^find_method("Int").package | 09:25 | ||
camelia | Str | ||
lizmat | m: dd Str.^find_method("elems").package | ||
camelia | Any | ||
stoned75 | cool. thanks ! | ||
jmerelo | chloekek: cool! | 09:31 | |
09:33
rindolf joined
09:44
jmerelo left
|
|||
Xliff | m: my @a = <1 2 3 4 5>; @a.splice(0, *, ()); @a.say; | 09:57 | |
camelia | [] | ||
Xliff | m: my @a = <1 2 3 4 5>; @a.WHERE.say; @a.splice(0, *, ()); @a.say; @a.WHERE.say | 10:14 | |
camelia | 140440692970344 [] 140440692970344 |
||
Xliff | m: my @a = <1 2 3 4 5>; @a.WHERE.say; @a.splice(0, *, ()); @a.say; @a.WHERE.say; @a = (); @a.WHERE.say | ||
camelia | 139683972896872 [] 139683972896872 139683972896872 |
||
Xliff | m: my @a = <1 2 3 4 5>; @a.WHERE.say; @a.splice(0, *); @a.say; @a.WHERE.say; @a = (); @a.WHERE.say | 10:15 | |
camelia | 140691319903136 [] 140691319903136 140691319903136 |
||
stoned75 | m: enum E <one two>; say (E.elems, E.^elems) | 10:19 | |
camelia | (1 2) | ||
stoned75 | even if I understand the result, I can't help being a bit troubled by this result :-} | 10:20 | |
E.elems returning 2 would make sense to me. what would break if it was ? | 10:21 | ||
m: enum E <one two>; say (one.^name, one.^elems, E.elems, E.^elems) | 10:24 | ||
camelia | (E 2 1 2) | ||
stoned75 | I'm even more wondering ;-) | ||
ahah. the thing is one and E are of the same type. | 10:25 | ||
chloekek | p6: enum E <one two>; .say for (E:U, E:D) X~~ (E, one) | 10:26 | |
camelia | True False True False |
||
chloekek | p6: enum E <one two>; for (E:U, E:D) X (E, one) -> ($t, $x) { say $t.perl, $x.perl, $t ~~ $x } | ||
camelia | E:UETrue E:UE::oneFalse E:DETrue E:DE::oneFalse |
||
chloekek | Ayy lmao. | 10:27 | |
p6: say 1 ~~ Int:U | |||
camelia | False | ||
chloekek | p6: enum E <one two>; say one ~~ E:U | ||
camelia | False | ||
chloekek | p6: say 1 ~~ Int:D | ||
camelia | True | ||
chloekek | p6: enum E <one two>; say one ~~ E:D | ||
camelia | True | ||
chloekek | I’m confused. | ||
p6: enum E <one two>; say E ~~ E:D | 10:28 | ||
camelia | False | ||
chloekek | p6: enum E <one two>; for (E:U, E:D) X (E, one) -> ($t, $x) { say $t.perl, ' ~~ ', $x.perl, ' = ', $t ~~ $x } | 10:30 | |
camelia | E:U ~~ E = True E:U ~~ E::one = False E:D ~~ E = True E:D ~~ E::one = False |
||
chloekek | p6: enum E <one two>; for (E:U, E:D) X (E, one) -> ($t, $x) { say $t.perl, ' ~~ ', $x.perl, ' = ', $x ~~ $t } | ||
camelia | E:U ~~ E = True E:U ~~ E::one = False E:D ~~ E = False E:D ~~ E::one = True |
||
chloekek | Ah, the order matters. ~~ is not commutative. | ||
moritz | indeed | ||
tellable6 | 2020-01-02T20:24:14Z #raku-dev <lizmat> moritz I thought old ircloge.perlgeek links would be redirected to colabti? | ||
moritz | the matcher/pattern is on the right | ||
chloekek | Which makes perfect sense. | ||
moritz | lizmat: I know of no such plans. But if anybody wants to invest more energy into it, I'm happy to have the irclog.perlgeek.de subdomain be a CNAME to wherver | 10:31 | |
stoned75 | so back to E.elems being 1 and not 2. am I the only one troubled by this ? ;-) | 10:33 | |
or even by the following ? ;-) | 10:34 | ||
m: enum E <one two>; E::.values == E::.keys | |||
camelia | WARNINGS for <tmp>: Useless use of "==" in expression ".values == E::.keys" in sink context (line 1) |
||
stoned75 | m: enum E <one two>; say E::.values == E::.keys | 10:35 | |
camelia | True | ||
chloekek | m: enum E <one two>; say E::.values.perl; say E::.keys.perl | ||
camelia | (E::one, E::two).Seq ("one", "two").Seq |
||
chloekek | With == you check if there are equally many of them. | ||
stoned75 | ah damned. | ||
chloekek | m: enum E <one two>; say E::.values == 2; | 10:36 | |
camelia | True | ||
chloekek | m: enum E <one two>; say E::.values eqv E::.keys; | 10:37 | |
camelia | False | ||
Xliff | m: enum E <one two>; say E::one ~~ E:D | 10:38 | |
camelia | True | ||
Xliff | m: enum E <one two>; say E:D ~~ E::one | ||
camelia | False | ||
Xliff | m: enum E <one two>; say E::one ~~ E::one | ||
camelia | True | ||
Xliff | m: enum E <one two>; say E::two ~~ E::one | ||
camelia | False | ||
stoned75 | m: enum E <one two>; E::.values.values == E::.keys.values | ||
camelia | WARNINGS for <tmp>: Useless use of "==" in expression ".values == E::.keys.values" in sink context (line 1) |
||
stoned75 | m: enum E <one two>; say E::.values.values == E::.keys.values | ||
camelia | True | ||
chloekek | cmp :p | 10:39 | |
or eqv | |||
stoned75 | m: enum E <one two>; say E::.values.values cmp E::.keys.values | ||
camelia | Same | ||
stoned75 | fun with enum | ||
chloekek | m: enum E <one two>; dd E::.values.values, E::.keys.values; | 10:40 | |
camelia | (E::one, E::two) ("one", "two") |
||
chloekek | Oh yeah cmp does string comparison. | ||
m: enum E <one two>; say E::.values.values eqv E::.keys.values; | |||
camelia | False | ||
10:41
sena_kun left
|
|||
chloekek | Oh no it doesn’t. | 10:41 | |
Oh it does sometimes. | 10:42 | ||
“cmp will first try to compare operands as strings (via coercion to Stringy), and, failing that, will try to compare numerically via the <=> operator or any other type-appropriate comparison operator. See also the documentation for the cmp operator.” | |||
It’s leg that does string comparison in every case. | |||
stoned75 | ahah I'm back to my original question ! | 10:43 | |
m: enum E <one two>; say E::.keys.values.map({.perl}) | |||
camelia | ("one" "two") | ||
stoned75 | m: enum E <one two>; say E::.values.values.map({.perl}) | ||
camelia | (E::one E::two) | ||
10:57
sena_kun joined
11:15
wamba joined
|
|||
xinming_ | termbin.com/63e7 <--- In this example, the whenever will always try to wait for result of @channel[0], so we don't need the final `await |@channel` statement. But when I changed `whenever @channel[0]` to `whenever @channel` I'll have to add the final `await @chanenl` thing. Anyone here would clarify this for me please? | 11:16 | |
And also, What is the right way to wait result for multiple channels in an array in this case please? | 11:17 | ||
Also, with `whenever @channel.map(*.receive) {... }` It'll also quite after we receive things once. | |||
So, what is the correct way to listen to multiple channels? I don't think something like for @channel -> $channel { whenever $channel { ... } } is the right perlish way to do this anyway. | 11:18 | ||
s/ 'await |@p' / 'await |@channel' / | 11:20 | ||
the reason I don't think the sollution right is: for @channel -> $channel { ... } This may cause problem when there are too many channels IMHO | 11:22 | ||
11:32
jmerelo joined
11:34
kensanata joined
|
|||
jmerelo | What's the deal with autowatch-test-repo? | 11:39 | |
11:52
mscha joined
|
|||
mscha | m: race for ^10 -> $i { sleep .5-$i/20; say $i } # Any way to pass batch and degree? | 11:53 | |
camelia | 0 1 2 3 4 5 6 7 8 9 |
||
mscha | m: (^10).race(:1batch, :10degree).map(-> $i { sleep .5-$i/20; say $i }); | ||
camelia | 9 8 7 6 5 4 3 2 1 0 |
||
mscha | Is there any way to supply batch size and degree when using race/hyper as a statement prefix? | 11:54 | |
xinming_ | mscha: I don't think so. Maybe someone will give some adverbs to statement prefix. :-) | 11:56 | |
mscha | m: for (^10).race(:1batch, :10degree) -> $i { sleep .5-$i/20; say $i } # doesn't DWIM | 11:58 | |
camelia | 0 1 2 3 4 5 6 7 8 9 |
||
mscha | m: race for (^10).race(:1batch, :10degree) -> $i { sleep .5-$i/20; say $i } # This works for some reason I don't understand | ||
camelia | 9 8 7 6 5 4 3 2 1 0 |
||
xinming_ | mscha: the (^10).race returns discorded result already | 12:00 | |
yea, statement prefix should have someway to be tunnable | 12:01 | ||
mscha | But why do I need `race for (^10).race ...`? | 12:02 | |
xinming_ | We need race for ... | ||
No need the (^10).race | |||
chloekek | m: (^10).race(:1batch, :10degree).map: -> $i { sleep .5-$i/20; say $i } | 12:04 | |
camelia | 9 8 7 6 5 4 3 2 1 0 |
||
chloekek | p6: sub hyperlöb(*@f) { my @r = @f.hyper.map({ &^f(@r) }).lazy }; say hyperlöb({ 1 }, { 2 }, { [+] @^s[0, 1] }) | 12:10 | |
camelia | [...] | ||
chloekek | p6: sub hyperlöb(*@f) { my @r = @f.hyper.map({ &^f(@r) }).lazy }; .say for hyperlöb({ 1 }, { 2 }, { [+] @^s[0, 1] }) | ||
Interesting, recursive lazy hyper seq is not happy. | |||
And camelia doesn’t respond with a timeout either. | 12:12 | ||
p6: sub löb(*@f) { my @r = @f.map({ &^f(@r) }).lazy }; .say for löb({ 1 }, { 2 }, { [+] @^s[0, 1] }) | |||
Ah camelia seems to be stuck. | 12:13 | ||
12:15
camelia left
|
|||
lizmat | info.jetbrains.com/idea-webinar-ja...-2020.html | 12:17 | |
weekly: info.jetbrains.com/idea-webinar-ja...-2020.html | |||
notable6 | lizmat, Noted! (weekly) | ||
lizmat | weekly: news.ycombinator.com/item?id=21943565 | 12:18 | |
notable6 | lizmat, Noted! (weekly) | ||
Xliff | chloekek: You killed camelia! <Insert obligatory South Park response, here> | 12:39 | |
Geth | doc: 1a6e507cca | (Stoned Elipot)++ | doc/Language/typesystem.pod6 Sync enum example with its (original?) intent ... At least as far as I understood it. Also, while here, drop unneeded parentheses in enum construction. |
||
squashable6 | 🍕🍕🍕 First contribution by stoned++! ♥ | ||
jmerelo | stoned75: hum. You have simply restored it to the state before correction. | 12:40 | |
stoned75: see below vvvvv | |||
12:41
wamba left
|
|||
jmerelo | m: enum E <one two>; say E.enums | 12:41 | |
evalable6 | Map.new((one => 0, two => 1)) | ||
jmerelo | I would say that was the original intent... | ||
Or maybe | |||
m: enum E <one two>; say E::.kv | 12:42 | ||
evalable6 | (two two one one) | ||
stoned75 | oh really ? sorry I misunderstood our earlier conversation then | ||
jmerelo | m: enum E <one two>; say E::.keys | ||
evalable6 | (two one) | ||
jmerelo | m: enum E <one two>; say E::.values | ||
evalable6 | (two one) | ||
jmerelo | No, what will not work | ||
this is the one: | |||
m: enum E <one two>; say E.enums | |||
evalable6 | Map.new((one => 0, two => 1)) | ||
12:42
sena_kun left
|
|||
jmerelo | Hum, not that either | 12:43 | |
It's probably OK, stoned. | |||
Forget it. | |||
stoned75 | jmerelo: hum... :-} | ||
jmerelo | If "get a list of types for the keys" means something, I guess the original, or your restored form, is it. | 12:44 | |
E::one is the actual type, so we're good. | |||
stoned75: thanks! | |||
stoned75 | ok great! what I took away is... enum are a bit strange :-} | 12:45 | |
jmerelo | stoned75: the thing is that the first sentence in that paragraph is kind of misleading. | ||
stoned75 | exactly! | ||
also the second sentence says 'values' and the 'third' is about the keys ! | 12:46 | ||
jmerelo | stoned75: maybe it would be better if we completed it with another example that actually returned the values | ||
although that's kinda easy | |||
xinming_ | jmerelo: Do you have time to check about my question? :-) | ||
The whenever @channel { ... } thing | 12:47 | ||
stoned75 | but to get the keys as type we do have to use E::.values :-} | ||
jmerelo | m: enum E <one two>; say ~E::.values[0] | ||
evalable6 | one | ||
jmerelo | xinming_: no, sorry, I didn't | ||
I can add some urgency as a label if it's critical, xinming_ | |||
m: enum E <one two>; say ~E::.values | 12:48 | ||
evalable6 | two one | ||
jmerelo | m: enum E <one two>; say E::.values | ||
evalable6 | (one two) | ||
12:48
camelia joined
|
|||
jmerelo | m: enum E <one two>; say E::.values[0].value | 12:48 | |
well... | |||
camelia | 1 | 12:49 | |
jmerelo | camelia++ | ||
But I don't know what took so long... | 12:50 | ||
stoned75: anyway, maybe I'll add something like the stuff above to clarify | |||
stoned75 | sure ! I admit I'm a bit skeptical, so I look forward to what you'll add :-) | 12:52 | |
jmerelo | stoned75: thanks anyway and as usual, great work :-) | 12:54 | |
stoned75 | my pleasure! | 12:55 | |
12:55
kensanata left
|
|||
xinming_ | jmerelo: not critical, If you are in channel, You can just backlog. I posted not long ago. | 12:55 | |
Maybe 3 or 4 screens | 12:56 | ||
jmerelo | xinming_: you mean this issue, right? github.com/Raku/doc/issues/3136 | ||
xinming_ | Nope | ||
that is the doc issue. | 12:57 | ||
jmerelo | xinming_: OK, let me check then | ||
12:57
sena_kun joined
|
|||
jmerelo | xinming_: you mean this? termbin.com/63e7 | 12:58 | |
xinming_: I'm no expert in concurrency, but I see several things there | 13:01 | ||
13:01
xinming_ left
|
|||
jmerelo | xinming_: (also it would be maybe better if you ask in StackOverflow, where all the experts are) | 13:01 | |
tellable6 | jmerelo, I'll pass your message to xinming_ | ||
13:01
xinming_ joined
|
|||
jmerelo | xinming_: await is here: docs.raku.org/routine/await it waits until a value is available on a channel | 13:02 | |
If you want to listen on several channels, it's better to start several promises that listen to it using whenever | 13:03 | ||
xinming_: the await at the end of the script will actually wait on channel items, not on the promises. You are effectively starting a promise for every element of the channel, when you use start | 13:04 | ||
xinming_: why don't you send stuff to the channel, and process it (using whenever) in a different statement? It will clarify what's going on. | 13:05 | ||
xinming_ | jmerelo: When I use my @p = @channel.map({ start { } }); await |@p await here still await on @channel instead of Promise returned by start ? | 13:07 | |
tellable6 | 2020-01-03T13:01:30Z #raku <jmerelo> xinming_: (also it would be maybe better if you ask in StackOverflow, where all the experts are) | ||
jmerelo | xinming_: in that case, you're mapping channel _items_ to promises, if I'm not wrong. | 13:08 | |
xinming_: let me check | |||
xinming_ | I didn't receive that. | ||
scimon | I'd advise taking a look at react blocks. React blocks are awesome. | ||
docs.raku.org/language/concurrency...ntry-react | 13:09 | ||
xinming_ | scimon: I do read that, and several times. I just now practise to get the idea of it. | ||
jmerelo | xinming_: Channel is an Any, so it's got map. Channel.map will eagerly read the Channel and then map every element to the block, in this case, a promise. | 13:10 | |
xinming_: but scimon is right, react blocks are the way to go... | |||
xinming_ | jmerelo: Actually, What I asked is the differences between whenever @channel and whenever @channel[0] | ||
I do have whenever block in my example. | |||
termbin.com/63e7 | |||
jmerelo | xinming_: whenever is used for react or supply blocks, not for channels. You need to put a react block around that channel to read from it. | 13:12 | |
xinming_: something like react { whenever @channel[0].receive { ... } } | |||
xinming_ | jmerelo: Yea, actually, react { whenever @channel[0] { } } work as `whenever @channel[0].receive` | 13:13 | |
eiro | hello people. | ||
lizmat | eiro o/ | ||
jmerelo | xinming_: ah, OK. | ||
xinming_ | jmerelo: But how do we monitor multiple channels in this case then? | ||
eiro | hug lizmat ! | 13:14 | |
jmerelo | xinming_: do a loop within the react block | ||
xinming_ | I know we can do react { for @channel -> $x { whenever $x { ... } } | ||
jmerelo | xinming_: exactly | ||
xinming_ | jmerelo: But I thought that might not be right to do. as if the @channel is large | ||
scimon | m: my $c = Channel.new;my $p = start react { whenever $c { .say } };$c.send("test");$c.close;await $p;say "done" | ||
camelia | test done |
||
xinming_ | too many subscriptions. | ||
scimon | React blocks totally work on Channels ;) | ||
chloekek | p6: react { for ^10 { whenever Promise.in($_) { .say } } } | ||
camelia | True True True True True True True True True True |
13:15 | |
xinming_ | I thought there maybe a way to whenever on an @array activity | ||
jmerelo | xinming_: you're creating an asynchronous event. It should be really fast, just setting the hook. | ||
xinming_ | I mean a single whenever to react to that @array. | ||
If the for loop is the only, Then, I know that. :-) | |||
jmerelo | xinming_: you can use map if you don't like for... :-) Actually, you should use map always :-) | 13:16 | |
chloekek | Why use map always if TIMTOWTDI? | ||
Xliff | chloekek++ | 13:17 | |
xinming_ | just now, I start to realize that the difference between react { whenever @channel.map(*.receive) { ... } } and react { whenever @channel[0] { ... } } | ||
The *.receive wait every channel returns a single thing, then quit. | |||
jmerelo | chloekek: TIMTOWTDI .. with maps :-) You can use the feed operator, you can use map/reduce, you can use it with grep... | ||
xinming_ | While @channel[0] means whenever will loop on @channel[0].received | 13:18 | |
chloekek | I wish the feed operator let me write ==> map { … } but it crashes. | ||
({ ... }) is ugly. :( | |||
jmerelo | chloekek: right. You need the parenthesis... | ||
chloekek: and reminds us of JavaScript | |||
Xliff | chloekek: why not map: { … }? | 13:19 | |
xinming_ | after I saw so many features builtin in the syntax level, That really makes me feel so happy about using perl. | ||
jmerelo | Xliff: doesn't work well with ==> | ||
13:20
mscha left
|
|||
xinming_ | raku* | 13:20 | |
Xliff | m: @a = <1 2 3>; @a ==> map: { $_ + 2 } ==> @b; @b.say; | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Variable '@a' is not declared at <tmp>:1 ------> 3<BOL>7⏏5@a = <1 2 3>; @a ==> map: { $_ + 2 } ==> |
||
Xliff | m: my @a = <1 2 3>; @a ==> map: { $_ + 2 } ==> @b; @b.say; | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Confused at <tmp>:1 ------> 3my @a = <1 2 3>; @a ==> map:7⏏5 { $_ + 2 } ==> @b; @b.say; expecting any of: colon pair |
||
Xliff | m: my @a = <1 2 3>; @a ==> map: @a, { $_ + 2 } ==> @b; @b.say; | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Confused at <tmp>:1 ------> 3my @a = <1 2 3>; @a ==> map:7⏏5 @a, { $_ + 2 } ==> @b; @b.say; expecting any of: colon pair |
||
Xliff | m: my @a = <1 2 3>; @a.map: { $_ + 2 } ==> @b; @b.say; | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Variable '@b' is not declared at <tmp>:1 ------> 3my @a = <1 2 3>; @a.map: { $_ + 2 } ==> 7⏏5@b; @b.say; |
||
Xliff | m: my @b; my @a = <1 2 3>; @a.map: { $_ + 2 } ==> @b; @b.say; | ||
camelia | [3 4 5] | ||
Xliff | Hrm. | ||
m: my @a = <1 2 3>; @a ==> $_ + 2 ==> @b; @b.say; | 13:21 | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Variable '@b' is not declared at <tmp>:1 ------> 3my @a = <1 2 3>; @a ==> $_ + 2 ==> 7⏏5@b; @b.say; |
||
Xliff | m: my @b; my @a = <1 2 3>; @a ==> $_ + 2 ==> @b; @b.say; | ||
camelia | Too many positionals passed; expected 0 to 2 arguments but got 3 in block <unit> at <tmp> line 1 |
||
jmerelo | Xliff: in some cases precedence will DWIM, but not always. | ||
Xliff | m: my @b; my @a = <1 2 3>; @a ==> { $_ + 2 } ==> @b; @b.say; | 13:22 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Only routine calls or variables that can '.push' may appear on either side of feed operators. at <tmp>:1 ------> 3my @b; my @a = <1 2 3>; @a ==> 7⏏5{ $_ + 2 } ==> @b; @b.say; |
||
Xliff | m: my @b; my @a = <1 2 3>; @a ==> -> $_ { $_ + 2 } ==> @b; @b.say; | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Only routine calls or variables that can '.push' may appear on either side of feed operators. at <tmp>:1 ------> 3my @b; my @a = <1 2 3>; @a ==> 7⏏5-> $_ { $_ + 2 } ==> @b; @b.say; |
||
13:22
Tirifto joined
|
|||
Xliff | Well, I never grok'd the feed op. | 13:22 | |
Something for the future. | |||
jmerelo | Xliff: let's call it rocket | ||
Xliff | Heh. | ||
13:29
lucasb joined
13:34
jmerelo left
|
|||
sarna | hey, how to bind $*IN and $*OUT to something else for testing? I want to have a string in $*IN and read a string from $*OUT | 13:46 | |
(I want to emulate input to `prompt` and check what a function prints) | |||
sena_kun | sarna: can't you just assign it? | ||
sarna | sena_kun: I can! but to what? I can't find that in the docs | 13:47 | |
chloekek | No, you must define it with my: my $*IN = ... or my $*IN := ...; | ||
If you assign it then it will remain that value after returning. | |||
sarna | m: my $*IN = "foo"; $foo = prompt | 13:48 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Variable '$foo' is not declared at <tmp>:1 ------> 3my $*IN = "foo"; 7⏏5$foo = prompt |
||
sarna | "foo".IO wants to get a file called foo :^( | ||
I haven't found a way of making a handle without a file on disk | |||
chloekek | github.com/hoelzro/p6-io-string/ | ||
eiro | my @doubles = * * 2 for 4..8; should rise a warning. worth a gh issue ? | 13:49 | |
chloekek | p6: my $*IN := "A\nB\nC\n"; .say for lines; | ||
camelia | No such method 'nl-in' for invocant of type 'Str' in block <unit> at <tmp> line 1 |
||
chloekek | p6: my $*IN := "A\nB\nC\n" but role { method nl-in { "\n" } }; .say for lines; | ||
camelia | No such method 'encoding' for invocant of type 'Str+{<anon|1>}' in block <unit> at <tmp> line 1 |
||
eiro | camelia: my @doubles = * * 2 for 4..8; @doubles.elems.say | 13:50 | |
sarna | chloekek: thanks, bookmarked! :D | ||
eiro | p6: my @doubles = * * 2 for 4..8; @doubles.elems.say | ||
camelia | 1 | ||
eiro | this is true but nonsense. the fix is | 13:51 | |
p6: my @doubles = (* * 2 for 4..8); @doubles.elems.say | |||
camelia | 5 | ||
14:00
veesh_ joined
14:02
veesh left
14:03
veesh_ is now known as veesh
|
|||
Geth | doc: b56d6044e2 | Coke++ | doc/Language/variables.pod6 Fix example code * additional my causes compile time error * Follow style guide and use ^name instead of .WHAT |
14:15 | |
doc: 44973b2ac8 | Coke++ | 2 files Fix typo, learn word |
|||
squashable6 | 🍕🍕🍕 First contribution by coke++! ♥ | ||
Xliff | eiro: That syntax will not work. | 14:19 | |
It's written as... | 14:20 | ||
p6: my @doubles = (4..8).map(* * 2); @doubles.elems.say | |||
camelia | 5 | ||
Xliff | using a "my" and a "for" in the same line usually will not DWIM | 14:21 | |
scimon | p6: my @doubles = (* * 2 for 4..8); @doubles.say | 14:22 | |
camelia | [8 10 12 14 16] | ||
scimon | Does work. I guess because the whatever start makes it the same as my @doubles = ({$_ * 2 } for 4..8); which is fine. (But yeah you need the brackets). | 14:23 | |
Xliff | scimon: So should that be an error without the parens? | 14:24 | |
eiro | Xliff: at least a warning. that was my proposal | 14:27 | |
14:28
horsepatat left
14:29
wamba joined
|
|||
scimon | Without the brackets you get a list with 1 item (the whatever block). It probably gets assigned to 4 times because of the for 4..8 but the system is fine with that. | 14:29 | |
m: my @doubles = * * 2;@doubles[0](4).say | 14:30 | ||
camelia | 8 | ||
scimon | Fun fun fun :) | ||
eiro | i had no sense of humour after spending 5 minutes to understand it was possible :) | 14:32 | |
beacause at the end: @double could be local to the loop so a warning should happen at line 2 | |||
or @double is in the scope so a warning should happen because it is redefined 4 times | 14:33 | ||
scimon | There's no block. Here's a fun one. | ||
eiro | (actually i really think it should rise an error) | ||
scimon | m: my $a++ for ^4;say $a | 14:34 | |
camelia | 4 | ||
scimon | :D | ||
eiro | yep | ||
chloekek | p6: say ($++ for ^4); | ||
camelia | (0 1 2 3) | 14:35 | |
eiro | so i come back to my first question: is it worth an issue ? | ||
scimon | I'm not sure. It seems weird but valid. | ||
chloekek | eiro: it never harms to make an issue. If it turns out it’s ok the way it currently is, then the issue can be used as a reference for future visitors. | 14:36 | |
eiro | i guess not | ||
scimon | Point | ||
lizmat | .oO( I have no issue with more issues :-) |
14:37 | |
eiro | i don't understand what an issue is anymore. github is the worse thing that happens to me. i regret rt so much | 14:38 | |
lizmat | eiro: alas, not enough people to maintain RT, so... | ||
eiro | lizmat: because no one asked for ... | 14:39 | |
what i heard was "every one wants to use gh anyway" | |||
chloekek | Make a decent bug tracker that uses GitHub Issues API as its DBMS. | 14:40 | |
14:42
sena_kun left
|
|||
eiro | interesting idea but if no one wants to maintain a working product like RT, who want to write a descent bug tracker? at some point it would be yet another tool to maintain ... | 14:42 | |
anyway: i fill an issue on the rakudo repo | 14:43 | ||
chloekek | Was RT made specifically for Rakudo? | ||
moritz | no | 14:44 | |
eiro | nope | 14:45 | |
it was a generic tool used by all the perl5 community. interacting with it using mails was really enjoyable and the scrip system (scripts to handle events) made things really customizable | 14:47 | ||
chloekek | Nice. | ||
eiro | bestpractical.com/request-tracker | ||
also: it is still wildly used in french universities and there are extension for ISO quality certifications so www.easter-eggs.com/ still maintains it | 14:49 | ||
moritz | so far, RT and OTRS have been the only bug trackers I've used that worked well with email | ||
well, and the Debian bug tracker, but I've never seen that used anywhere besides Debian :D | |||
chloekek | Amazing. | 14:51 | |
eiro | the last time i checked for the code, my feeling was: | 14:53 | |
* there is a clean, elegant core | 14:54 | ||
Geth | doc: 3f8e74021d | (Stoned Elipot)++ | doc/Language/typesystem.pod6 Fix whitespace handling in examples |
||
eiro | * there is so many things that are written "php application alike" way with business model parts written directly in the templates | 14:55 | |
14:56
sena_kun joined
|
|||
chloekek | I wish I could maintain a large Perl app. | 15:08 | |
uzl[m] | Where I can find the tar file for Rakudo 2019.11? I remember coming across it but I forgot where I saw it though. | 15:11 | |
eiro | uzl[m]:that's what i reported on the ml | ||
also webpages are outdated. i guess 2019.11 was only released on github | 15:12 | ||
chloekek: i hoped sympa and RT to share some efforts because both of them have engines to automate stuff using emails as interface but it seems no one care anymore | 15:14 | ||
they just want to maintain the status quo: those apps are now in "maintainance mode" | |||
chloekek | Email is out of fashion. | ||
eiro | true. but it was so much superior to everything i see these days | 15:15 | |
15:15
wamba left
|
|||
eiro | so what's the point of maintaining them if no one cares | 15:15 | |
uzl[m] | eiro: Yeah, on Github. I think it was AlexDaniel that released. Do you have the Github link to that release? | 15:16 | |
eiro | github.com/rakudo/rakudo/releases | ||
especially github.com/rakudo/rakudo/tree/2019.11 | |||
uzl[m] | eiro: Thanks! | 15:17 | |
AlexDaniel | eiro: hold on which web pages are we talking about? | ||
15:17
melezhik joined
15:18
horsepatat joined
|
|||
eiro | AlexDaniel: rakudo.org/files | 15:18 | |
AlexDaniel | eiro: that's rakudo star | ||
eiro | and also raku.org/ | ||
especially raku.org/downloads | |||
AlexDaniel | and that too. Rakudo Star has a different release cycle | 15:19 | |
I beleive there's a release candidate for rakudo star 2019.11 | |||
ah, there's one for 2019.07.1 | 15:20 | ||
eiro | ?? | ||
so raku can be ahead of rakudo star? | |||
lizmat | it is by definition ahead | ||
just as the odd Perl releases are ahead of the stable even releases | 15:21 | ||
AlexDaniel | tyil: can you tell me what can be done with github.com/rakudo/star/pull/144 ? | ||
tyil: I reviewed it and nothing seems to be wrong | |||
tyil: does it mean that it is one click away from being released? | |||
eiro | ok ... so rakudo star became "the rakudo normal people should use"? | 15:22 | |
AlexDaniel | tyil: I didn't test it though, but I see that other people did | ||
melezhik | AlexDaniel: thank you for responding to my email. Where is the best to fill the RakuDist issue? | ||
eiro | (the stable one ?) | ||
AlexDaniel | eiro: it is hard to say. There was a point when it was the recommended way to get rakudo, but today it's a bit different. Some people wonder if star is needed at all for operating systems other than Windows | 15:23 | |
for example, I'd personally recommend to get rakudo from distro packages if the version in the package is recent enough | 15:24 | ||
tyil | AlexDaniel: Im waiting for the windows guy to make a .msi | ||
to ensure that it will also work for windows users | 15:25 | ||
AlexDaniel | tyil: ookay. Please kick me if it stalls for any other reason | ||
tyil | I haven't been able to get in touch with the mac guy to make a .dmg of it | ||
so I gave up on that for now | |||
Tirifto | Hello! Is there any way at all to directly get a value from a hash variable in a regex match/substitution, given that their use therein is reserved? The best I could think of is: ‘$var ~~ s[$_] = $replacement given %hash<key>’, which looks alright to me, but I'm still wondering if there's anything simpler/more elegant. :) | 15:28 | |
eiro | AlexDaniel: ok. so i think that guix should package rakudo, not star. right ? | ||
Geth | problem-solving: c146268616 | (Aleks-Daniel Jakimenko-Aleksejev)++ | .github/ISSUE_TEMPLATE/issue-template-infrastructure.md Remove second assignee from the template Otherwise the template doesn't work at all. I think the syntax was wrong, but this fix will do for now. |
15:32 | |
problem-solving: 834840e43a | (Aleks-Daniel Jakimenko-Aleksejev)++ | 2 files Rakufy the templates |
|||
AlexDaniel | melezhik: it's not entirely an infrastructure issue, but I think that label is most fitting: github.com/perl6/problem-solving/i...amp;title= | ||
15:33
wamba joined
|
|||
AlexDaniel | melezhik: rba will likely tell you if it's possible to get a machine for it, and they'll also assist you to set things up | 15:33 | |
melezhik | AlexDaniel: thanks, will fill a ticket | 15:34 | |
AlexDaniel | melezhik: ideally we should have a label here related to modules and ecosystem github.com/perl6/problem-solving#l...sible-devs | ||
but there's no such label yet, so infrastructure it is :) | |||
melezhik | ok | 15:35 | |
Geth | problem-solving: 48d036cb42 | (Aleks-Daniel Jakimenko-Aleksejev)++ | README.md Rakufy the README |
15:37 | |
¦ problem-solving: melezhik assigned to rba Issue Test Raku modules against different OS, Rakudo versions github.com/perl6/problem-solving/issues/144 | 15:47 | ||
15:56
abraxxa left
15:58
wamba left
|
|||
AlexDaniel | weekly: ever wondered if your module works on different operating systems, rakudo versions, etc.? Meet RakuDist! github.com/melezhik/RakuDist. There's currently a discussion on whether we can and should run it on our whole ecosystem. Feedback is welcome! github.com/perl6/problem-solving/issues/144 | 16:03 | |
notable6 | AlexDaniel, Noted! (weekly) | ||
melezhik | AlexDaniel: thanks! | 16:04 | |
16:23
pilne left
16:43
sena_kun left
|
|||
xinming_ | m: %h = %(:a<a b c>, :b<x y z>); for roundrobin(%h<>:v.map: *.flat) -> @list { @list.perl.say; } | 16:44 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Variable '%h' is not declared at <tmp>:1 ------> 3<BOL>7⏏5%h = %(:a<a b c>, :b<x y z>); for roundr |
||
xinming_ | m: my %h = %(:a<a b c>, :b<x y z>); for roundrobin(%h<>:v.map: *.flat) -> @list { @list.perl.say; } | ||
camelia | ("a", "x") ("b", "y") ("c", "z") |
||
xinming_ | In this example, If the hash contains only one element, We'll get the eror | 16:45 | |
m: my %h = %(:a<a b c>); for roundrobin(%h<>:v.map: *.flat) -> @list { @list.perl.say; } | |||
camelia | Type check failed in binding to parameter '@list'; expected Positional but got Str ("a") in block <unit> at <tmp> line 1 |
||
xinming_ | What is the right way to fix this please? For now, My sollution is adding an empty array to the hash, But I think it's an ugly hack. So, here for the idea | 16:46 | |
m: my %h = %(:a<a b c>, :NOT_EXIST_THING[]); for roundrobin(%h<>:v.map: *.flat) -> @list { @list.perl.say; } | |||
camelia | ("a",) ("b",) ("c",) |
||
xinming_ | m: my %h = %(:a<a b c>, :NOT_EXIST_THING); for roundrobin(%h<>:v.map: *.flat) -> @list { @list.perl.say; } | ||
camelia | (Bool::True, "a") ("b",) ("c",) |
||
16:46
cpan-raku left
16:48
cpan-raku joined,
cpan-raku left,
cpan-raku joined
|
|||
chloekek | p6: my %h = :a<a b c>; say %h<> | 16:51 | |
camelia | {a => (a b c)} | ||
chloekek | p6: my %h = :a<a b c>; say %h | 16:52 | |
camelia | {a => (a b c)} | ||
chloekek | p6: my %h = :a<a b c>; say %h<>:v | ||
camelia | ((a b c)) | ||
xinming_ | I think this is probably a bug | 16:56 | |
m: my %h = :a<a b c>, :b<a c>; say %h<>:v | 16:57 | ||
camelia | ((a b c) (a c)) | ||
16:57
sena_kun joined
|
|||
xinming_ | m: my %h = :a<a b c>, :b<a c>; say %h<>:v.map(*.flat) | 16:57 | |
camelia | ((a c) (a b c)) | ||
xinming_ | m: my %h = :a<a b c>; say %h<>:v.map(*.flat) | ||
camelia | ((a b c)) | ||
chloekek | I’d expect %h<> to be empty list. | ||
p6: say <> | 16:58 | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Unsupported use of <>; in Raku please use lines() to read input, ('') to represent a null string or () to represent an empty list at <tmp>:1 ------> 3say <7⏏5> |
||
chloekek | p6: say []<> | ||
camelia | [] | ||
jnthn | %h<> is the zen slice, no? | ||
chloekek | p6: say [1, 2, 3]<> | ||
camelia | [1 2 3] | ||
chloekek | Oh I see. | ||
p6: say [1, 2, 3]{} | |||
camelia | [1 2 3] | ||
xinming_ | %h<> is just decontainer operation. | ||
[] is the same as <> | |||
If you want Empty list, You'll have to do something like %h{()} | |||
jnthn: when we have list there, it's a zen slice. but <> alone is decont | 16:59 | ||
I search the diff between [] and <>, and finally I realized they are the same. | |||
chloekek | p6: my $x = 1; my $y := $x<>; say $y.VAR.^name | ||
camelia | Int | ||
chloekek | p6: my $x = 1; my $y := $x[]; say $y.VAR.^name | 17:00 | |
camelia | Int | ||
xinming_ | jnthn: Do you think my %h = %(:a<a b c>); for roundrobin(%h<>:v.map: *.flat) -> @list { @list.perl.say; } work like this is a bug in roundrobin? | ||
17:00
scimon left
|
|||
xinming_ | docs.perl6.org/language/containers <--- Here, However, the decont operator <> is more appropriate to decontainerize items that aren't lists: | 17:01 | |
jnthn | xinming_: <> alone is a zen slice on an Array or Hash | ||
xinming_ | :-) | ||
jnthn: Ok, Then I'll try [] | |||
jnthn | Or so I thought, anyway | 17:02 | |
xinming_ | Anyway, neither works | ||
m: my %h = %(:a<a b c>); for roundrobin(%h[]:v.map: *.flat) -> @list { @list.perl.say; } | |||
camelia | Type check failed in binding to parameter '@list'; expected Positional but got Pair (:a($("a", "b", "c"))) in block <unit> at <tmp> line 1 |
||
jnthn | Oh, I guess they're equivalent in that sense | ||
xinming_ | hmm, They are different. | ||
bbl | |||
jnthn | github.com/rakudo/rakudo/blob/mast...e.pm6#L163 | 17:03 | |
xinming_ | jnthn: They are different, The doc needs to be fixed. | ||
jnthn | I think in `my %h = %(:a<a b c>);` the conextualizer is pointless, btw | ||
It just creates a throwaway hash | 17:04 | ||
xinming_ | Ok, Will fix that | ||
jnthn | (Harmless, just a bit of wasted work) | ||
chloekek | p6: my %h = :1a, :2b, :3c; say %h{'a' | 'b'} == 1 | ||
camelia | any(True, False) | ||
xinming_ | But what about the roundrobin(...) thing in this case? | 17:06 | |
jnthn | xinming_: fwiw I don't see anything that looks buggish in the various %h<>:v and %h and so on usages | ||
xinming_ | It seems, that roundrobin doesn't work right on single list item within list. | 17:07 | |
AlexDaniel | btw I highly recommend this extension: github.com/sindresorhus/refined-github#install | ||
jnthn | Trying to find the case you think is wrong in all the backlog...can you write it again here? :) | ||
xinming_ | m: my %h = %(:a<a b c>); for roundrobin(%h<>:v.map: *.flat) -> @list { @list.perl.say; } | 17:08 | |
camelia | Type check failed in binding to parameter '@list'; expected Positional but got Str ("a") in block <unit> at <tmp> line 1 |
||
xinming_ | m: my %h = %(:a<a b c>, :xx); for roundrobin(%h<>:v.map: *.flat) -> @list { @list.perl.say; } | ||
camelia | (Bool::True, "a") ("b",) ("c",) |
||
xinming_ | m: ((<a b c>,)).perl.say; | ||
camelia | (("a", "b", "c"),) | ||
xinming_ | m: roundrobin((<a b c>,))).perl.say | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Unexpected closing bracket at <tmp>:1 ------> 3roundrobin((<a b c>,))7⏏5).perl.say |
17:09 | |
xinming_ | m: roundrobin((<a b c>,)).perl.say | ||
camelia | ("a", "b", "c").Seq | ||
xinming_ | m: my %h = :a<a b c>; %h<>:v.perl.say; | ||
camelia | ($("a", "b", "c"),) | ||
jnthn | m: my %h = %(:a<a b c>); dd roundrobin(%h<>:v.map: *.flat) | 17:10 | |
camelia | ("a", "b", "c").Seq | ||
xinming_ | m: my %h = %(:a<a b c>, :xx); dd roundrobin(%h<>:v.map: *.flat) | ||
camelia | (("a", Bool::True), ("b",), ("c",)).Seq | ||
jnthn | m: my %h = %(:a<a b c>, :xx); dd roundrobin(%h<>:v.map: *.flat) | ||
camelia | ((Bool::True, "a"), ("b",), ("c",)).Seq | ||
17:10
rindolf left
|
|||
jnthn | m: my %h = %(:a<a b c>, :xx); dd roundrobin(%h<>:v.map: *.list) | 17:10 | |
camelia | (("a", Bool::True), ("b",), ("c",)).Seq | ||
jnthn | m: my %h = %(:a<a b c>); dd roundrobin(%h<>:v.map: *.list) | 17:11 | |
camelia | ("a", "b", "c").Seq | ||
xinming_ | So, there is some inconsistency here. | ||
jnthn | m: my %h = %(:a<a b c>); dd (%h<>:v.map: *.list) | ||
camelia | (("a", "b", "c"),).Seq | ||
jnthn | m: my %h = %(:a<a b c>, :xx); dd (%h<>:v.map: *.list) | ||
camelia | ((Bool::True,), ("a", "b", "c")).Seq | ||
jnthn | Yeah, everything looks right until it reaches roundrobin | 17:12 | |
Then I'm indeed a bit surprised by it | |||
xinming_ | Why? | 17:13 | |
17:13
rindolf joined
|
|||
xinming_ | I'd consider this is bug in roundrobin. though, no idea how it should be fixed. | 17:13 | |
jnthn | Yes, that's what I'm saying: if there's something to fix, it's roundrobin | 17:14 | |
m: sub rr(+@lol) { dd @lol }; rr (<a b c>, (True)) | 17:15 | ||
camelia | Array element = [("a", "b", "c"), Bool::True] | ||
jnthn | m: sub rr(+@lol) { dd @lol }; rr (<a b c>,) | ||
camelia | Array element = [("a", "b", "c"),] | ||
jnthn | And no structure loss from the signature binding, so looks like it'll be in the Rakudo::Iterator.RoundrobinIterables impl | 17:16 | |
I think it's maybe trying to be more efficient at github.com/rakudo/rakudo/blob/131d....pm6#L3265 but getting it wrong | 17:18 | ||
e.g. it just iterates the underlying thing, but doesn't wrap them into the 1-element array | 17:19 | ||
Probably only special-casing 0 elements is a fix | |||
17:20
chloekek left
|
|||
xinming_ | Do you mean the == 1 change to == 0? | 17:23 | |
shape.elems == 1 to shape.elems == 0 | |||
I'm thinking that if it's 0, We can just return | |||
jnthn | Hm, where is shape? Not sure if we're looking at the same code | 17:24 | |
xinming_ | hmm, Ignore me, I was in different branch. :-) | 17:25 | |
I was looking at the ShapeIndex method | |||
jnthn | I think it should maybe just be like | ||
method RoundrobinIterables(@iterables) { | |||
nqp::if( | |||
nqp::isgt_i(@iterables.elems,0), # reifies | |||
RoundrobinIterables.new(@iterables), | |||
Rakudo::Iterator.Empty, | |||
) | 17:26 | ||
xinming_ | Ok, Waiting for the patch. :-) | ||
jnthn | Can you open an issue with this information? | 17:32 | |
xinming_ | Ok | ||
jnthn | Maybe somebody will beat me to getting the patch in; otherwise I can in a day or so | 17:35 | |
Need to sort out a dev environment for me... :) | |||
Well, re-sort :) | |||
xinming_ | jnthn: Your code does fix the problem. | 17:40 | |
I just re-compile the raku | 17:41 | ||
Geth | doc: threadless-screw++ created pull request #3138: Expansion of Operator precedence and Assignment operators sections |
17:44 | |
squashable6 | 🍕 threadless-screw++ opened pull request “Expansion of Operator pr…”: github.com/Raku/doc/pull/3138 | ||
🍕🍕🍕 First contribution by threadless-screw++! ♥ | |||
AlexDaniel | SORRY | 17:45 | |
squashable6: next | |||
squashable6 | AlexDaniel, Next SQUASHathon in 28 days and ≈10 hours (2020-02-02 UTC-12⌁UTC+20). See github.com/rakudo/rakudo/wiki/Mont...Squash-Day | ||
xinming_ | my %h = %(:a<a b c>, :xx[]); for roundrobin(%h<>:v.map: *.flat) -> @list { @list.perl.say; } | 17:48 | |
evalable6 | ("a",) ("b",) ("c",) |
||
17:52
Altai-man_ joined,
sena_kun left
|
|||
xinming_ | jnthn: github.com/rakudo/rakudo/issues/3402 | 17:54 | |
17:59
wamba joined
18:05
xinming_ left
18:06
xinming_ joined
18:13
Poohmaan joined
|
|||
Geth | doc: 0f6fa999b7 | threadless-screw++ | doc/Language/operators.pod6 Expansion of Operator precedence and Assignment operators sections; work towards resolving #2920 |
18:14 | |
doc: 562b3c189d | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | doc/Language/operators.pod6 Merge pull request #3138 from threadless-screw/operators_assignment Expansion of Operator precedence and Assignment operators sections |
|||
18:16
Poohman left
|
|||
eiro | tyil: thanks for replying on the list as well | 18:16 | |
18:16
patrickb joined
|
|||
stoned75 | commit: releases .signature.say for "foo".^can("comb")[0].cando: \(Cool, "o"); | 18:18 | |
committable6 | stoned75, gist.github.com/abeebf18a3d63c86d4...32a3a5e0ac | ||
stoned75 | it seems we lost our comb :) | 18:20 | |
18:21
mahmudov joined
|
|||
Geth | doc: af869314fe | (Stoned Elipot)++ | doc/Type/Routine.pod6 xref proto |
18:23 | |
xinming_ | I think I found another bug | 18:36 | |
I'll try to narrow it down. | |||
AlexDaniel | bisect: old=2017.02 .signature.say for "foo".^can("comb")[0].cando: \(Cool, "o"); | 18:40 | |
bisectable6 | AlexDaniel, Bisecting by output (old=2017.02 new=e5627b8) because on both starting points the exit code is 0 | ||
xinming_ | termbin.com/47tu <--- In this example, We'll get error | ||
bisectable6 | AlexDaniel, bisect log: gist.github.com/d7541cc997a835109c...17445a3823 | ||
AlexDaniel, (2017-02-22) github.com/rakudo/rakudo/commit/a0...e678cbc4b0 | |||
xinming_ | No such method 'key' for invocant of type 'Str'. Did you mean 'keys'? <--- | ||
AlexDaniel | stoned75: ↑ | ||
xinming_ | if anyone here have time, Please check this bug too. termbin.com/47tu <--- If I change this to $regex, It'll work, by using $_ var, I'll get error o such method 'key' for invocant of type 'Str'. Did you mean 'keys'? | 18:42 | |
moritz | xinming_: change what, exactly? | 18:52 | |
xinming_ | moritz: with $regex, It'll work | ||
moritz | xinming_: you have to be careful, $a ~~ $b sets $_ to $a | ||
when the RHS of the ~~ is evaulated | 18:53 | ||
xinming_ | Ah, Got it, I thought this is a bug. | ||
moritz | which is why using $_ or not using $_ can make a big difference in smart matches | ||
xinming_ | I thought that when use of `when`, the $_ is used, otherwise, It won't. | 18:54 | |
moritz | blocks without a signature tend to set $_ | 18:57 | |
"for", "given" etc. | |||
Xliff | When you re-export a package by using "use Package; sub EXPORT { %(PACKAGE::EXPORT::DEFAULT::) }", it works, but doesn't have a package itself so it can be re-exported. How can I fix that? | 19:20 | |
s/can/can't/ | 19:21 | ||
See this example: github.com/Xliff/p6-GLib/blob/mast.../Types.pm6 | 19:22 | ||
I can "use GLib::Raw::Types" and it will DWIM, but I cannot re-export the symbols from GLib::Raw::Types using the same mechanism, because GLib::Raw::Types isn't a package. | 19:24 | ||
So what am I missing? | |||
19:29
sauvin left
19:38
timotimo joined
19:45
wildtrees joined
19:52
sena_kun joined
19:53
Altai-man_ left
19:54
wildtrees left
|
|||
moritz | probably the not-yet-specced/implemented re-export feature? | 19:55 | |
tyil | eiro: no problem :) | 20:17 | |
20:18
wildtrees joined
|
|||
Xliff | moritz: Well, got this --- github.com/LLFourn/p6-CompUnit-Util#re-export | 20:20 | |
And it seems to work. Time will tell. | |||
.seen LLFourn | |||
tellable6 | Xliff, I saw LLFourn 2018-12-19T10:41:23Z in #perl6: <llfourn> nod. I think I just have to let go of that feeling and only use :D when I actually want to do a runtime check. | ||
20:30
rindolf left
20:45
patrickz joined
20:46
patrickb left
21:00
horsepatat left,
chloekek joined
21:02
kensanata joined,
wamba left
21:17
MasterDuke joined
21:38
mahmudov left
21:39
mahmudov joined
21:51
Altai-man_ joined
21:53
sena_kun left
22:20
mahmudov left,
mahmudov joined
|
|||
Doc_Holliwood | jnthn, you will have to spend an extra weekend in purgatory for this terrible, terrible pun. | 22:23 | |
22:23
MasterDuke left
22:28
kensanata left
|
|||
Xliff | Doc_Holliwood: What terrible, terrible pun? | 22:33 | |
Doc_Holliwood | my Cro::Service | ||
lizmat | hehe... :-) | 22:36 | |
bartolin giggles | 22:37 | ||
Doc_Holliwood | weekly: www.perlmonks.org/?node_id=11110913 | 22:42 | |
notable6 | Doc_Holliwood, Noted! (weekly) | ||
lizmat hopes the flak will be bearable | 22:44 | ||
Xliff | ..... | 22:45 | |
Ooooooo | |||
Doc_Holliwood: I think you are being too kind. Let's go for two weekends. | |||
chloekek | p6: say 2¹²; say (2¹⁰)² | 22:48 | |
camelia | 4096 1048576 |
||
22:57
lucasb left
|
|||
stoned75 | AlexDaniel: thanks! | 23:04 | |
23:27
mahmudov left
23:30
mahmudov joined
|
|||
Doc_Holliwood | lizmat: One hour in. No flak yet, but no upvotes either. | 23:31 | |
I guess the monks are sleeping. | |||
lizmat | yeah... most likely... | 23:34 | |
23:37
mahmudov left
23:39
mahmudov joined
23:44
mahmudov left
|
|||
jnthn | Doc_Holliwood: You only just noticed? :D | 23:49 | |
23:50
mahmudov joined
23:52
sena_kun joined
23:54
Altai-man_ left
|