🦋 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:19 Zero_Dogg left 00:20 Zero_Dogg joined
rypervenche Ahhh, that's what I was wanting to know. Great! Thanks. 00:36
00:54 __jrjsmrtn__ joined 00:55 _jrjsmrtn left 01:29 Noisytoot left 01:50 Noisytoot joined 01:52 sena_kun joined 01:54 Altai-man_ left 01:55 hungrydonkey left 02:06 satori__ joined 02:08 reach_satori_ left 02:16 cpan-raku left 02:17 cpan-raku joined, cpan-raku left, cpan-raku joined 02:28 Xliff joined 02:34 Zero_Dogg left 02:36 _jrjsmrtn joined 02:37 __jrjsmrtn__ left 02:47 Zero_Dogg joined 03:40 wamba joined 03:52 Altai-man_ joined 03:54 sena_kun left 04:37 kst left 04:43 guifa2 joined 05:00 hungrydonkey joined 05:08 hungrydonkey left, hungryd7 joined 05:10 vrurg left 05:11 vrurg joined 05:14 xinming left 05:16 OpenZen left, vrurg left 05:18 xinming joined 05:24 andrzejku joined 05:27 yht joined 05:42 wamba left 05:44 vrurg joined, vrurg left, vrurg joined 05:45 xinming left 05:46 xinming joined 05:53 sena_kun joined, andrzejku left 05:54 Altai-man_ left 06:08 aindilis left, xinming left 06:10 xinming joined 06:16 kensanata joined 06:23 andrzejku joined 06:32 JJMerelo joined 06:33 sno left 07:00 hungrydonkey joined 07:02 hungryd7 left 07:06 sno joined 07:08 rindolf joined 07:09 yht left 07:22 yht joined 07:30 hungryd88 joined 07:32 hungrydonkey left 07:48 dakkar joined 07:51 Altai-man_ joined 07:54 sena_kun left 08:00 aindilis joined 08:12 aindilis left
AlexDaniel` m: my uint8 $x = 255; say $x++ 08:19
camelia -1
AlexDaniel` -_-
bisect: my uint8 $x = 255; say $x++
bisectable6 AlexDaniel`, Will bisect the whole range automagically because no endpoints were provided, hang tight
AlexDaniel`, ¦6c (44 commits): «-1␤»
AlexDaniel`, Nothing to bisect!
08:21 pecastro joined
AlexDaniel` m: my uint8 $a = 200; my uint8 $b = -50; .say for $a..$b 08:21
camelia 200
08:23 oddp joined 08:33 aindilis joined 08:35 sarna joined 08:36 benaiah left 08:37 benaiah joined 08:44 Sgeo left 08:49 hungryd88 left 08:50 hungrydonkey joined 08:52 JJMerelo left
cpan-raku New module released to CPAN! HelloWorld (1.0.2) by 03PMQS 08:53
08:53 sena_kun joined 08:56 Altai-man_ left 08:59 markoong joined 09:02 hungryd51 joined 09:05 markong joined, markoong left 09:06 hungrydonkey left 09:07 hungrydonkey joined 09:10 hungryd51 left 09:18 rindolf left, hungryd57 joined 09:21 xinming left, xinming joined 09:22 hungrydonkey left 09:28 antoniogamiz joined, rbt left 09:29 rbt joined 09:36 yht left
antoniogamiz m: my $string = '<a href="?!^a">b</a>'; my $content; say $string ~~ /href\=\"{$content=$¢}\"/; 09:41
camelia Nil
antoniogamiz m: my $string = '<a href="?!^a">b</a>'; my $content; $string ~~ /href\=\"{$content=$¢}\"/; say $content;
camelia #<failed match>
antoniogamiz someone knows why it's failing? 09:42
timotimo m: my $string = '<a href="?!^a">b</a>'; my $content; say $string ~~ /href\=\"$<cm>=<-["]>+{$content=$<cm>.Str}\"/; dd $content;
camelia 「href="?!^a"」
cm => 「?!^a」
Str $content = "?!^a"
antoniogamiz $<cm> mmmm
timotimo you're not matching anything, your regex is looking for "" which isn't in the source, so the match fails
stands for "content match"
because i'm too lazy to type 09:43
antoniogamiz makes sense, thanks a lot :) 09:44
timotimo YW 09:51
09:51 Altai-man_ joined
timotimo m: my $string = '<a href="?!^a">b</a>'; $string ~~ /href\=\"$<cm>=<-["]>+\"/; dd $<cm>.Str; 09:52
camelia "?!^a"
timotimo if you don't actually need your $content variable to immediately contain the stuff, you can just use $<cm> after the match and drop the code block inside the regex 09:53
09:54 sena_kun left
antoniogamiz done :) 09:54
09:56 softmoth left 09:58 sno left 10:06 rindolf joined 10:18 yht joined 10:35 sno joined 10:41 patrickb joined 10:54 Black_Ribbon left
cpan-raku New module released to CPAN! HelloWorld (1.0.3) by 03PMQS 11:00
11:00 yht left 11:01 antoniogamiz left 11:08 robertle left 11:28 tejr left
cpan-raku New module released to CPAN! Raku-GitHub-Workflows (1.0.4) by 03PMQS 11:32
11:35 tejr joined 11:45 tejr left 11:47 bingos is now known as BinGOs 11:49 hungryd57 left, hungrydonkey joined 11:52 sena_kun joined 11:54 Altai-man_ left 11:58 skaji_ left 11:59 skaji_ joined 12:00 dyske joined, dyske left 12:01 dyske joined 12:03 dyske left, vrurg left 12:04 vrurg joined 12:09 vrurg left 12:12 vrurg joined 12:44 petr85 joined 12:48 petr85 left
rypervenche How long does modules.raku.org take to update once a new module is added to it? 12:54
lizmat rba ^^ ?? 12:58
rba modules.raku.org gets updated every 30 minutes. 13:02
tellable6 2020-06-24T12:09:10Z #raku <patrickb> rba There is a new rakubrew release: Version 12. Can you upload versions 10, 11 and 12 to the website? (rooster.uber.space/patcloud/index....JLQDZcjbf) 13:03
2020-07-09T08:48:38Z #raku-dev <patrickb> rba: Can you teach me how to deploy changes to rakubrew.org myself and upload releases? I'd really like to be able to do them myself...
patrickb rba: o/
rba patrickb: argh. I will do this ASAP and let you know...
patrickb v13 is bound to happen soon-ish. I'm still willing to learn how to do this myself. ;-) I have access to the webserver for the other sites, but rakubrew.org doesn't seem to live there... 13:05
Also the website itself has changes as well.
13:15 tejr joined 13:24 MasterDuke left 13:27 aindilis left, guifa2 left, _jrjsmrtn left, Xliff left, satori__ left, gordonfish left, fling left, Geth_ left, veesh left, raydiak left, leont_ left, maggotbrain777 left, finsternis left, nebuchadnezzar left, timlegge left, [ptc] left, Bucciarati left, KotH left 13:28 aindilis joined, guifa2 joined, _jrjsmrtn joined, Xliff joined, satori__ joined, gordonfish joined, fling joined, Geth_ joined, veesh joined, raydiak joined, leont_ joined, maggotbrain777 joined, finsternis joined, nebuchadnezzar joined, timlegge joined, [ptc] joined, Bucciarati joined, KotH joined, gordonfish left 13:38 tatata joined
tatata HeyI am trying to include a file 13:41
13:41 patrickb25 joined
tatata HeyI am trying to include a file following stackoverflow.com/questions/132626...-in-perl-6 . But it seems to be outdated, can someone help ? 13:41
13:43 patrickb left
guifa2 tatata: what is the error you are getting by using moritz's solution? 13:45
13:46 RaycatWhoDat left 13:49 sena_kun left, aluaces left
tatata guifa2 13:50
$ cat main.raku use v6;use lib '.'; # to search for Hello.pm6 in the current diruse Hello;hello;$ cat hello.raku module Hello;sub hello() is export { say 'hello';}$ perl6 main.raku ===SORRY!===Could not find Hello at line 3 in: /home/lesenr1/Work/ligo/src/stages/adt_generator /home/lesenr1/.perl6 /usr/lib/perl6/site
/usr/lib/perl6/vendor /usr/lib/perl6 CompUnit::Repository::AbsolutePath<93867113852400> CompUnit::Repository::NQP<93867090629376> CompUnit::Repository::Perl5<93867090629416>
moritz tatata: if you name the module Hello, you must name the file `Hello.pm` or `Hello.rakumod` 13:51
tatata alright
Thanks a lot
moritz (case matters as well)
you're welcome 13:52
13:52 gordonfish joined 13:53 aluaces joined
cpan-raku New module released to CPAN! Set::Equality (0.0.2) by 03ELIZABETH 13:54
[Coke] rba: hi!
tatata Still does not find my module.. also, I had to write `unit module Foo;` instead of just `module Foo;` 13:59
Xliff \o 14:01
tatata moritz it seems like .pm works but not rakumod 14:04
codesections I have discovered an invalid regex that reproducibly causes Rakundo v2020.06 to hang in an infinite loop. As an example: 'any input' ~~ /[a*]*/ 14:05
moritz tatata: what version of rakudo are you using?
codesections: yes, that's well known
codesections ok, thanks, that's what I wanted to know
Saves me the time of opening an issue :) 14:06
lizmat and yet another Rakudo Weekly News hits the Net: rakudoweekly.blog/2020/07/13/2020-28-bridges-7/ 14:09
[Coke] was trying to duplicate the LibCurl issue reported on the mailing list. getting this error on zef:
moritz lizmat++
[Coke] $ zef uninstall LibCurl
Failed to get the directory contents of '/Volumes/BUKKIT/Users/coke/p6/share/perl6/site/short/D7B2661931C58BC571BED0D9CF7277DAAB35132A': Failed to open dir: Too many open files
will upddddddate everydaaaaaaaaaaaaaaaaaayy 14:12
14:12 andrzejku left
[Coke] ... 14:12
kb issues
lizmat MBP ?
[Coke] Yes. 14:13
lizmat been there, done that :-(
14:13 rindolf left, aluaces left, sena_kun joined
lizmat Apple is doing their utmost to ensure my next notebook will not be an Apple :-( 14:13
[Coke] mac mini 14:14
every few days the bt keyboard goes batshit crazy
14:18 rindolf joined
cpan-raku New module released to CPAN! App::Mi6 (1.0.0) by 03SKAJI 14:19
rba hi [Coke] 14:22
timotimo oh hey rba :)
rba hi timotimo
[Coke] rba: had some tickets on rakudo.org that I think you're the person for? 14:23
site not getting updated, missing updated info on infrastructure.
timotimo what if i threw my ssh public key your way, rba? :3
rba is feeling to get "attacked" from multiple sides ... :-) 14:24
[Coke] sorry!
rba was to long not showing up in irc...
timotimo i kind of don't know how things are currently set up, and i think i don't have access to anything, or if i do i have already forgotten 14:25
rba [Coke]: You mean github.com/perl6/rakudo.org/issues...3534057860 ? 14:26
cpan-raku New module released to CPAN! WriteOnceHash (0.0.4) by 03ELIZABETH 14:27
14:27 sarna left
rba timotimo: you like to get access to lavm-perl6infra-1? 14:27
14:28 andrzejku joined
rba timotimo: What do you need? 14:28
[Coke] rba - yup, those. 14:29
(there are other tickets, but those are the two I tagged you on) if timo has access to poke at things, that will also be great. 14:31
I am happy to volunteer a key, but I won't be able to be a regular admin or anything.
timotimo 0i'm currently on my laptop and can't reach my desktop, but i can offer my laptop's key and use that to add my desktop's key later 14:33
cpan-raku New module released to CPAN! EERPG (0.0.1) by 03ELIZABETH 14:34
tadzik so, metacpan doesn't show these, modules.perl6.org doesn't show these, how I look them up except for github? :) 14:35
timotimo tadzik: m.r.o will show them, it just takes a moment or two to regenerate
tadzik heh 14:36
rba timotimo: I have copied the keys from the backup of p6c.org at installation. In case the key "timo@schmetterling" is still in your hands you can try to login using: ssh -p2222 akudo.org@lavm-perl6infra-1.atikon.io
14:36 dataangel left
tadzik I read that as "a month or two" 14:36
timotimo cool
14:36 dataangel joined
timotimo ah, yes, i am logged in 14:36
rba timotimo: Is this what you needed? 14:37
timotimo is that where all our websites are hosted now?
rba [Coke]: A small push updated the rakudo.org again: github.com/perl6/rakudo.org/issues/45 14:38
timotimo: Yes.
timotimo i see /home has folders for many perl6.org as well as raku.org folders
[Coke] rba++
rba timotimo: Most if the services I've duplicated at the rename. While the housekeeping didn't happen yet...
timotimo i wonder if i should get a "timo" unix user from which i could sudo to do server changes 14:39
rba timotimo: When you see through the home, which of those you like to get access to? 14:40
timotimo i guess everything that ends in .org 14:41
rba So far there is commands in the sudo for rakudo.org and docs.raku.org
14:42 xinming left
timotimo you mean stuff in the sudoers file? stuff those users can do without being asked for a password? 14:42
rba timotimo: Exactly. Mainly become the website user and restart nginx. 14:43
timotimo: And edit the nginx config file for the domain. 14:44
timotimo: Or do you like to get involved in admin completely? 14:45
14:45 tatata left
timotimo i think i could try at least :) 14:45
14:45 skids joined
rba timotimo: Username "timo"? 14:46
14:46 xinming joined
timotimo yes please 14:47
guifa2 lizmat++ 14:48
patrickb25 rba++ timotimo++
rba: rakubrew.org isn't hosted on lavm-perl6infra-1.atikon.io is it? 14:49
rba patrickb25: rakubrew.org is separted (and redundant :-))
patrickb25 That's what I remembered :-) 14:50
rba patrickb25: My open task is to give access from a "jumphost" to the rangeros runhosts. As soon this is done and documents you will get access to ti. 14:54
patrickb25 rba++ :-D
rba timotimo: please try to login with user timo. 14:55
timotimo i'm logged in, can i change my password? :)
rba timotimo: handle with care you got root rights using sudo...
timotimo only after i've obtained or changed my password :D
rba sure the timo user is yours.
timotimo well, passwd asks for the current password, which i don't think i haev 14:56
rba Will set and send you pvt
timotimo OK
i mean, putting it in a 600-modded file in my home directory is better than sending it over irc 14:57
rba timotimo: Sure. Yet you have to change it anyway... 14:58
timotimo well, yeah, but if someone knows my username and just reads a few lines up for the hostname, they could quickly jump in and steal the account 14:59
assuming they can get our privmsg
rba last + logs doen's show something unexpected. an attacker must have been very quick to hide his trace though. Yet you're right anyway... 15:01
timotimo: Be careful with changing nginx config and restart as nginx is serving all the sites... 15:02
timotimo: Whenever I have a time I like to continue my work to get websites ecapsulated in docker containers and run them on two hosts. Yet I will let you know before something is production ready... 15:04
rypervenche "nginx -t" first to make sure the config is safe to reload, and then a reload would probably be better than a restart. 15:05
rba rypervenche: agreed
timotimo good 15:13
are any of the dockered websites on this server? can it be used to put sites up for testing after they work locally?
15:27 patrickb25 left 15:31 squashable6 left 15:32 patrickb joined 15:33 squashable6 joined 15:36 softmoth joined 15:42 kensanata left 15:46 abraxxa left, abraxxa1 joined 15:48 softmoth_ joined 15:49 softmoth left, sena_kun left 15:51 abraxxa1 left, abraxxa joined 16:03 andrzejku left
rypervenche If I want to have a Class attribute be created from other attributes when I great the instance, what tool would I use for that? BUILD? Or not even? E.g., I have Str $.date and Str $.time attributes and would like to automatically combine them into a DateTime $.datetime . 16:13
I know I could do that combining outside of the Class, but I'm curious how to do it inside of it. 16:14
jnthn class Foo { has DateTime $.datetime; submethod TWEAK(Str :$date!, Str :$time!) { $!datetime = ...whatever logic here... } } 16:15
rypervenche Ahhhh, TWEAK, that's what it was. Thank you. I knew I had seen the solution before. 16:16
16:21 aluaces joined 16:35 sena_kun joined 16:40 molaf joined 16:42 dakkar left, xinming left 16:45 xinming joined 17:03 sftp joined 17:04 sftp left 17:07 sftp joined 17:10 cpan-raku left, softmoth_ left 17:11 cpan-raku joined, cpan-raku left, cpan-raku joined, softmoth joined 17:15 xinming left 17:16 xinming joined 17:31 Sgeo joined 17:35 defaultxr joined 17:41 xinming left, xinming joined 17:44 Manifest0 left 17:46 Manifest0 joined 17:53 sena_kun left 18:02 hungrydonkey left 18:06 andrzejku joined, sena_kun joined
xinming termbin.com/1hov <--- Is there roadmap for this bug to be fixed? :-) 18:21
I found it last year, then I got busy with other things, When I try to reread the doc, and find code snippets, and find this bug still exists. :-) 18:22
18:28 _jrjsmrtn left, Sgeo left, __jrjsmrtn__ joined
[Coke] xinming: that snippet doesn't show the results or the expected results 18:29
Do you know if a ticket was opened?
18:31 bocaneri left, Sgeo joined
[Coke] what's the bug? the missing , in the first @a definition means there are two elements there. 18:32
(is it that the two item list in the resulting @a has x and y, not y and z? 18:33
18:35 sena_kun left
cpan-raku New module released to CPAN! LibXML (0.5.6) by 03WARRINGD 18:35
vrurg weekly: vrurg.github.io/arfb-publication/0...ning-raku/ 18:36
notable6 vrurg, Noted! (weekly)
xinming [Coke]: It just needs to be clarified, that for @a, the second pair doesn't have comma, then, it'll parsed as 2 elements, 18:37
[Coke]: where the @b parsed correctly
[Coke]: IIRC, I asked to add an warning in this case. as when we are in a large array with structure like this, We'll have subtle bug which is a bit hard to track 18:38
guifa2 xinming: remember that any line that terminates in } "counts" as a bracket followed by a semi colon 18:47
m: @a = (1,2,3;4,5,6;7,8,9); @a.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;4,5,6;7,8,9); @a.say
guifa2 m: my @a = (1,2,3;4,5,6;7,8,9); @a.say
camelia [(1 2 3) (4 5 6) (7 8 9)]
guifa2 ah, you were talking not about a subtle bug in Raku, but in the program that leaves off the comma 18:48
18:50 sena_kun joined 18:57 molaf left 19:01 softmoth left 19:04 sena_kun left 19:05 sena_kun joined 19:11 sena_kun left
xinming guifa2: Yes, No matter wether we consider it as a "bug", I think we need to give warnings about people for this. 19:17
abraxxa vrurg: great article! thanks! 19:20
I wonder if types like Int are also different in 6.c and 6.d scope and a comparison would return false? 19:26
like in the Grammar example
lizmat they are the same
Grammar is really one of the few that are currently different between versions 19:27
abraxxa but it could happen and introduce quite bad breakages?
lizmat PseudoStash is another one
19:28 MasterDuke joined
abraxxa lizmat: just reading the weekly, such things as the fix for order of files loading, do these fixes include added tests to Roast? 19:31
19:32 sena_kun joined
lizmat abraxxa: note the "tests needed" tag in github.com/rakudo/rakudo/issues/3783 19:32
abraxxa I didn't mean this specific fix but more generally if the Roast test suite for 6.c and 6.d is extended in the -errata branches with tests for things found where obviously no test existed? 19:34
and as Raku can't parse and execute Perl 5 code, why are .pm files searched at all? 19:35
lizmat historically, .pm files were allowed and a "use v6" inside them, would make them Perl 6 modules 19:36
that's all leftover from the time where Perl 6 was to be the successor of Perl 5 19:37
abraxxa I would have broken with that when the rename happened 19:38
even pm6
lizmat we need pm6 as there are still quite a few modules out there with the .pm6 extension
abraxxa renaming files shouldn't be that hard 19:39
lizmat I guess, with a "use v6.e.PREVIEW" active, we could remove .pm as an option
abraxxa yeah
lizmat but we currently have no way to implement that, we need the newdisp branch to have landed for that
abraxxa is the loading code not in a setting? 19:40
lizmat yes, it is
well, most of it
it's called from World.nqp
abraxxa which should be renamed to World.nqr :)
ShimmerFairy The extensions from the era of "We're gonna replace Perl 5, right guys?!" I feel can be dropped by this point (using them instead of .pm6 etc. was uncool for years before the Raku rename), but the Perl 6-esque extensions are gonna have to be supported for a long time yet. 19:43
raydiak wonders if App::Pray should be renamed...to...Rray? 19:47
lizmat abraxxa: we've been over this: there will be no rename of NQP or the .nqp extension 19:48
we'll just de-emphasize it being an acronym
ShimmerFairy NQP, after all, is still not quite Perl :)
19:52 abraxxa left 19:53 abraxxa joined
abraxxa twitter.com/cpan_author/status/128...2437941248 19:53
can someone with a twitter account give him a better answer please?
I've asked the same thing in the past an remember that there is a way to say: set it to its default value 19:54
using a Type requires to know the type of the variable or attribute and if it changes replace it everywhere
Geth_ ¦ problem-solving: lizmat assigned to rba Issue pl6anet.org is a name that does not reflect Raku github.com/Raku/problem-solving/issues/212 19:55
lizmat abraxxa : doesn't jnthn's answer cover it ? 19:59
ShimmerFairy: indeed :-)
20:00 ShimmerFairy left
abraxxa lizmat: why can it be used with the automatically generated accessor method but not the manuelly written by him? Because of the method type definition? 20:00
lizmat yup, if the method had been written as: method x() is raw { $!x }, it would have worked 20:02
because that's what the autp-generated accessor really is
abraxxa i see, thanks!
so Nil was the thing you need to assign to reset the var to its default value?
lizmat if the attribute does not have "is rw", then the accessor is defined without the "is raw" 20:03
m: my $a is default(42) = 666; say $a; $a = Nil; say $a
camelia 666
20:09 andrzejku left
defaultxr hello. dumb noob question: i'm used to late-binding languages that allow me to do stuff like $*SCHEDULER.cue({ &thing(); }, every => 1); and then redefine &thing and have the new definition called the next time the schedule runs that cancellation. however, simply redefining &thing doesn't seem to work in Raku; the scheduler just continues calling the function as it was defined when i cued the 20:09
cancellation. what would be the best way of doing this in Raku?
20:09 molaf joined
lizmat when you pass &thing, it is pass by value 20:10
so changing &thing afterwards, won't help 20:11
however, what you *could* do is make &thing a wrapper that looks at an atomicint lexical variable
and decides which actual code to actually call 20:12
or if you want to get fully flexible, have &thing look at a outer lexical which you can change with cas() to be some other code to execute
20:12 ShimmerFairy joined
lizmat defaultxr: hope that made sense? 20:13
defaultxr i'm still extremely new to Raku so i'm not familiar with the things you mentioned, but i think they will point me in the right direction :) i'll check the docs for them and see what i come up with, thanks! 20:14
Xliff defaultxr: Do you know the things that &thing can be set to at compile time? 20:15
rypervenche Where would I look in the docs to see what "::CLASS:U:" means? (I understand the U/D bit, but not sure about the :: syntax around it) 20:16
defaultxr Xliff, nope. i want to be able to change &thing to anything at any time
Xliff m: my $f; sub a { say 'a'; }; sub b { say 'b'; }; my $f = &a; $*SCHEDULER.cue({ $f() }, every => 1); Promise.in(5).then({ exit }); Promise.in(2).then({ $f = &b }) 20:20
camelia Potential difficulties:
Redeclaration of symbol '$f'.
at <tmp>:1
------> 3 { say 'a'; }; sub b { say 'b'; }; my $f7⏏5 = &a; $*SCHEDULER.cue({ $f() }, every =
Xliff m: my $f; sub a { say 'a'; }; sub b { say 'b'; }; $f = &a; $*SCHEDULER.cue({ $f() }, every => 1); Promise.in(5).then({ exit }); Promise.in(2).then({ $f = &b })
camelia a
Xliff m: my $f; sub a { say 'a'; }; sub b { say 'b'; }; $f = &a; $*SCHEDULER.cue({ $f() }, every => 1); Promise.in(5).then({ exit }); Promise.in(2).then({ $f = &b }); sleep 6;
camelia a
Xliff ^^^
defaultxr rad, that is indeed what i'm looking for! 😎 thanks Xliff! 20:22
Xliff yw
lizmat Xliff: of course, that is not threadsafe 20:24
that's why I mentioned either using cas() or an atomicint to indicate what you really want to execute
20:24 kensanata joined
defaultxr lizmat, do you mean even just evaluating $f = &a; while the cancellation is running is not safe? or do you mean like if i were to do anything more crazy with threads, i.e. changing $f from multiple different threads? 20:29
for now i'm just doing the former
20:29 _jrjsmrtn joined 20:30 sena_kun left
defaultxr i.e. i'm just doing $f = &a by entering it in the repl, not from any code running elsewhere 20:30
lizmat the chance is minimal, but yeah: if the cued code would read the scalar half-way the assignment, there's no telling what could happen
20:31 __jrjsmrtn__ left
lizmat now, in practice, for testing and such, it's ok to do it like that 20:31
and possibly for production in *that* particular case (assigning to a scalar) safe enough to give you an outdated value
but anything more complex like that, e.g. pushing or popping from an array, would not be advisable 20:32
defaultxr ah, ok, gotcha. yeah i'm just playing around right now, but i'll keep that in mind when start to do anything more serious :) thanks again to both of you 20:33
lizmat defaultxr: what decides to change the code to be executed?
maybe you're better off with a react { whenever { } } structure
the whenever will guarantee you there will only be *one* thread running that code at any time
defaultxr the user decides (i.e. just me right now). i'm basically just playing around with the idea of doing some live coding music type stuff in raku, and i want to have a function that is constantly running, i.e. to generate a rhythm, but can be modified without needing to manually stop and restart the cancellation 20:35
if that makes sense
i'll look into react and whatever too 20:36
Xliff lizmat: Hence my first answer. Since he said he didn't know what he wanted to run, I figured I'd give him an answer.
lizmat Xliff++ 20:39
Xliff defaultxr: If you know all of the potential subroutines for $f at compile time, then you could do something like this:
m: my atomicint $f = 0; sub a { say 'a'; }; sub b { say 'b'; }; $f = &a; $*SCHEDULER.cue({ given $f { when 0 { a(); }; when 1 { b(); default { c(); }; }; }, every => 1); 20:40
camelia 5===SORRY!5=== Error while compiling <tmp>
Strange text after block (missing semicolon or comma?)
at <tmp>:1
------> 3}; when 1 { b(); default { c(); }; }; }7⏏5, every => 1);
Xliff m: my atomicint $f = 0; sub a { say 'a'; }; sub b { say 'b'; }; $f = &a; $*SCHEDULER.cue({ given $f { when 0 { a(); }; when 1 { b(); default { c(); }; }; }, every => 1);
camelia 5===SORRY!5=== Error while compiling <tmp>
Strange text after block (missing semicolon or comma?)
at <tmp>:1
------> 3 }; when 1 { b(); default { c(); }; }; }7⏏5, every => 1);
Xliff m: my atomicint $f = 0; sub a { say 'a'; }; sub b { say 'b'; }; $f = &a; $*SCHEDULER.cue({ given $f { when 0 { a(); }; when 1 { b(); default { c(); }; }; }; }, every => 1); 20:41
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared routine:
c used at line 1
Xliff m: my atomicint $f = 0; sub a { say 'a'; }; sub b { say 'b'; }; sub c { say 'wtf?'; }; $f = &a; $*SCHEDULER.cue({ given $f { when 0 { a(); }; when 1 { b(); default { c(); }; }; }; }, every => 1);
camelia This type cannot unbox to a native integer: P6opaque, Sub
in block <unit> at <tmp> line 1
[Coke] you can't set an atomic int to a sub. 20:42
Xliff m: my atomicint $f = 0; sub a { say 'a'; }; sub b { say 'b'; }; sub c { say 'wtf?'; }; $*SCHEDULER.cue({ given $f { when 0 { a(); }; when 1 { b(); default { c(); }; }; }; }, every => 1);
camelia ( no output )
[Coke] ... there you go
Xliff m: my atomicint $f = 0; sub a { say 'a'; }; sub b { say 'b'; }; sub c { say 'wtf?'; }; $*SCHEDULER.cue({ given $f { when 0 { a(); }; when 1 { b(); default { c(); }; }; }; }, every => 1); sleep 2; $f = 1; sleep 2; $f = 'a'; sleep 2
camelia a
This type cannot unbox to a native integer: P6opaque, Str
in block <unit> at <tmp> line 1

