»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
Set by moritz on 22 December 2015.
skids Hrm. I have an inexplicable situation. Essentially I have this in nqp: nqp::say("1"); try { thing }; nqp::say("2"); ...inside a few loops in some MetaModel core code. when run, It hangs printing a lot of "2"'s and no "1"s. 00:13
tbrowder hi #perl6 00:20
skids o/ 00:20
tbrowder i'm trying to install module SSH::LibSSH (with zef) and get a failure expecting MAST::Frame which can't be found and i don't find it in the ecosystem 00:23
skids It seems to be running the try over and over again... I can get a CATCH block to output interleaved with the "2"s.
tbrowder skids: hello! 00:25
skids nqp/MoarVM/lib/MAST/Nodes.nqp is where MAST::Frame comes from. 00:26
Maybe your nqp has come unsynced with your rakudo?
skids OK, so it seems what happened was a subsequent exception after the "try" thought it was in the "try" and control flow skipped back to the try block. 00:48
MasterDuke skids: that's...interesting... 00:57
skids Kinda hard to golf the whole MetaModel though :-) 00:58
Geth doc/master: 4 commits pushed by (Will "Coke" Coleda)++ 02:01
[Coke] m: $*ERR=Nil; note 3; 02:07
camelia No exception handler located for catch
at SETTING::src/core/Exception.pm:395 (/home/camelia/rakudo-m-inst-2/share/perl6/runtime/CORE.setting.moarvm:print_exception)
from SETTING::src/core/Exception.pm:452 (/home/camelia/rakudo-m-inst-2/share/pe…
skids eh... I know I didn't just fix all those TODOs... what's the roast branch to spectest on these days? 02:25
[Coke] in "multi sub", the "sub" is optional. Ditto "proto sub" ? 02:26
skids Yes and I think so.
MasterDuke skids: should be just master
skids Oh... is 6.c.errata dead now? 02:27
src/core/List.pm:proto flat(|) {*} # Well, it's gotten away with here at least 02:28
MasterDuke no, but new tests are added to master
[Coke] errata is for changes that differ from the original christmas release, but hopefully in ways that clarify or reduce other issues. 02:31
like, if a test incorrectly checked exception test or that something threw adhoc, instead of a specific exception, e.g. 02:32
Geth doc/coke/multi: 58dbd77e6b | (Will "Coke" Coleda)++ | xt/examples-compilation.t
add test to avoid multi sub
02:40
doc/coke/multi: 028f2bbcc9 | (Will "Coke" Coleda)++ | 34 files
avoid multi sub
skids At long last, I have reworked my rolevolution patch: gist.github.com/skids/18fa6fb1de77...6e82e9fcc2 02:54
travis-ci Doc build failed. Will "Coke" Coleda 'avoid multi sub' 03:00
travis-ci.org/perl6/doc/builds/268586063 github.com/perl6/doc/compare/58dbd...8f2bbcc929
buggable [travis build above] ☠ Did not recognize some failures. Check results manually. 03:00
todd Hi All, it is imperative that I get a program going to email me status reports on a RAID assembly (Fedora 26 Linux). Because of github.com/retupmoca/P6-Net-SMTP/issues/17 I can not eMail through Perl6's Net::SMTP. I do not want to call mailx and I really, really do not want more Perl 5 code to maintain. I was thinking my best route to eMail would be calling the system's Email::Sender::Transport::SMTP. Do you guys have an easier 04:02
Juerd On a typical Unix-like system, the easiest and most reliable way to send email from scripts is to let the MTA handle it. Practically every system with an MTA will have a /usr/sbin/sendmail that will inject a message into the right spooler. 04:14
The MTA then handles SMTP to send it to a remote host. If the system does not have an MTA yet, and you're root, you could install ssmtp, which is a dummy MTA which will just send everything to a smarthost over SMTP. 04:15
skids Try an P5 module via Inline::Perl5 maybe?
todd I still look at ssmtp as this is an secure smtp problem with Net::SMTP. I have the WORST luck trying to use Inline::Perl5. 04:20
Juerd with run(:in, </usr/sbin/sendmail -t -oi>).in { .print: "To: [email@hidden.address] [email@hidden.address] example\n\nHello, world!"; .close } 04:23
Just be aware that newlines in headers create new headers (unless folded) so be careful with unknown strings in the headers :) 04:24
todd where does the message body go? 04:25
Juerd todd: Just to avoid confusion: with ssmtp I meant wiki.debian.org/sSMTP -- i.e. simple smtp, not secure smtp
simple smtp does support secure smtp though :)
afk # off to bed, 6:26 am here... 04:26
todd this thing needs to talk ssl on port 465
skids Are you using ::Simple or ::Raw? 04:37
todd Net::SMTP 04:41
will look at what modules I import
use Net::SMTP; use Email::MIME;
skids Are you passing :raw to .new? 04:42
todd my $client = Net::SMTP.new(:server( $smtp ), :port( $port ), :ssl, :starttls, :debug( 1 ) )
don't think so.
skids Ok, maybe there's someting that can be done... looking. 04:43
todd github.com/retupmoca/P6-Net-SMTP/issues/17 crashes on port 465 with smtp.zoho.com
error:1408F119:SSL routines:SSL3_GET_RECORD:decryption failed or bad record mac 04:44
here is a three liner to simulate the crash
#!/usr/bin/env perl6 use Net::SMTP; my $client = Net::SMTP.new( :server( "smtp.zoho.com" ), :port( 465 ), :ssl, :starttls, :debug( 1 ) ); 04:45
skids Yeah it's because the protocol version is not being set, I think. OpenSSL:: has an option for that, IO::Socket::SSL not so much. But it could also be the libssl version on that system.
There are a few other similar bug reports on those packages. 04:46
todd believe it or not, mailx works.
skids First IO::Socket::SSL needs to support passing extra options to OpenSSL::. Then Net::SNMP needs to support passing extra options to IO::Socket::SSL. Both of the latter could use a good dose of interface consistency and dependency injection. 05:01
todd Can I alter my code to support this? 05:02
skids Unfortunately it would be a lot of copy and paste, as the call to OpenSSL.new is hidden in a monolithic private method. 05:03
todd Is there a way to waeve that into the three liner I sent?
skids Hah, no :-) 05:04
todd okay. How do I can the system's Email::Sender::Transport::SMTP ?
todd call not can 05:09
skids One of the github issue users says starttls worked for him... hmmm.
todd port 465? 05:10
my $client = Net::SMTP.new( :server( "smtp.zoho.com" ), :port( 465 ), :starttls, :debug( 1 ) ); 05:11
just hangs
skids No I guess I'm reading that wrong. It looks like you get that SSL3 message if you connect to a plain connection and try to do ssl: github.com/sergot/io-socket-ssl/issues/17 github.com/sergot/openssl/issues/22 (That is for XMMS but TLS is TLS no matter what you are running over it) 05:13
Oh I guess your error is a bit different. 05:14
todd How about a call to a C module (enter the "dark side")? 05:16
Tha time out finally came bac: 05:17
<== Start argument to substr out of range. Is: 3, should be in 0..0; use *-3 if you want to index relative to the end in method get-response at /home/tony/.perl6/sources/C7BFE131D057F94A1EC6C5CBF4DFC8C731D85400 (Net::SMTP::Raw) line 13 in method start at /home/tony/.perl6/sources/B0AFFC7E1CD3A465D71AF333700CF7086E4870E5 (Net::SMTP::Simple) line 59 in method new at /home/tony/.perl6/sources/AF0C4F60F05B28648456130019BA1D9C3B2FE938 (N
skids github.com/sergot/openssl/issues/1 shows that SSL3 error, but supposedly OpenSSL:: had it fixed in issues 34 and 35. 05:21
skids Yeah the rest of those errors are just garbage left over from not handling the original error. 05:24
todd is zef now support on Fedora 26's repo, or do I still have to github it? It does not show up on pbone or dnf 05:28
skids I dunno I do all my Perl6 stuff with git.
todd I try to stay with the repo's if I can 05:30
skids Have you tried openssl s_client -connect <mailhost>:465 to verify it is not some problem on the system? 05:31
todd will try. But I do communicate with this server over tls and Thunderbird 05:32
skids ah.
todd openssl s_client -connect mail.zoho.com:465
hangs
poop!
skids Should... until you EHLO.
todd still hangs 05:33
skids ^D? 05:34
todd what does ^D? mean? 05:35
preaction Ctrl+D
skids control-d. Should close the connection. If it doesn't then you really are hung and not just spinning in a protocol. 05:36
todd I am ssh'ed into a fully updates Fedora 26 server. I am trying to zef in the pieces needed for my three line crash test 05:38
todd zef is having fun insatlling Net::SMTP 05:41
Searching for missing dependencies: Email::Simple, MIME::Base64, Digest::HMAC, Digest, IO::Socket::SSL
skids Did s_client say anything at all? 05:42
todd no
todd over on the f26 server, my $client = Net::SMTP.new( :server( "smtp.zoho.com" ), :port( 465 ), :starttls, :debug( 1 ) ); 05:43
gives
Type check failed in binding to parameter '@seps'; expected Positional but got Str ("\r\n") in method get at /usr/lib64/perl6/site/sources/AF0C4F60F05B28648456130019BA1D9C3B2FE938 (Net::SMTP) line 24 in method get-response at /usr/lib64/perl6/site/sources/C7BFE131D057F94A1EC6C5CBF4DFC8C731D85400 (Net::SMTP::Raw) line 11 in method start at /usr/lib64/perl6/site/sources/B0AFFC7E1CD3A465D71AF333700CF7086E4870E5 (Net::SMTP::Simple) line 05:44
skids Wasn't starttls on 587? 05:45
todd oops, uncomment the wrong line
my $client = Net::SMTP.new( :server( "smtp.zoho.com" ), :port( 465 ), :ssl, :debug( 1 ) ); 05:46
Cannot locate native library 'libssl.so': libssl.so: cannot open shared object file: No such file or directory in method setup at /usr/lib64/perl6/sources/24DD121B5B4774C04A7084827BFAD92199756E03 (NativeCall) line 316 in method CALL-ME at /usr/lib64/perl6/sources/24DD121B5B4774C04A7084827BFAD92199756E03 (NativeCall) line 328 in method new at /usr/lib64/perl6/site/sources/685BE85E0DDBD365D590D9B90C50E58E76D0AB36 (OpenSSL) line 36 in
skids Missing symlink or something would be my guess. 05:47
todd my $client = Net::SMTP.new( :server( "smtp.zoho.com" ), :port( 587 ), :starttls, :debug( 1 ) );
Type check failed in binding to parameter '@seps'; expected Positional but got Str ("\r\n") in method get at /usr/lib64/perl6/site/sources/AF0C4F60F05B28648456130019BA1D9C3B2FE938 (Net::SMTP) line 24 in method get-response at /usr/lib64/perl6/site/sources/C7BFE131D057F94A1EC6C5CBF4DFC8C731D85400 (Net::SMTP::Raw) line 11 in method start at /usr/lib64/perl6/site/sources/B0AFFC7E1CD3A465D71AF333700CF7086E4870E5 (Net::SMTP::Simple) line 05:48
symlink to where?
skids some filename libssl is hiding as, with a bunch of numbers after the libssl :-)
skids Anyway I should have gone to bed 2 hours ago. Good luck. Sorry I can;t keep my eyes open at this point. 05:50
todd thank you for the help!
I have to go too
Skarsnik hello 07:28
lizmat Skarsnik o/ 07:32
Skarsnik hm travis-ci.org/perl6/DBIish/builds/268607217 is that a zef issue§ 08:21
timotimo yeah, that rakudo is too old 08:48
but the latest rakudo version has trouble, too 08:49
Skarsnik oh not the same error 08:50
timotimo yeah 08:51
Skarsnik damn everything fail
did it worked for the star release? 08:52
timotimo it should, no?
smls Is perl6.fail down for everyone? 08:58
Skarsnik isup.me/ 08:59
but yes
smls Zoffix runs that page, right? Is it planned downtime? 09:00
(It's very helpful for browsing Rakudo tickets...) 09:01
Skarsnik i should have a vm/chroot set for dbiis 09:02
timotimo i believe zoffix stopped renewing the extra domains he got 09:04
Skarsnik working with one hand is annoying x) 09:08
atroxaper Hello! 09:13
I try Dancer2 with Inline::Perl5. It works well. Do somebody know how I can run "perl6 app.p6" as a daemon. I mean perl6's process closed when I close shell. 09:15
smls timotimo: Is it available under a different domain? 09:19
atroxaper I found 'setsid'! :)) 09:27
Skarsnik timotimo, sry too tired to look at dbiish :( 09:35
timotimo smls: not entirely sure 09:43
trying to at the same time get something presentable for a lightning talk and pay attention to jnthn's talk 09:44
i think i'll close my laptop and watch attentively instead of struggling with my code :D
nadim hi, weird error message: Type check failed in binding to parameter 'val2'; expected Any but got Mu (Mu). The line looks like: multi method get_elements (Stash $s) { $s.sort(*.key)>>.kv.map: -> ($k, $v) {$k, ' => ', $v} } I am a bit lost 10:16
passed test before I pulled the latest rakudo
timotimo got a fix 10:28
but now it's lunch time and i have to go 10:29
gist.github.com/timo/805ace7f4fbd7...f4473adc2a test this please
bye
samcv hmm trying to see if this setup i did for travis so it will capture core dumps from a segfault and then have gdb print a backtrace afterward
but it's not triggering. so i guess i will have to just write something to force it to trigger 10:30
samcv hmm anyone have any clue why *this* is happening travis-ci.org/samcv/MoarVM/jobs/268644978#L1073 10:46
hmm ah maybe i haven't pushed the tags to my branch
that's it :)
smls m: say ((Mu) => 42).kv; 10:57
camelia Type check failed in binding to parameter 'val1'; expected Any but got Mu (Mu)
in block <unit> at <tmp> line 1
smls nadim: ^^ golfed
A bug in type `Pair`, it seems. 10:58
smls bisectable6: say ((Mu) => Mu).kv; 11:03
bisectable6 smls, Bisecting by exit code (old=2015.12 new=6cec6b7). Old exit code: 0
smls, bisect log: gist.github.com/03a10377df0b3e0409...9330750868
smls, (2017-08-13) github.com/rakudo/rakudo/commit/30...1310e9fd0f
smls nadim: I reported the bug as RT #131962 11:11
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=131962
smls In the meantime, you can work around it by replacing `.kv` with `.&{.key, .value}`
Or by destructuting the `Pair`s inside the signature, like `-> (:key($k), :value($v))` or `-> (:$key, :$value)` 11:12
smls *destructuring 11:18
Ah, sorry, I didn't realize that ‎timotimo‎'s fix referred to this very issue. 11:21
nadim smis++ 11:22
And I didn't realize either, thought he was talking to you
How dow one clean the rakudo build artefacts? a make clean didn't do the trick, subsequend build did fail (when I was trying to find which version was buggy) 11:23
MasterDuke make realclean frequently is more aggresive 11:24
Skarsnik add a test for this pair bug? :) 11:26
moritz git clean -xdf # fairly aggressive, works always 11:27
nadim moritz: that seems to be needed, reminds me how much make can suck sometimes 11:28
nadim What would be really nice is if the error message points at where the error is (Rakudo) rather than where the error originate (my code) is there a way to get that? 11:31
smls nadim: perl6 --ll-exception -e 'say ((Mu) => Mu).kv; 11:32
Which points to src/core/Rakudo/Iterator.pm:3064, which seems to be exactly the line that timotimo changed in that diff. 11:33
nadim I'm building the patched version, I'll keep that in mind next time I have so weird error. 11:34
nadim Patch does not work, still the same error, or I did something wrong. 11:47
nadim but using .&{.key, .value} does 11:53
timotimo: ^^
moritz m: say ((Mu) => Mu).kv 11:58
camelia Type check failed in binding to parameter 'val1'; expected Any but got Mu (Mu)
in block <unit> at <tmp> line 1
nine atroxaper: I usually just let systemd start my daemons 12:01
Very exciting: mi.cro.services/ 12:02
timotimo probably needs an exact same change a few lines below 12:09
moritz nine: what, we have HTTP/2 in Perl 6? I never know 12:17
moritz *knew 12:20
no mention of a license or link to sources though :(
nine jnthn promised to upload today :) License is Artistic 2 12:23
moritz github.com/croservices/
smls bisectable6: await do for ^20 { start dir("/").eager } 12:25
bisectable6 smls, Bisecting by exit code (old=2015.12 new=6cec6b7). Old exit code: 1
smls, bisect log: gist.github.com/97d96022fdfed416e6...df5b2b9353
smls, (2017-08-15) github.com/rakudo/rakudo/commit/23...50ec570b9d
smls \o/ 12:26
Looks like this commit by jnthn++ fixed RT #129845
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=129845
smls Is there a way to write a spectest for something like this?
I mean the test-case pretty much always failed before, but was still probabilistic... 12:27
moritz I guess dir('/') won't work on windows? 12:37
Geth ecosystem: 05dad74a71 | Altai-man++ (committed using GitHub Web editor) | META.list
Add cro to the ecosystem
12:45
[Coke] moritz: need a test on win64? 12:53
smls moritz: The test only needs `dir()` to construct a bunch of IO::Paths, it doesn't need to be directory / 12:54
So the test could create a temporary directory with a bunch of files in it, and use that... 12:56
moritz smls: or simply run dir('.') 12:59
smls My question was more regarding the probabilistic nature of the bug. I.e. are flappy spectests allowed if the false positives are rare?
moritz flappy tests are mostly unwanted, and should be skipped 13:00
but once the bug is fixed, they shouldn't flap anymore
smls yes, now the test reliably passes
But if that part of Rakudo is ever broken again, the test could conceivably only fail 99% of the time instead of 100% of the time... 13:01
moritz that's fine 13:02
smls ok
moritz we'll notice a 0% -> 99% failing quote, I hope :-)
smls moritz: What path will `dir(.)` be during a spectest run? 13:04
eh, `dir('.')`
moritz smls: rakudo's source tree 13:21
smls ok
nine I'd rather people wouldn't make that assumption 13:27
A slightly better version would be "a source tree of a Perl 6 implementation", but not assuming anything at all would be much better still
sumdoc Is there any data structure in perl6 like set in python that doesn't contain repeted elements? 13:39
nine sumdoc: set ;)
sumdoc: or rather Set, but there's a set constructor
m: my $s = set 1, 1, 2, 3, 2; say $s 13:40
camelia set(1 2 3)
sumdoc nine OK lemme see
lizmat m: dd (1,2,3).Set 13:41
camelia set(1,3,2)
sumdoc lizmat what is dd 13:43
my $string = "Pokhara is is city beautiful city of Nepal";
my @aray= $string.split(" ").words; say @aray.Set;
sumdoc Is it alright? I just want unique elements of the sentence string in an array. nine lizmat 13:44
Ok now I have made set with unique elements. How to access individual element of the set? 13:45
lizmat m: my $s = "Pokhara is is city beautiful city of Nepal".words.Set; dd $s.keys 13:46
camelia ("beautiful", "city", "is", "Nepal", "of", "Pokhara").Seq
lizmat dd is the tiny data dumper, so small it lost the t 13:47
sumdoc lizmat :)
lizmat although if you just want to iterator over the unique words, you could use .unique
lizmat m: dd "Pokhara is is city beautiful city of Nepal".words.unique 13:48
camelia ("Pokhara", "is", "city", "beautiful", "of", "Nepal").Seq
lizmat m: dd "Pokhara is is city beautiful city of Nepal".words.unique.sort(*.fc)
camelia ("beautiful", "city", "is", "Nepal", "of", "Pokhara").Seq
sumdoc lizmat Aye thats cool
But what if I want to access in this set "set(beautiful, city, is, Nepal, of, Pokhara)"
lizmat m: my $s = "Pokhara is is city beautiful city of Nepal".words.Set; dd $s<is> 13:49
camelia Bool::True
lizmat m: my $s = "Pokhara is is city beautiful city of Nepal".words.Set; dd $s<isnot>
camelia Bool::False
skids m: my $s = "Pokhara is is city beautiful city of Nepal".words.Set; dd $s<is city of town> 13:51
camelia (Bool::True, Bool::True, Bool::True, Bool::False)
sumdoc lizmat Alright. Can I find the total number of elements in the above set. I thought it will work but not "my $string = "Pokhara is is city beautiful city of Nepal"; $string.words.Set.elems;" 13:55
nine ?? 13:56
lizmat_ sumdoc: unique words or just number of words? 13:57
sumdoc unique words. Yeah its working "Pokhara is is city beautiful city of Nepal"; $string.words.Set.elems;"
lizmat_ m: dd "Pokhara is is city beautiful city of Nepal".words.unique.elems
camelia 6
lizmat_ no need to make it a Set then
sumdoc Is dd and say same. They r working like they are same.dd $string.words.Set.elems; and say $string.words.Set.elems; are working similarly izmat 13:59
skids dd will be more verbose much of the time.
.say/.gist is for casual human use, .print/.Str/.perl and dd is for programs and heavy debugging. 14:01
lizmat 'dd $a' is basically short for 'note $a.perl'
plus some extra features 14:02
skids m: my %a = a => { a => 2, b => [4,3,3] }; dd %a; dd %a 14:03
camelia Hash %a = {:a(${:a(2), :b($[4, 3, 3])})}
Hash %a = {:a(${:a(2), :b($[4, 3, 3])})}
skids oops.
m: my %a = a => { a => 2, b => [4,3,3] }; say %a;
camelia {a => {a => 2, b => [4 3 3]}}
lizmat s:n2d/dd/say/ :-)
*2nd rather :-)
smls lizmat_: According to the git log, last year you split off the multidim candidates of postcircumfix [ ] to `multidim_slice.pm` and gave them thorough NQP implementations. 14:04
lizmat_: But the multidim candidates of postcircumfix { } still remain in `hash_slice.pm`, in a seemingly half-finished state (much shorter and less NQP-y code, bug RT #130947, binding being NYI, etc.) 14:05
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=130947
smls lizmat_: I'm looking into that bug, but I'm wondering how to proceed... Should those candidates be moved to `multidim_slice.pm` as well, and be reimplemented to mirror their [ ] equivalents?
lizmat smls: checking 14:07
sumdoc lizmat for the previous string I want to write more effiicent version of this "for $string.split(" ").words -> $pokh { say $pokh if $pokh.chars > 5; };" 14:21
my $string = "Pokhara is beautiful city of Nepal";
I want to return an array which returns the words with chars more than 5 14:22
lizmat m: dd "Pokhara is is city beautiful city of Nepal".words.grep(*.chars > 5) 14:23
camelia ("Pokhara", "beautiful").Seq
lizmat m: dd "Pokhara is is city beautiful city of Nepal".words.grep(*.chars > 5).unique 14:24
camelia ("Pokhara", "beautiful").Seq
smls sumdoc: `.split(" ").words` is redundant... '.split' returns a sequence of fields, and then the `.words` method concatenates it to a single string again and then splits that string into words all over again. 14:25
sumdoc smls I see. How to return an array which returns the words in a sentence string with chars more than 5? 14:32
Zoffix smls: oh yeah, the domain expired 'cause I'm pushing for rename... Lemme configure a subdomain on rakudo.party
sumdoc: $string.words.grep(*.chars > 5) 14:33
Zoffix well I guess it's more 'cause the .party domains are expensive after first year and there's no point in having a whole domain just for that site. 14:34
sumdoc Zoffix Looks cool. Short and sweet
masak oh hai 14:35
smls o/ masak
masak today I had a bug because I didn't realize Bool ~~ Int ;) 14:36
sumdoc Zoffix why is this not valid list comprehension "($_ if $_.chars>5 for $string.words)
masak m: say Bool ~~ Int
camelia True
lizmat m: dd Bool.enums # look at the values :-) 14:37
camelia {:False(0), :True(1)}
masak yes 14:38
agree
smls m: enum A <Foo Bar>; say Foo ~~ Int;
camelia True
masak but I still feel it's a has-a relationship rather than an is-a relationship
smls m: enum A (Foo => "a", Bar => "b"); say Foo ~~ Str;
camelia True
Zoffix sumdoc: it is valid.
m: my $string = "fooffff barffff"; say ($_ if $_.chars>5 for $string.words)
camelia (fooffff barffff)
Zoffix smls: back up: fail.rakudo.party/ 14:40
smls Zoffix: thank!
*thanks
sumdoc Zoffix I thought this would also be valid but throwing error "($lu if $lu.chars>5 for $string.words);" 14:40
smls sumdoc: Where have you declared $lu ? 14:41
Zoffix sumdoc: $_ variable is a special topical variable that automatically gets the value being iterated over in that construct. You can't just change it to $lu 14:42
sumdoc smls Even after declaration my $lu, its throwing error
lizmat smls: can't look at it now, but I vaguely recall that the ones I added are optimized candidates, and the old ones just take all the cases that aren't handled by the optimized candidates 14:43
Zoffix &
smls lizmat: The {; } ones aren't just unoptimized though, they're incomplete and partially incorrect.
sumdoc Zoffix I thought that would work. This is valid in python [w for w in string if len(w) >5] 14:45
smls sumdoc: The `for w in` part gives the loop variable the name `w` in that Python code. Perl 6 does not support that for "list comprehensions". 14:46
Zoffix sumdoc: it's just a bit different in this language. You don't even have to declare variables at all in Pythong, right?
*Python
lizmat smls: very likely :-) I haven't touched them :-) 14:47
smls sumdoc: In Perl 6, using `for` and `if` as statement modifiers (a.k.a. "list comprehension") always uses the special variable `$_` (called the "topic") as the loop variable.
smls sumdoc: Only the block forms of `for` and `if` allow choosing a custom name for the loop variable using the arrow notation, e.g. `for $string.words -> $w { ... }` 14:48
Zoffix m: my $string = "fooffff barffff"; say (for $string.words -> $lu { $lu if $lu.chars > 5 });
camelia (fooffff barffff)
Zoffix sumdoc: you could write it this way ^ to get the variable.
But... $string.words.grep(*.chars > 5) is probably how most Rakudo programmers would write it :)
Zoffix & for real now 14:49
smls lizmat: Should I try my hand at reimplementing the {; } candidates by copy&pasting the optimized [; ] ones and going from there?
lizmat smls: be my guest :-)
smls ok :) 14:50
sumdoc smls ($lu if $lu.chars>5 for $string.words -> {$lu}); or ($lu if $lu.chars>5 for $string.words -> $lu); 15:17
smls sumdoc: Neither. As I said, Perl 6 does not support custom loop variable names for the "list comprehension" versions of `for` and `if`. 15:19
On for the block form: `for $string.words -> $lu { ... }`
That's because the -> is actually considered part of the block `-> $lu { ... }`. 15:20
sumdoc smls Oh I see
HoboWithAShotgun So I came up with a beatiful proverb. it is full of wisdom and experience, insightful and enriching. 15:21
smls sumdoc: The block version of `for` is always of the form `for EXPRESSION BLOCK`.
HoboWithAShotgun And then I got stoned and forgot it.
lizmat hopes there weren't any stones involved 15:22
HoboWithAShotgun I can neither deny, nor confirm that. 15:23
sumdoc I have this string my $string = "Pocket is Is empty this is Is an example"; I want to find number of unique words in this string, but I want to treat Is and is same. 15:27
So what I did was convert all to lower case and count the items but it is showing 1 15:28
Here is the code "say "$string".words.lc.unique.elems;"
lizmat m: "Pocket is Is empty this is Is an example".words>>.lc.unique.elems
camelia ( no output )
lizmat m: say "Pocket is Is empty this is Is an example".words>>.lc.unique.elems
camelia 6
sena_kun m: say "Pocket is Is empty this is Is an example".lc.words.unique.elems
camelia 6
lizmat that works too :-) 15:29
sumdoc What could be the reason this is not working say "$string.words.lc.unique.elems;" 15:30
smls Is there a way to run only specific spectest files, but still get the "skipping fudged tests etc." magic that `make spectest` provides?
lizmat make t/spec/foo.t
smls ah, thanks
sumdoc lizmat What could be the reason this is not working say "$string.words.lc.unique.elems;" 15:31
Juerd sumdoc: .words returns a Seq, which is multiple items
sumdoc: But .lc works on a single item
sumdoc Juerd Aye I see
Juerd sumdoc: It should help to change the order: $string.lc.words.unique.elems 15:32
sumdoc Yeah changinf the order works :)
Juerd Or, to apply the .lc on the individual words: $string.words».lc.unique.elems
Oh, I now see that lizmat already said that :) 15:33
And sena_kun
sumdoc What is this ">>" Juerd? 15:34
lizmat sumdoc: docs.perl6.org/language/operators#..._Operators 15:36
_cronus hello, is it ok to paste code related a question here or should I use pastebin? 15:44
moritz _cronus: please use a pastebin 15:45
unless it's only one line :-)
_cronus moritz: thanks
unclechu hi guys, is there something for compiling perl6 code to javascript? 15:47
moritz unclechu: yes, pmurias is working on rakudo-js
unclechu i just found this repo github.com/rurban/rakudo-js
moritz: you're talking about different one? 15:48
moritz unclechu: I'm talking about rakudo/rakudo branch js
unclechu i think you're about this one? github.com/rakudo/rakudo/tree/js 15:49
moritz yes
unclechu moritz: thanks
_cronus I am trying to learn perl 6 regexes. I wrote a small script - paste.ubuntu.com/25397783/ - but cannot understand it's behavior - specifically why it does not remove .1 from the first line. What am I missing? 15:51
moritz compiles a rakudo to be able to test this 15:55
AlexDaniel lol, you have to login to “download as text” 15:56
moritz AlexDaniel: or you can just copy & paste
AlexDaniel committable6: please copy & paste it
committable6 AlexDaniel, ¦please: «Cannot find this revision (did you mean “releases”?)»
AlexDaniel c: HEAD gist.githubusercontent.com/AlexDan...tfile1.txt 15:57
committable6 AlexDaniel, Successfully fetched the code from the provided URL.
AlexDaniel, ¦HEAD(e8137b4): «AAAA.1 val.1␤BBBB val.2␤AAAA val.3␤BBBB val.4␤»
moritz _cronus: I found look-arounds to be quite tricky; it works as you expect if you change it to s:g / ^^ <-[.]>+ <( '.' \S* / /
_cronus: the <( limits the match
geekosaur isn't that <-[.]> a bad perl 5 regex hack translated? 15:58
moritz no
a negative char class is still a valid tool in Perl 6 regexes
geekosaur is still waking up... not very successfully
moritz it seems to not work in the first line; if I insert another line before the AAAA.1 line, it does not work in the new first line, and works fine in the line with AAAA.1 16:01
lizmat SPW over 16:03
until later&
moritz m: given "abc\ndef\nghi\n" { say S/ <?after ^^ > /x/ } 16:05
camelia abcx
def
ghi
moritz m: given "abc\ndef\nghi\n" { say S:g/ <?after ^^ > /x/ }
camelia abcx
defx
ghix
x
moritz I don't understand why that is, but it's at the heart of _cronus' problem 16:06
m: given "abc\ndef\nghi\n" { say S:g/ <?before ^^ > /x/ } 16:07
camelia xabc
xdef
xghi
_cronus moritz: thanks. Any idea why <?after does not match first line? using <?after AA does match it.
moritz _cronus: ah, you probably want <?before> instead of <?after>
moritz <?after x> means "what comes after the curerent position must match x" 16:08
moritz or am I totally confused now? 16:09
I likely am
moritz m: given "abc\ndef\nghi\n" { say S:g/ ^^ /x/ } 16:09
camelia xabc
xdef
xghi
smls <?after x> means "The current position must not come after an x" 16:10
moritz s/not//
smls right
moritz m: given "abc\ndef\nghi\n" { say S:g/ <?after ^^> /x/ }
camelia abcx
defx
ghix
x
moritz is that wrong then? 16:11
isn't pos 0 after a start-of-line as well?
m: given "abc\ndef\nghi\n" { say S/ <?after ^^> /X/ } 16:12
camelia abcX
def
ghi
moritz m: given "abc\ndef\nghi\n" { say S/ <?after ^> /X/ } 16:12
camelia abc
def
ghi
X
AlexDaniel o_o
smls yeah, seem broken
moritz that *is* wrong
_cronus++
m: given "abc\ndef\nghi\n" { say S/ <?after $> /X/ } 16:13
camelia Xabc
def
ghi
moritz muhaha
smls apparently <?after > doesn't like anchors, yet... :P
moritz iirc <?after> is implemented by reversing the string, or something
who wants to write the bug report? :-)
smls heh, and probably forgot to reverse the meaning of the anchors accordingly... :P
moritz ok, I'll write the bug report as a failing test case, I guess 16:15
smls m: say "abc".match(/ <?after ^ > /).from; 16:16
camelia 3
smls moritz: ^^ A test-case without S/// 16:17
japhb OK, so Cro is jnthn's reveal from SPW? 16:23
sena_kun japhb, yeah. 16:25
japhb Ah, cool. Can't wait to see that slide deck / talk video
sena_kun me too. 16:26
japhb .tell Cro website typos: First HTTP flip page: 'SITINT', last HTTP flip page: 'requset', first Tooling flip page: 'delcaring'. 16:31
yoleaux japhb: I'll pass your message to Cro.
japhb .tell nthn website typos: First HTTP flip page: 'SITINT', last HTTP flip page: 'requset', first Tooling flip page: 'delcaring'.
yoleaux japhb: I'll pass your message to nthn.
japhb .tell jnthn website typos: First HTTP flip page: 'SITINT', last HTTP flip page: 'requset', first Tooling flip page: 'delcaring'.
yoleaux japhb: I'll pass your message to jnthn.
japhb *sigh*
There's a certain justice in typoing twice while reporting typos. 16:32
sena_kun japhb, thanks for your reports, noted. As soon as easy deployment will be done, I'll be able to fix such issues right away. 16:33
japhb Who all is on the team? 16:34
sena_kun ? Can you rephrase, please?
japhb You said you would be able to fix such issues, which implies the Cro team includes you as well (not just jnthn). Who else is involved? 16:35
TimToady m: my $string = "fooffff barffff"; say (-> $lu { $lu if $lu.chars > 5 } for $string.words); 16:36
camelia (fooffff barffff)
sena_kun japhb, ah. just me and jnthn right now.
TimToady sumdoc: ^^^
TimToady statement modifier form allows a lambda on the left 16:37
japhb sena_kun: Do you work for Edument Central Europe as well?
sumdoc TimToady Looks good :)
sena_kun japhb, well, yes.
TimToady but basically we don't care to allow postdeclarations of variables, which is what Python is doing 16:38
postdeclaration tends to violate the one-pass parsing principle 16:39
tony-o jnthn++
cro ^^
japhb sena_kun: Ah, I didn't realize he'd managed to build a staff (last I was paying attention, jnthn was moving and acting as founding member of the new office ... but it was never clear how many people he was planning to hire).
(including possibly zero) 16:40
sumdoc is there a way to make words in a string titlecase like my $string="hello sum Helo doc docile" to Hello Sum Helo Doc Docile 16:42
like .uc .lc methods??
japhb sumdoc: .words>>.tclc.join(' ') ?
b2gills m: say "Pocket is Is empty this is Is an example".words.unique(:as(*.fc)).elems 16:43
camelia 6
sumdoc japhb Yeah I found .wordcase method. Hope that works too
japhb sumdoc: (... goes to look at Rakudo source ...) Yup, looks like that would work well (and by default uses .tclc as a transformer) 16:45
sumdoc But whats the difference between .tclc and .wordcase ? with examples. I couldn't make documentation.
geekosaur "complicated"
sumdoc I couldn't understand the documentation docs.perl6.org/type/Str#routine_wordcase 16:46
japhb m: my $string = 'this is a test'; say $string.wordcase; say $string.words.map(*.tclc).join(' ');
camelia This Is A Test
This Is A Test
japhb sumdoc: The docs are saying you can change the per-word transformation from its default of tclc, and also that you can select only some of the words to be affected. 16:47
sumdoc japhb Still confused. Give me an example plz. 16:49
japhb m: say 'This is a test'.wordcase(:filter(&uc), :where(/:i 't'/)) 16:53
camelia THIS is a TEST
japhb sumdoc: ^^
(Uppercases words containing a 't' or 'T') 16:54
sumdoc This gives the desired output, but is it syntactically correct? 17:04
my $string = "Pokhara is Is beautiful City city of Nepal"; my @exam=$string.split("is") ; say @exam.join("the tourist city");
moritz how could it produce any output if it weren't syntactially correct? 17:05
sumdoc moritz I mean is the array @exam OK? 17:08
sumdoc I have written a small tutorial. github.com/sumandoc/Getting-Starte..._perl_6.md 17:48
Hope to get feedback !!
smls sumdoc: When printing lists/sequences (e.g. `say $string.split(" ");`), the output is easier to understand if each element is printed on a new line (e.g. `.say for $string.split(" ");`). 17:57
sumdoc smls OK 17:58
AlexDaniel sumdoc: The original course is using "" because in python there's no difference. IMO, in perl 6, using '' when no interpolation is needed makes the code easier to read 18:02
sumdoc AlexDaniel Aye 18:03
AlexDaniel sumdoc: I have a bunch of nitpicks, so don't take them too seriously, but… 18:05
sumdoc: “Split sentence on space” – using .words is probably more conventional there. If you want to show .split, maybe use some other delimiter
sumdoc: “$string.split(" ").words” is even weirder 18:07
sumdoc: “But if we are to ignorecase then, […] $string.lc” – use .fc for case-insensitive comparisons 18:09
sumdoc: “$string.split("\n")” – again, maybe .lines 18:11
smls Note that `.split(' ')` and `.words` aren't identical. One extracts the fields between single SPACE characters, the other extracts fields made up of consecutive runs of alphanumeric characters. Try the input string " Hello, world!! " to see the difference.
sumdoc AlexDaniel Yeah .lines 18:12
AlexDaniel sumdoc: “If the sentence contains the string […] $string.match("").Bool” – maybe .contains
smls s/alphanumeric characters/word characters (which also includes the underscore)/ 18:13
sumdoc AlexDaniel corrected 18:15
AlexDaniel smls: well, .split(“\n”) and .lines are not identical too, but which one should be preferred by a beginner to do The Right Thing™? 18:16
moritz would recommend .lines
AlexDaniel .split(“\n”) vs .lines is maybe more obvious than .split(‘ ’) vs .words. But yeah, it depends on what you need 18:17
samcv m: my $a = " Hello world !!! "; say $a.split(' ', :skip-empty) cmp $a.words 18:19
camelia Same
samcv m: my $a = " Hello world\c[NBSP] !!! "; say $a.split(' ', :skip-empty) cmp $a.words 18:20
camelia More
samcv that's the difference between words and split(:skip-empty) afaik
smls m: my $a = " Hello world!!! "; say $a.split(' ', :skip-empty) cmp $a.words 18:21
camelia Same
smls Ohh, yes, it looks like I was wrong about what `.words` does. 18:22
Does that mean `.words` is equivalent to `.split(/\s+/, :skip-empty)` ? 18:23
sumdoc: In that case, maybe `.comb` would be a nice addition to your tutorial, for when you really do want words to mean "consecutive runs of word characters"... 18:27
sumdoc Perl 6 looks so vast. samcv Ehat does :skip-empty do?
smls I doesn't include empty fields in the output. 18:28
m: dd "Hello world!!! ".split(' ');
camelia ("Hello", "", "", "world!!!", "", "").Seq
smls m: dd "Hello world!!! ".split(' ', :skip-empty);
camelia ("Hello", "world!!!").Seq
smls Not entirely sure why it exists, when one can also do: 18:29
m: dd "Hello world!!! ".split(' ').grep(?*);
camelia ("Hello", "world!!!").Seq
smls m: dd "Hello world!!! ".comb; 18:30
camelia ("H", "e", "l", "l", "o", " ", " ", " ", "w", "o", "r", "l", "d", "!", "!", "!", " ", " ").Seq
smls m: dd "Hello world!!! ".comb(/ \w+ /);
camelia ("Hello", "world")
smls sumdoc: ^^ `.comb` examples
sumdoc smls Aye 18:32
thanks
smls What if I want only alphanum characters only and not spaces like in this example "dd "Hello world!!! ".comb;" 18:33
smls m: dd "Hello world!!! ".comb(/ \w /);
camelia ("H", "e", "l", "l", "o", "w", "o", "r", "l", "d")
sumdoc If I don't want redundant spaces when converting to characters
smls like this ^^
sumdoc smls Looks good
smls sumdoc: `.comb` is basically the opposite of `.split` - instead of specifying where the field delimiters are, you specify (using a regex) what the fields themselves are. 18:34
sumdoc smls samcv Updated with .comb 18:41
samcv smash, or specify just a number 18:50
pmurias is Cro meant to be a web framework? 19:55
AlexDaniel that's what I'm wondering too 19:56
Skarsnik huggable, eco cro 20:06
huggable Skarsnik, nothing found
Skarsnik huggable, cro
huggable Skarsnik, nothing found
AlexDaniel buggable: cro 20:15
buggable: eco cro 20:16
buggable AlexDaniel, cro 'Libraries for building reactive services in Perl 6.': github.com/croservices/cro 11 other matching results: modules.perl6.org/s/cro
ChoHag The urge to play with perl6 again has been increasing recently. What are the capabilities for which I'd choose it over another? 20:30
eg. if I've got to process tonnes of not-quite-sane text, perl5.
If I *really* like pressing the space bar, python.
It I want complete control over everything, C.
If I want $foo, perl6.
What is $foo? 20:31
Or $.foo, if you will.
raschipi People that learn Perl6 say they feel like they are fighting the language when they are forced to use something else. Perl6 will adapt to your ideas, instead of having to adapt your ideas to a harness. 20:33
Perl6 also allows clean code that shows what the code is actually supposed to do, making understanding it later much easier. 20:34
raschipi Other important feature is that Perl6 can make use of C and C++ libs, and Perl5, Python and Ruby modules very easily. 20:36
ChoHag Hmm I'd be careful on that second point.
You can write fortran in any language. I'm sure perl 6 is no exception.
(I picked fortran as a stand-in for "some old POS". I don't know it at all) 20:37
raschipi Yes, it's possible to write FORTRAN in Perl6.
ChoHag So perl 6 is even gluier than perl 5? 20:37
Or gluier at a lower level, perhaps? 20:38
raschipi Perl6 is the glue of glues, much better than anything else.
ChoHag Well there's your catch phrase.
raschipi But it also scales very well to big applications.
ChoHag Now you're just sounding like a salesman :P 20:39
*Every* language claims it scales well. 20:40
raschipi It's the only dynamic language with an actually good type system.
ChoHag Joke languages need not apply, although I'm sure someone's written something substantial in brainfuck.
Someone always does.
Now that's an interesting point. 20:41
I'm sure someone must have contended it though. Is there discussion around that (types) available for reading?
ilbelkyr brainfuck can't even do threads :) 20:42
ChoHag I'm quite familiar with perl 6's object hieirarchy. I used it quite a bit a year or so ago.
ilbelkyr I prefer threaded intercal for that (using multiple come froms pointed at the same line)
ChoHag ilbelkyr: So I guess you're that someone?
ilbelkyr nah, I just sort-of know the C-INTERCAL maintainer via IRC 20:43
that sort of thing rubs off on you :)
ChoHag Intercal has a maintainer? 20:44
ilbelkyr catb.org/esr/intercal/ mentions him as "co-maintainer" 20:45
raschipi We don't even see much behind INTERCAL because COBOL and FORTRAN are their own parody. 20:47
It's a blast for people used to them, though.
AlexDaniel m: for ^5 { KEEP { say ‘hello’ } } 20:54
camelia ( no output )
AlexDaniel so what is KEEP? 20:55
raschipi (KEEP { say ‘hello’ }).^name 20:56
m: (KEEP { say ‘hello’ }).^name.say
camelia Nil
ryu0 m: Nil.say
camelia Nil
ryu0 a nil sayer. 20:57
AlexDaniel “Runs at every successful block exit, as part of the LEAVE queue” 20:57
what is considered “successful”?
smls AlexDaniel: design.perl6.org/S04.html#Definition_of_Success 21:00
raschipi m: my $a = do { KEEP { say "awooo" }; False }; my $b = do { KEEP { say "awooo" }; Nil }
camelia awooo
raschipi It runs if the block has a defined value. 21:01
AlexDaniel oh… okay
smls If it exits normally (i.e. not with an exception) and returns a defined value.
b2gills m: say Failure ~~ Nil 22:45
camelia True
teatime what is _True__ 23:26
skids I don't grep that identifier anywhere in rakudo/nqp/MoarVM. 23:29
Oh, it's your IRC client, not displaying some codepoints. 23:46
teatime o. my bad :) 23:48
I wonder if tmux ate it. 23:49
this may be a stupid question, but how come Failure ~~ Nil is true while Nil ~~ Failure is false 23:50
Skarsnik hm 23:51
good question
I thouht it was the other way around
Nil being a Failure
geekosaur I think of Failure as Nil with extra behavior (i.e. verbosity) 23:52
skids m: Failure.^mro.say 23:53
camelia ((Failure) Nil (Cool) (Any) (Mu))
Skarsnik hm how you list roles of a class already
skids m: Nil.^mro.say
camelia (Nil (Cool) (Any) (Mu))
skids Im: IO::Path.^roles.say
m: IO::Path.^roles.say 23:54
camelia ()
skids huh...
m: Num.^roles.say;
camelia ((Real) (Numeric))
Skarsnik m: say int32.^roles 23:55
camelia No such method 'roles' for invocant of type 'Perl6::Metamodel::NativeHOW'. Did you mean any of these?
does
roll

in block <unit> at <tmp> line 1
Skarsnik m: say int.^roles 23:56
camelia No such method 'roles' for invocant of type 'Perl6::Metamodel::NativeHOW'. Did you mean any of these?
does
roll

in block <unit> at <tmp> line 1
skids yeah natives have lots of rough edges still. 23:57