Xliff m: my atomicint $f = 0; sub a { say 'a'; }; sub b { say 'b'; }; sub c { say 'wtf?'; }; $*SCHEDULER.cue({ given $f { when 0 { a(); }; when 1 { b(); default { c(); }; }; }; }, every => 1); sleep 2; $f = 1; sleep 2; $f = 42; sleep 2 20:43
camelia a
Xliff ^^ threadsafe
But you have to be able to at least know all the potential outcomes for f. Although with that setup, you can keep adding on until you are satisfied. 20:44
[Coke] Xliff++
Xliff m: my atomicint $f = 0; sub a { say 'a'; }; sub b { say 'b'; }; sub c { say 'wtf?'; }; $*SCHEDULER.cue({ given $f { when 0 { a(); }; when 1 { b(); }; default { c(); }; }; }, every => 1); sleep 2; $f = 1; sleep 2; $f = 42; sleep 2 20:45
camelia a
Xliff m: my atomicint $f = 0; sub a { say 'a'; }; sub b { say 'b'; }; sub c { say 'wtf?'; }; $*SCHEDULER.cue({ given $f { when 0 { a(); }; when 1 { b(); }; default { c(); }; }; }, every => 1); sleep 2; $f = 1; sleep 3; $f = 42; sleep 2 20:46
guifa2 defaultxr: It looks like no one answered your ::?CLASS question. That's a compile-time variable, see: docs.raku.org/language/variables#i...::%3FCLASS
camelia a
defaultxr guifa2, i think you mean rypervenche 20:47
guifa2 err yup
rypervenche: ^^
rypervenche Hmm. Why is it ::CLASS:U: in this case instead of ::?CLASS:U: and why the extra : at the end? 20:48
20:48 cpage_ joined
defaultxr and thanks Xliff, though i won't know all of the potential outcomes in advance since what i'm trying to do involves improvisation/trial and error in real time 20:48
20:49 sena_kun joined
[Coke] in a signature, trailing : indicates the "self" 20:49
in a *method* signature, I mean
rypervenche For example, FCO has it in his code here: github.com/FCO/Red/blob/master/doc...lationship
20:52 cpage left, cpage_ is now known as cpage
[Coke] so, the method as defined must be called on an undefined object 20:54
(in java, that'd be a static method, e.g.)
and the ::CLASS:D: is an instsance method. 20:55
guifa2 oh 20:56
yuplushi is there a currated list of "best perl6/raku" youtube talks?
guifa2 rypervenche: ::CLASS is actually a type capture
It's just the most common is ::T
20:57 lostmywindows joined
lizmat yuplushi: no, there isn't to my knowledge 20:57
but a few months ago, someone made quite a few ones
[Coke] guifa2: ah, good call, yes. 20:58
rypervenche guifa2: Hmm, ok thanks. I'll have to do some reading to wrap my mind around type captures.
yuplushi maybe i should make a list, even filtering out the p5 talks would make it easier to browse them 20:59
guifa2 rypervenche: basically, type capture says "I don't know what type I'm going to get, but whatever I get, I need to use it again elsewhere"
yuplushi: tbh, if .author eqv $jnthn | $lizmat, it'll be awesome, but those don't tend to be intro video types (if that's what you're looking for). A curated list in a wiki or doc page would actually be pretty cool esp with a quick summary
[Coke] (given that it's in a method definition, when invoked it'll have to be something of that type or a subtype) 21:00
guifa2 rypervenche: so imagine I want a function to do something to two variables, but I want to make sure they're the same type (eg Int and Int, or Str and Str)
you could do a giant list of multis, but those aren't very extendable.
[Coke] er, -in the definition *and* it's the self: parameter)
guifa2 You could do sub foo ($a, $b where $b.WHAT == $a.WHAT) { … } 21:01
but the cleanest way is sub foo (::TYPE $a, TYPE $b) { … }
TYPE gets set to whatever $a's type is, and then becomes a constraint on $b
rypervenche Ahhhh. 21:02
lizmat yuplushi : maybe www.youtube.com/channel/UCDkz-__gl...LexukpG0DA is a good start
guifa2 in the method then, you could also say my TYPE $c := $a, for instance
21:02 kensanata left
lostmywindows not sure if ontopic but will raku/perl6 be available in zeal or other convenient format? 21:03
21:04 sena_kun left
guifa2 rypervenche: my guess though is that MasterDuke actually meant to say ::?CLASS in that case though :-) 21:04
21:05 rindolf left
lizmat lostmywindows: I suggest you make an issue in the doc repo 21:05
rypervenche SmokeMachine rather. :P
guifa2 is still waking up :-) 21:07
yuplushi lizmat, thanks haven't seen those before
lostmywindows thanx lizmat 21:10
21:19 sena_kun joined
leont_ rypervenche: your ticket on YAMLish wasn't quite clear to me 21:28
21:31 patrickz joined
SmokeMachine I’ve done that wrong!!! I’ll fix that... it should be ::?CLASS:U: 21:31
21:32 hungrydonkey joined
rypervenche leont_: Take a look at yaml.readthedocs.io/en/latest/example.html and search for "If a block sequence or block mapping is the element of a sequence" 21:39
I'd never even seen the non-compact version until I used YAMLish. Then I read the spec and learned about the compact and non-compact versions. 21:40
SmokeMachine Fixed 21:42
leont_ It's YAML, there are several ways to do everything 21:45
I mean, there are like 5 syntaxes for strings
21:47 Sgeo left 21:49 skids left, Sgeo joined 21:50 skids joined
raku-bridge <勉人> how do i assign a unicode compatibility character in raku? > $a = 0xF97E.chr 量 > $a.ord.base(16) 91CF 😕🤔⁉️ 22:03
ShimmerFairy Looks like you want to pipe it through NFKD or NFKC normalization 22:07
m: say 0xF97E.chr.NFKC.Str.ord.base(16)
camelia 91CF
jnthn Str means NFG which implies NFC
raku-bridge <勉人> m: say 0xF97E.chr.NFKD.Str.ord.base(16) 22:08
evalable6 91CF
ShimmerFairy yeah, the .NFKC (or NFKD) converts the string to a new type of object, which is why the .Str is there to immediately turn it back into a regular everyday Str. 22:09
22:09 Sgeo left
raku-bridge <勉人> it still doesnt work 22:09
jnthn Yes, but Uni => Str coercion means "normalize me"
22:10 Sgeo joined
jnthn You'd have to leave it as a Uni (which of course has a bunch of limitations at the moment) 22:11
ShimmerFairy Yeah, dropping the .Str lets you keep the string in its newly-normalized form.
raku-bridge <勉人> > 0xF97E.chr.NFKD NFKD:0x<91cf> > 0xF97E.chr.NFKC NFKC:0x<91cf> 22:12
<勉人> doesnt seem to work
jnthn You can't go via .chr because .chr makes a Str which is normalized 22:14
m: say Uni.new(0xF97E).NFKD
camelia NFKD:0x<91cf>
jnthn huh, what's that doing... 22:15
raku-bridge <勉人> m:say Uni.new(0xF97E)
evalable6 Uni:0x<f97e>
raku-bridge <勉人> how do i compare this to a string? 22:16
jnthn It's been years since I read the spec of what NFKD and NFKC are meant to do, though
22:18 patrickb left
jnthn Well, eq, but again, if you have a Str on the other side then it will have been normalized too 22:19
raku-bridge <勉人> womp
22:19 patrickz left
jnthn (Before you even get to doing the comparison) 22:19
guifa2 . o O ( Str does what's best and logicla 99.9% of the time. That other .1% though… ) 22:20
jnthn Well yes, that's why there's Uni too, for the .1%, though it turns out so few people need this that it's received little implementation attention.
raku-bridge <勉人> it makes sense. most of the time ud want 量 to match with 量 22:21
guifa2 jnthn: not sure if you saw it, but we finally solved an XML parse bug this week that I reported a year+ ago and it revolved around that .1% 22:23
raku-bridge <勉人> i started learning raku 2 weeks ago 🙃 22:24
<勉人> the grammars convinced me to change ships
guifa2 XML content that begin with a combining mark bomb it, because the grammar looking for > won't match in, e.g, >́ . 22:25
22:25 xinming left
guifa2 勉人: the grammars are so much fun to work with 22:25