»ö« 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.
IOninja m: say "\x[E0]"; say "a\x[60]" 00:00
camelia à
a`
IOninja Which char am I looking for to make the second 'a' same as first one?
m: say "\x[E0]"; for ^0x1000 { .say if "\x[E0]" eq '"a\x[' ~ $_ ~ ']"'.EVAL }; 00:04
camelia à
5===SORRY!5=== Error while compiling /home/camelia/EVAL_0
Unexpected closing bracket
at /home/camelia/EVAL_0:1
------> 3<BOL>7⏏5]"
samcv m: "\x[E0]".NFD.say
camelia NFD:0x<0061 0300>
IOninja what's its problem?
samcv that IOninja
IOninja samcv++ thanks
samcv i was going to do something today but I forgot
IOninja m: say "\x[E0]" eq "\x[61]\x[300]"
camelia True
IOninja eye Perl 6
twitter.com/notwaldorf/status/8370...6756929536 :) 00:05
We don't have that problem
samcv :) 00:21
IOninja, github.com/rakudo/rakudo/pull/1030 will effect `is-deeply`? 00:23
does that use eqv
IOninja Yes
samcv kk thx
IOninja it's really just a call to eqv with sugar to catch failures
hm 00:24
m: use Test; say Failure.new eqv ().Seq
camelia False
IOninja Or maybe to deal with junctions 00:25
elaADnlxie m: say ‘hello’.index(‘foo’) 00:26
camelia Nil
elaADnlxie we don't return -1 also
IOninja m: use Test; say 'a'|'b' eqv 'b'|'a' 00:27
camelia any(any(False, True), any(True, False))
IOninja m: use Test; sub x(\a, \b) { say "hi"; a eqv b }; say x 'a'|'b', b'|'a' 00:28
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3 { say "hi"; a eqv b }; say x 'a'|'b', b7⏏5'|'a'
expecting any of:
infix
infix stopper
postfix
statement end…
IOninja m: use Test; sub x(\a, \b) { say "hi"; a eqv b }; say x 'a'|'b', 'b'|'a'
camelia hi
hi
hi
hi
any(any(False, True), any(True, False))
IOninja m: use Test; sub x(Mu \a, Mu\b) { say "hi"; a eqv b }; say x 'a'|'b', 'b'|'a'
camelia hi
any(any(False, True), any(True, False))
IOninja m: use Test; sub x(Mu \a, Mu\b) { say "hi"; ?(a eqv b) }; say x 'a'|'b', 'b'|Failure.new
camelia hi
True
IOninja I've no idea why is-deeply calls _is-deeply that just does `eqv` instead of just using `eqv` right away :/ 00:29
kalkin- hi #perl6 00:50
adu hi
kalkin- so while hacking on ddt I just thought may be ddt should just generate a Makefile and let make take care of the rest like paralleling execution & co 00:51
adu what's ddt? 00:52
kalkin- i.e for such commands like release which would regenerate your docs readme bump version number and co
Distribution Development Tool
github.com/kalkin/Ddt
adu what's mi6?
kalkin- ddt could just generate a make target
adu github.com/masak/ufo 00:53
is it like ufo?
kalkin- adu: I forked mi6 added some features and have some more features in my nom branch, but waiting for some dependencies to release new version
adu yeah, but what is mi6?
do you have a link? 00:54
kalkin- github.com/skaji/mi6 00:54
adu I think every good language needs a good meta-tool 00:56
kalkin- adu what is a meta-tool? 00:57
adu like rust and cargo, go and go, python and pip, etc...
kalkin- well actually pip is a packet manager, thats what we have zef (and panda for) 00:57
cargo /go same
ddt & mi6 are more like your “rails generate” command
adu well, go is probably the best example, it includes the compiler, formatter, assembler, package manager, and the debugger 00:58
kalkin- plus ddt has now a continues test running feature which is what rake does in ruby 00:58
adu I don't know ruby 00:59
I know every language except ruby
perlpilot adu: that's quite a claim ... ;-) 01:00
kalkin- generally ddt should do scaffolding, features like continues test running are nice, but I think they could be solved better by make(1) while ddt keeps beeing a scaffold generator, which also happens to generate Makefiles
adu not really, when you've been programming for 26 years 01:00
kalkin- the scoffolding can add make targets i.e for formatting, running tests & ect… 01:01
perlpilot adu: Even then. 01:01
perlpilot but ... if you know python or perl, you pretty much know ruby. It looks kinda like python but feels kinda like perl (except for all of the rampant monkey patching) 01:03
kalkin- adu: I bet you have never programmed Inform (more than just a Tutorial) ☺ 01:04
adu perlpilot: yeah, but the word "rake" through me off
kalkin-: never used Inform
kalkin- It's an awesome language for writing text adventures, have a look at Inform 7, event if you are not in to text adventures, it's just different and awesome 01:05
it's just another aproach
lichtkind is there a typo in examples.perl6.org/categories/euler...gerdr.html ? 01:05
IOninja typo where? 01:09
kalkin- just had a look at ufo
It's nice, I think I could reuse it in ddt if I go the make way 01:10
kalkin- masak: would you accept a PR for spliting the code in to a bin/ and lib/ part so it could be reused? 01:13
IOninja lichtkind: typo where exactly? 01:16
perlpilot IOninja: I would guess because the text says "starting with 1 and 2" but the code starts with "(1,1, *+*" 01:17
But ... I dunno. 01:18
lichtkind my error was a feature i didnt know 01:19
IOninja mkay
Geth perl6-examples: 57b15232a3 | (Zoffix Znet)++ | categories/euler/prob002-gerdr.pl
Fix Fibonacci sequence description
01:21
kalkin- Hmm just noticed ufo is broken because $*CUSTOM_LIB is gone 01:23
IOninja good
IOninja Do '/tmp' and '/' paths mean anything in Windows land? Eyeing last two options for IO::Spec::Win32 and they look od: github.com/rakudo/rakudo/blob/6661...pm#L47-L48 01:47
SmokeMachine IOninja: those were my failing tests www.irccloud.com/pastebin/ligmxOfR/ 01:49
IOninja SmokeMachine: you don't have latest changes in your roast repo 01:52
SmokeMachine: or in your rakudo repo
... or both
SmokeMachine I just git pull --rebase github.com/rakudo/rakudo and running the tests again... 01:53
IOninja SmokeMachine: ensure you pull the tests 01:54
SmokeMachine t/spec/S03-metaops/hyper.rakudo.moar .............................. Dubious, test returned 2 (wstat 512, 0x200)
sure! I didn't !!! 01:55
IOninja All but S17-supply/watch-path.t is because you don't have latest roast; I see S10-packages/precompilation.t flop on occasion, and I don't know about S17-supply/watch-path.t ; seems to be a mac only test 01:56
SmokeMachine t/spec/S10-packages/basic.rakudo.moar ............................. Dubious, test returned 1 (wstat 256, 0x100) 01:58
No subtests run
:(
t/spec/S17-supply/watch-path.t .................................... Dubious, test returned 1 (wstat 256, 0x100) 01:59
Failed 1/2 subtests
IOninja SmokeMachine: what's the output of t/fudgeandrun t/spec/S10-packages/basic.t t/spec/S17-supply/watch-path.t
SmokeMachine www.irccloud.com/pastebin/6RGURFFD/ 02:00
strange... www.irccloud.com/pastebin/eWV57WeS/
IOninja SmokeMachine: don't stick `perl6` before it 02:01
SmokeMachine Sorry...
1sec...
IOninja goes to bed 02:03
SmokeMachine www.irccloud.com/pastebin/A9VNp4En 02:04
SmokeMachine IOninja: ^^ 02:05
IOninja: running the other one that throw error basic.rakudo.moar www.irccloud.com/pastebin/flFlGgNv 02:08
I'm updating my PR, ok?
SmokeMachine www.irccloud.com/pastebin/eO26G83y 02:16
SmokeMachine www.irccloud.com/pastebin/gmn47Rsi/ 02:20
elaADnlxie {}:my $*GOAL := $<sym> eq '??' ?? '!!' !! '‼'; 03:14
what's the idea behind these {}?
SmokeMachine Make $/ get "synced" 03:19
samcv nice SmokeMachine 03:21
SmokeMachine elaADnlxie: irclog.perlgeek.de/perl6/2017-03-01#i_14187340 03:24
samcv: thanks! :)
elaADnlxie cool 03:26
SmokeMachine :) 03:30
Todd_ Hi All. I am trying to send a tar ball with Net::SMTP and MINIE::Base64. I am very confused. Can someone point me to the directions? 06:31
MIME:: not Minie 06:32
Todd_ Is there an easier way to do this? 06:35
Todd_ Maybe an example? 06:36
geekosaur Todd_, MIME::Base64 is another component (encodes/decodes data into the variant of base64 encoding used by MIME; does not create MIME parts) 06:54
Todd_ What would be the simplist way to send an eMail with tar ball as an attachment? 06:56
I am very confused 06:57
geekosaur I'm glanciing through metacpan for stuff that you could use with Net::SMTP... but you might ditch that and use Email::Stuffer to handle it all 06:58
since it's pretty much exactly what you want: a simple interface that handles the whole stack
Todd_ all I am finding is email::simple. modules.perl6.org/#q=email%3A%3As
no stuffer
geekosaur we already determined there is not currently a perl 6 module for any layer other than smtp 06:59
metacpan.org/pod/Email::Stuffer
geekosaur no rfc2822, no mime 07:00
which means doing this all in perl 6 is not really a thing yet
Todd_ that is a perl5 module
geekosaur yes 07:00
I just said nothing exists for perl 6
that does not mean I';m going to haul out the perl 6 module I just said didn't exist 07:01
Todd_ oops
geekosaur for the moment, you will need to rely on the perl 5 module support. presumably at some point native perl 6 support will show up... but it's actually a lot of work, so I would not hold my breath 07:02
(full MIME is a fairly complex standard, and even RFC2822 basic email has its nasty edge cases)
Todd_ so, use the inline module till then?
geekosaur yes 07:02
unless you want to switch to just writing perl 5 or python or whatever 07:03
Todd_ Thank you. I will.
geekosaur perl 6 is still new enough that a lot of things are missing
Todd_ I write in perl 5. I like it a lot, but the subroutines drive me nuts. It is like assembly code passing variables to subs. I adore P 6's subs. I write in Top Down and my code is filled with subs 07:04
Todd_ I noticed the missing stuff. I really want out of P5 as soon as possible. Inline is a good buffer 07:05
Todd_ Thank you! bye bye 07:07
Todd_ I am back already. 07:09
I an not get inline to install
$ rpm -qa perl perl-5.16.3-291.el7.x86_64
perl-5.16.3-291.el7.x86_64 07:10
zef install Inline::Perl5 ===> Searching for: Inline::Perl5 ===> Searching for missing dependencies: LibraryMake, File::Temp ===> Searching for missing dependencies: File::Directory::Tree ===> Building: Inline::Perl5:ver('0.23'):auth('github:niner') Perl v5.18.0 required--this is only v5.16.3, stopped at -e line 1. BEGIN failed--compilation aborted at -e line 1. Perl 5 version requirement not met
What now?
moritz Todd_: read Inline::Perl5's README
you need a perl 5 compiled with certain flags 07:11
you might need to compiler your own copy of perl 5 if the distro one doeesn't work
*compile
Todd_ panda then? 07:12
oh. I will use the git clone thing 07:15
$ perl6 configure.pl6 Perl v5.18.0 required--this is only v5.16.3 07:17
mumble
RabidGravy well to be fair 5.16 is five years old 07:20
Todd_ That is stinking Red Hat for you!
RabidGravy Fedora has 5.24 so maybe in a few years it will catch up :) 07:21
geekosaur part of the problem here is that perl 5's guts are generally a mess, the older the version the worse the mess
probably Inline::Perl5 with 5.16 either throws weird errors or possibly dumps core
Todd_ I tried using vi to change the rev requrement, and it did not make 07:22
RabidGravy build your own with perlbrew or something
Todd_ no perlbrew on rhel that I can find 07:23
RabidGravy just download it locally
anyhow I'm off to the code mines
Todd_ Fedora Core 25 is on perl-5.24.0-380.fc25.x86_64, which is where I will be using inline, so I will try over there 07:24
Todd_ And I will open a bug on Red Hat's bugzilla to rebase perl 5 07:25
Todd_ bugzilla.redhat.com/show_bug.cgi?id=1428274 07:30
Maybe they will, maybe they won't payu attention 07:31
bye again
I am back. Tried to zef inline on fedora 07:32
===> Building [FAIL]: Inline::Perl5:ver('0.23'):auth('github:niner') 07:33
Aborting due to build failure: Inline::Perl5:ver('0.23'):auth('github:niner')(use --force to override)
Shall I try the --force?
well, it seems to be installig with force. I wonder if it will work? 07:35
Time will tell. Bye bye 07:37
Todd_ I am back 07:58
cpan Email::Stuffer
Email::Stuffer is up to date (0.014).
Todd_ perl6 -c CimCheck.pl6 07:58
Could not find Inline::Perl5 07:59
What now?
moritz seems like the installation didn't work 08:11
Todd_ not finding a "remove" in cpan 08:12
I am trying it with --force. It is doing a lot of compiling 08:16
Todd_ the buzzard still isn't showing up 08:20
# find / -iname \*inline\* | grep -i perl5
isn't finding it either
moritz look at whether the installation succeeded or not 08:21
Todd_ ./Build install -- OK 08:26
I can not find it though
Todd_ bye bye 08:53
ZzZombo !ping 08:56
moritz !pong 08:59
ZzZombo something weird just happened, I couldn't open any website, yet IRC, and a bunch of online games worked well, just the browser couldn't send any requests. 09:01
lizmat ZzZombo: feels like your DNS was out of whack for a while 09:20
IOninja .tell Todd Inline::Perl5 is a Perl 6 module; you install it with `zef install Inline::Perl5` not cpan; it doesn't create "inline" files on your filesystem but installs precompiled units in CUR, so check it's installed with `perl6 -MInline::Perl5`, not grepping your system for files 09:33
yoleaux IOninja: I'll pass your message to Todd.
ZzZombo .tell yoleaux Beep Boop I'm a Robot 09:38
yoleaux ZzZombo: Thanks for the message.
ZzZombo NP mate 09:38
IOninja m: sub x is assoc('right') { "$^a:$^b" }; say [[&x]] 2, 3, 4, 5 09:39
camelia 2:3:4:5
IOninja m: sub x is assoc('left') { "$^a:$^b" }; say [[&x]] 2, 3, 4, 5
camelia 2:3:4:5
IOninja I thought assoc should affect the order or something? 09:40
Oh 09:41
IOninja hm, nope 09:42
m: sub x is assoc('right') { $^a+$^b }; say [\[&x]] 2, 3, 4, 5
camelia (2 5 9 14)
IOninja m: sub x is assoc('left') { $^a+$^b }; say [\[&x]] 2, 3, 4, 5
camelia (2 5 9 14)
IOninja m: sub x is assoc('right') { "($^x,$^y)" }; say [[&x]] 2, 3, 4, 5; 09:46
camelia (((2,3),4),5)
IOninja "Note: In the functional programming world, this operation is generally called a fold. With a right-associative operator it is a right fold, otherwise (and usually) it is a left fold." ... and no examples 09:47
Somebody help!
moritz it only works for operators 09:48
IOninja lies, I've seen it work for routines 09:49
moritz m: sub infix:<foo> is assoc<right> ($a, $b) { "($a, $b)" }; say [&foo] 1, 2, 3, 4 09:49
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing block
at <tmp>:1
------> 3sub infix:<foo> is assoc<right>7⏏5 ($a, $b) { "($a, $b)" }; say [&foo] 1,
expecting any of:
new name to be defined
moritz m: sub infix:<foo>($a, $b) is assoc<right> { "($a, $b)" }; say [&foo] 1, 2, 3, 4 09:50
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3 assoc<right> { "($a, $b)" }; say [&foo]7⏏5 1, 2, 3, 4
expecting any of:
infix
infix stopper
postfix
statement…
moritz m: sub infix:<foo>($a, $b) is assoc<right> { "($a, $b)" }; say [foo] 1, 2, 3, 4
camelia (1, (2, (3, 4)))
IOninja Oh
moritz m: sub infix:<foo>($a, $b) is assoc<left> { "($a, $b)" }; say [foo] 1, 2, 3, 4
camelia (((1, 2), 3), 4)
IOninja moritz++ thanks
masak remind me -- how do I get the current position in the middle of a grammar?
masak something to do with cursors... 09:51
moritz masak: lol it's in my book! :-)
moritz self.pos iirc 09:51
masak thank you! :D 09:52
moritz++ # lol book
IOninja m: grammar { token TOP { .**3 { say $¢.pos } } }.parse: '1234546'
camelia 3
masak it worked! :D
IOninja didn't for me :/ 09:53
moritz self.pos works in a method called from the grammar
IOninja ah
m: grammar { token TOP { <foo> }; token foo { .**3 { say self.pos } } }.parse: '1234546'
camelia 0
moritz m: grammar { token TOP { .**3 <.foo> }; method foo(|c) { die "got to {$.pos}" } }.parse: '123456'
camelia got to 3
in method foo at <tmp> line 1
in regex TOP at <tmp> line 1
in block <unit> at <tmp> line 1
IOninja m: grammar { token TOP { <foo> }; token foo { .**3 { say $.pos } } }.parse: '1234546'
camelia 0
masak oh, and self.orig was the answer to my next question... :) 09:54
moritz the section on generating good parse error is a bit of content I'm proud of, it's something that's not often discussed 09:56
many blog posts show how cool grammars are, but don't have enough space left to dive into the details on how to make the parsers real-world usable
masak :) 09:58
Geth doc: f1c280c431 | (Zoffix Znet)++ | doc/Type/List.pod6
Include example of affecting fold direction in reduce
moritz IOninja++ # improving the docs 09:59
IOninja moritz++ # showing how
IOninja m: say .rand > .5 ⁇ 'big' ‼ 'small' 10:14
camelia No such method 'rand' for invocant of type 'Any'
in block <unit> at <tmp> line 1
IOninja m: say rand > .5 ⁇ 'big' ‼ 'small'
camelia big
IOninja ehehe :) SmokeMachine++ 10:15
IOninja high-fives other developers over latest Unicode stuff 10:23
bah, Twitter renders ‼ much different than ⁇: twitter.com/zoffix/status/837246807084249089
You had one job!
IOninja We have rakudobrew listed in Install section (on the right) of reddit: www.reddit.com/r/perl6/ 10:43
IMO "bleeding edge" ne "whatever commit ended up on HEAD" 10:44
gfldex it doesnt render at all, it links to .png abs.twimg.com/emoji/v2/72x72/203c.png
IOninja hmmm, typing `rakudo.perl6.org` in browser leads to rakudo.perl6.org/ need to force HTTPS 10:52
guess I have the acces to do so... 10:53
done. 10:54
IOninja huh, but apparently it's not under git control? 10:55
IOninja says apache2/sites-available/rakudo.perl6.org.conf is ignored by .gitignore but I don't see where :S 10:58
Oh weell
gfldex m: say True ⁇ '*nod*' ‼ '*shake*'; 11:06
camelia *nod*
IOninja m: say 0 ⁇ Nil ⁇ False ⁇ Int ⁇ () ⁇ '*nod*' ‼ '*shake*' ‼ '*wake*' ‼ '*bake*' ‼ '*make*' ‼ '*fake*'; 11:12
camelia *fake*
IOninja m: say 0 ⁇ Nil ?? 'meow' !! 'foo' ‼ 'bar' 11:14
camelia bar
IOninja m: say 0 ⁇ Nil ?? 'meow' ‼ 'foo' !! 'bar'
camelia 5===SORRY!5=== Error while compiling <tmp>
Confused: Bogus code found before the !! of conditional operator
at <tmp>:1
------> 3say 0 ⁇ Nil ?? 'meow'7⏏5 ‼ 'foo' !! 'bar'
expecting any of:
infix
infix stopper
llfourn m: say \c[BELL] # if "BELL" is in a variable, how do I print it? 11:19
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared name:
BELL used at line 1
Undeclared routine:
c used at line 1
llfourn m: say "\c[BELL]" # if "BELL" is in a variable, how do I print it?
camelia 🔔
timotimo i once added a sub for this, and somewhere since then i forgot its name 11:22
llfourn timotimo: lol, well that's a start :P 11:23
timotimo perhaps i only added the nqp op?
m: use nqp; dd nqp::getstrfromname("BELL") 11:24
camelia "🔔"
llfourn ooo nice
timotimo m: use nqp; nqp::getstrfromname("BELL").NFC.perl.say
camelia Uni.new(0x1f514).NFC
timotimo i couldn't see the bell there so i had to double-check
llfourn it looks like there's no p6 sub that calls it, it's just in the QActions. 11:26
IOninja right, currently, the only p6 way is via EVAL 11:29
llfourn I'm not sure which is worse to put in my code. Probably EVAL :P. 11:30
gfldex so we need Cool.ununiname
or .deuniname 11:31
IOninja or something not entirely silly
gfldex have you seen our logo?
:->
IOninja It's colourful and ugly. Not silly. 11:32
timotimo "DEU niname"? 11:33
gives you a german nickname
gfldex .unichr then
IOninja .parse-names 11:37
'FF'.parse-base(16) => 255; 'bell, butterfly'.parse-names => "\c[BELL, BUTTERFLY]" 11:38
IOninja m: use nqp; 'BELL, BUTTERFLY'.split(/\s*\,\s*/, :skip-empty).&nqp::getstrfromname.say 11:42
camelia Cannot find method 'Any' on object of type Seq
in block <unit> at <tmp> line 1
IOninja really...
timotimo yeah, nqp ops aren't reified
IOninja m: .&meow::moew
camelia Cannot find method 'Any' on object of type Any
in block <unit> at <tmp> line 1
IOninja m: &m::m 11:43
camelia ( no output )
IOninja m: &Δ::Δ 11:50
camelia ( no output )
timotimo what are you expecting, though? 11:51
IOninja m: &Δ
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared routine:
Δ used at line 1
IOninja something like that
timotimo package lookup is a bit less hard than that, isn't it? 11:52
IOninja m: $Δ::Δ 11:53
camelia ( no output )
IOninja dunno
there's no Δ package tho
timotimo right, that doesn't seem to be a problem for anything
m: say $foo::foo
camelia (Any)
timotimo cool, we call .sink on the thing and call .sink on the result of .sink again 11:54
IOninja To me, this seems to be the same problem as not complaining about underclared variable names. A single typo and your code's broken.
timotimo well 11:55
we used to be able to use GLOBAL (which is what's being used here) to grab stuff from run-time included stuff
at least i think so?
timotimo m: say &Test::is; require Test; 11:56
camelia (Any)
timotimo m: require Test; say &Test::is;
camelia (Any)
timotimo well, not like that, obviously?
maybe only worked before lexical imports
committable6: releases m: require Test; say &Test::is;
oops
well, m: doesn't hurt
committable6 timotimo, ¦«releases (16 commits)»: (Any) 11:57
timotimo well, it does put Test into GLOBAL
committable6: releases require Test; say Test::.keys;
committable6 timotimo, ¦«releases (16 commits)»: 04===SORRY!04=== Error while compiling /tmp/fGkrB6LKyM␤Undeclared name:␤ Test used at line 1␤ «exit code = 1»
timotimo er, of course 11:58
IOninja It's not an `our` routine tho
timotimo committable6: releases require Test; say GLOBAL::('Test')::.keys;
committable6 timotimo, ¦«2015.12,2016.01.1,2016.02,2016.03,2016.04,2016.05,2016.06,2016.07.1,2016.08.1,2016.09,2016.10»: 0..0 ¦«2016.11,2016.12,2017.01,2017.02,HEAD»: (0)
timotimo that'd explain why it doesn't show up, then
IOninja m: require Test <&is>; say &is;
camelia sub is (;; Mu | is raw) { #`(Sub|55317752) ... }
IOninja m: require Test; say EXPORT::Test<&is>; 12:00
camelia Could not find symbol '&Test'
in block <unit> at <tmp> line 1

Actually thrown at:
in block <unit> at <tmp> line 1
IOninja There's an incantation similar to that ^ that works too
timotimo m: require Test; say GLOBAL::Test::EXPORT::DEFAULT::.keys 12:07
camelia (&does-ok &like &eval-lives-ok &pass &cmp-ok &subtest &flunk &dies-ok &unlike &todo &skip &use-ok &isnt &skip-rest &diag &eval-dies-ok &is-deeply &throws-like &ok &is &done-testing &bail-out &is-approx &lives-ok &MONKEY-SEE-NO-EVAL &plan &nok &is_approx …
SmokeMachine IOninja: thanks! 12:09
timotimo the stuff zefram finds in our IO::Spec stuff is scary 12:11
i'm glad he's poking it with a very sharp stick
IOninja yeah 12:15
timotimo can't QString also contain null bytes? 12:25
Geth DBIish/master: 4 commits pushed by (Jonathan Stowe)++ 12:26
timotimo i wonder how exactly they deal with filesystem stuff
they do have all custom filesystem functions
Geth DBIish: d33ee8eb9a | (Jonathan Stowe)++ | META6.json
Up the version
12:30
SmokeMachine u: double 12:51
unicodable6 SmokeMachine, U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK [Pi] («)
SmokeMachine, U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK [Pf] (»)
SmokeMachine, 438 characters in total: gist.github.com/d86e11610b443794c2...1fc55ef47f
cale2 why does perl6 have such a strong focus on operators? 13:53
DrForr Well, it's been about programmer efficiency, and if you have more operators to choose from to do a given task that's better for productivity. 13:55
cale2 Practically, you'd save time if you memorized 30 operators, but the next person will waste time by having to look up what each operator does 13:58
IOninja heh
All conjecture. Love it.
DrForr Yeah, but once they've looked them up... 13:59
IOninja cale2: you could use 30 subroutines and by your logic the next person would waste time having to look up what each subroutine does.
llfourn In practice I don't find much perl6 that is full of crazy operators. 14:00
El_Che there are some
:)
cale2 I'm talking about the built in ones documented here: docs.perl6.org/language/operators
IOninja Hardly a challenge to learn all of them, even the more obscure ones. And no different than learning routine names and behaviours. 14:01
cale2 A lot different from learning routine names and behaviors. Those are words that (ideally) have meaning to the reader 14:01
IOninja `[...]` is as much a name as `reduce ...` 14:02
cale2: that's a faulty argument that assumes an ignorant programmer can correctly surmise the program's behaviour just by reading the subroutine's name. 14:03
IOninja They'd still have to look it up in the documentation to learn of acceted arguments, return values, and error handling. 14:03
Wasn't it you who were complaining `grep` isn't named `filter`? 14:04
llfourn m: my $x = 2; say $x..5,$x^..5,$x..^5; #preferable to range($x,5), range($x+1,5) etc.. IMO 14:06
camelia 2..52^..52..^5
cale2 yes, that was me
IOninja Most people working with code didn't first pick up the language 30 seconds ago. 14:08
cale2 As an example, docs.perl6.org/language/operators#infix_ff even after reading the documentation, I don't understand `ff` 14:09
geekosaur please jettison all attempts to have anything whatsoever to do with older versions of perl, apparently
reusing names already well defined in perl is apparently an evil idea 14:10
IOninja cale2: but that's an obscure operator.
llfourn never knew about ff
geekosaur respelled version of p5's ..
cale2 I tried replacing `ff` with `$_ ~~ $a and $_ ~~ $b` like in the docs, but it doesn't work the same
DrForr cale2: "flip-flop"
geekosaur (in scalar context)
IOninja cale2: you could equally pick pgrep_regex_no_match_whatever() and still'd have to lookl it up 14:11
cale2 IOninja: it's in the standard lib.......
IOninja cale2: so?
cale2: `and` seems vastly more use than `andthen`
*sees
cale2 I can't pay someone to give me a practical example of `andthen`
IOninja I already did
cale2 I doubt anyone knows a use for it 14:12
then put it in the docs! haha
IOninja Yes, of course. If you can't think of a use, no one can.
llfourn I use andthen all the time...
geekosaur cale2: could you tone down the "I am the only one here with a brain"?
llfourn m: my $x = "foo"; my $y = $x andthen .uc; say $y 14:13
camelia foo
llfourn m: my $x = "foo"; my $y = ($x andthen .uc); say $y #oops 14:13
camelia FOO
IOninja lol :)
timotimo cale2: did you see the "wig" module for perl6?
IOninja buggable: eco wigh
buggable IOninja, Nothing found
IOninja buggable: eco wig
buggable IOninja, wig 'where is grep: Make grep prettier, put a wig on it!': github.com/0racle/p6-wig
IOninja ah
cale2 geekosaur: It's more a tone of "I'm the only one here with an outsider's perspective" apparently. I've not programmed perl5 or been a linux sys admin
llfourn: how do you use it? 14:14
DrForr there's also ack, along the same lines, but probably a different purpose.
IOninja cale2: your outsider's perspective comes across to me as "Thing XYZ is better then Perl'6 thing because I'm much more familiar with it"
llfourn cale2: I usually use it to conditionally assign to things if they are defined 14:15
or rather an attribute of things
timotimo llfourn: that sounds like you want to invest more heavily into "with" ;)
llfourn timotimo: I don't like reading things backwards
IOninja heh
timotimo OK
we should totally make Rwith work :P 14:16
cale2 I assumed `andthen` was for chaining "maybe" operations. Like "if this is defined, do this, and if defined again, do this again"
llfourn cale2: exactly 14:16
cale2 llfourn: how do you insert the orelse with that then? It seems you should attach an "andthen" and "orelse" to the same op 14:17
masak timotimo: but `with` is not an infix operator, it's a statement modifier
geekosaur cale2: does that justify "do not attempt under any circumstances to preserve perl 5 compatibility when that might confuse someone who has never ever programmed before"? does that justify "I doubt anyone knows a use for [andthen]"?
masak timotimo: also there's already `with <expr> { ... }`
timotimo oh, of course there is
geekosaur so far, it only seems to justify "my viewpoint is the only valid one under any circumstances"
timotimo masak: i would have continued to argue we should make Rfor and Rwhile work, too ;) ;) 14:18
llfourn cale2: I think orelse still breaks with andthen :P but yes in theory
cale2 IONinja: It's not what I mean. Though it is obvious to me that you get that impression. Which is why you write off any critique I ever have. The only reason I grill on things is because I'm trying to truly understand and help out. Others will have the same thoughts as me. You can't live in a vacuum like Perl languages are the only options.
mst cale2: I'm confused by this, because from a perl5 person's POV, the perl6 operators are many, varied and a noticeable learning curve 14:20
pmurias cale2: some of your critique is very subjective, for me personally remembering operators isn't significantly harder than learning function names
mst cale2: I think you're assuming a position that IOninja doesn't hold and then inventing reasons why you're right about that 14:21
cale2: could you perhaps stick to criticisng the language itself rather than amateur psychoanalysis of people who disagree with you?
cale2 geekosaur: One of the stated goals of P6 was to distance itself from the bash/linux heritage. I guess it's a question of how far. I stand by my complaint about `andthen`. It feels like it was thrown in as an attempt to have "maybe" control flow. But it feels half-baked... Maybe it would make sense if someone gave a good example in the docs
DrForr It's entirely possible to write lots of useful code without any of the "fancy" operators. 14:22
IOninja cale2: but you don't have critique. You poo-poo things you don't understand. That's different. Just a few minutes ago you said "doubt anyone knows a use for [andthen]", despite my showing examples earlier. Yesterday, you charge into github.com/perl6/routine-map/issues/2 saying my code is slow, despite failing to provide any proof your sorting-plugin-of-choice handles a 5000-row table any better.
zengargoyle last call, if you're going to SCaLE this weekend... drop by the LA.pm booth and say 'hi'.
IOninja cale2: perhaps if you stop assuming you know everything, I'd stop dismissing your "critism" that easily.
perlpilot Hrm. 14:24
cale2 IOninja: It is slow. It's not a "poo poo" on your code. I was just trying to be helpful by offering that alternative. Sorry
mst cale2: andthen is not a bash concept
perlpilot this is not what I expected to see on #perl6 this morning
DrForr cale2: Think too about 'elsif'.
else if we do this and then do that.
mst cale2: short circuiting comparison operators are vastly common, and 'andthen' if anything is more reminiscent of node.js promises than bash, for me 14:25
cale2 mst: agreed
perlpilot: I have many thoughts and prefer hearty debate. Apologies if some get upset by confrontation
mst cale2: so I don't know why you keep inventing some perl5 bias and accusing IOninja of it 14:26
cale2 IOninja: not meaning to personally attack at all. just pressing things in an effort to get a reasoned defense and learn 14:27
perlpilot cale2: no,no, I'm not upset. I like "hearty debate" ... as long as it shows "movement" (debate for debate sake is annoying an unproductive) 14:27
cale2: It's just that #perl6 usually has a different style of debate. (probably that's only when TimToady is involved)
mst I'm now completely confused as to what cale2's point was 14:28
cale2 mst: multiple points that escalated haha. `andthen` was a tangent 14:29
mst cale2: can we start from the top, and maybe you could start by making one point at a time, without the (accidental) personal attacks?
cale2 mst: replacing `ff` with `$_ ~~ $a and $_ ~~ $b` doesn't work. Can't make sense of `ff` even after consulting the docs. 14:30
perlpilot cale2: the thing about Perl 6's many operators is that they naturally "chunk" into nice categories so that your brain can get at them without having to think about *all* of the operators, but rather just the ones that go together.
mst cale2: ff is flip flop, so it's ... "from $a to $b" or so
pmurias hmm, how should I portably test nqp::filenofh (which return the file descriptor for a file handle) 14:31
mst cale2: if ($state == 0 and $_ ~~ $a) { $state = 1 } elsif ($state == 1 and $_ ~~ $b { $state = 0 }; if ($state) {
cale2: is roughly what flip flop is short for
jnthn pmurias: I think there's some tests in roast that test the Perl 6 native-descriptor method, which may provide some inspiration
perlpilot To be fair, the little state machine that ff and fff carry around is a source of confusion for some (same with the P5 versions) 14:32
pmurias jnthn: thanks, I'll look
llfourn m: { .say if /A/ ff /B/; .say if $_ ~~ /A/ && $_ ~~ /B/ } for <AB C D B E F> # worls like that here
camelia AB
AB
llfourn cale2: ^
that was my first time using ff \o/ 14:33
cale2 llfourn: it's a bit different in the docs example. It starts taking at the left hand side and stops taking at the right hand side 14:34
they couple it with gather/take
pmurias jnthn: roast only checks the value returned by native-descriptor is >= :/
llfourn cale2: I literally just copied that from the doc example
jnthn pmurias: Well, it's portable ;-)
DrForr I don't think flipflop is that common in p5 either, I rarely use it msyelf. 14:35
llfourn cale2: ohh you're right
mst cale2: did you look at my example?
llfourn cale2: it's just that example doesn't show it
mst DrForr: certainly not in anything bar old school one liners
perlpilot DrForr: I used to use it all the time about 15 years ago. :-) 14:36
er, maybe more like 20 years ago now (geez I'm old!)
DrForr So... a sample size of 2 :) 14:37
llfourn m: { say "+$_" if /C/ ff /E/; .say if "-$_" ~~ /C/ && $_ ~~ /E/ } for <A C D B E F>
camelia +C
+D
+B
+E
llfourn so it's an expression that returns true if the LHS has been true until the RHS is true 14:38
cale2 `ff` was an example. I'm just thinking, does having operators like that really improve efficiency. Or does it make better programmers?
llfourn it probably doesn't hurt because I've been using p6 for years and never used it. 14:39
DrForr Aren't the two the same? :)
cale2 Because reading blogs from languages like python and golang, they'd just laugh and say that having those things wouldn't be any benefit at all. Such is the trouble in a polyglot world, I suppose
DrForr Lisp has hardly any operators, and it's survived for decades. 14:40
cale2 DrForr: Operators in some languages (like ruby or lisp) are just regular functions, no? I guess they are in P6 too, but there's the precedence added on 14:41
jnthn In Perl 6, operators really are just function calls, with more interesting parsing. 14:41
jnthn And users can define their own 14:41
Just as they can with functions 14:42
moritz fwiw I haven't found infix ff in use in the ecosystem
jnthn So I guess in Perl 6 we really just don't see operators as a big deal
mst cale2: so you've picked possibly the single most esoteric operator to complain about
Geth ecosystem: 20729145be | (Jonathan Stowe)++ | META.list
Add EventSource::Server

  github.com/jonathanstowe/EventSource-Server
mst cale2: if you don't see the point of it ... you're not the target audience, it's ok, don't use it 14:43
perlpilot This is one of the reasons I favor Haskell over something like Scheme or Lisp. Haskell has more expressivity and allows for making your own operators that aren't necessarily constrained by some artificial idea that everything is a list. :-)
cale2: and I think that's part of the point with Perl 6's operators. 14:44
cale2 perlpilot: I actually prefer to ignore precedence rules and just explicitly use parens. Not sure I trust the computer to know what I want 14:45
llfourn cale2: I think you have an impression that we are crazy and writing spamming operators in our code. But if I were going to list the top 10 most important aspects of Perl 6, its many operators probably wouldn't be on the list.
DrForr Not to distract, but do we have coverage tools yet?
cale2 llfourn: not at all. Though I have read some very confusing P6 :)
DrForr Hopefully not mine :) 14:46
perlpilot llfourn: What would your top ten be? I can get to 5 or so right off, but I founder a little in what features are important after that.
cale2: I've read some confusing Python before too :)
llfourn perlpilot: I don't know it's a lazy list
perlpilot llfourn++ well played :) 14:47
llfourn :D
cale2 llfourn: This whole line of thought on operators was after reading the Design Docs on them yesterday. I was just thinking "is all this work really worth it? To add massive precedence tables, etc"
cale2 perlpilot: Yeah, it's possible in any language, but I think the combo of operators and anonymous vars doesn't help. But of course those things are optional. But programmers are lazy lol 14:48
Geth doc: 55319f716f | (Zoffix Znet)++ | doc/Language/operators.pod6
Expand infix:<andthen> info

  - Include examples
  - Note similarity to `with` to aid understanding of function
perlpilot Hmm. "massive precedence tables"? Perl 6's precedence tables might have more breadth, but they also have less depth than, say Perl 5 (at least that was the case last time I looked)
Though ... that I haven't felt the need to look in a good long while is telling too. :) 14:49
IOninja cale2: so now you rage-quit on the issue? What was the point of my spending time reading about the plugin you proposed and typing all the responses? 14:50
llfourn cale2: Well I all I can after using the language for a while, p6 does operator precedence right and it was worth it.
all I can say*
IOninja cale2: you did the same with the `when` modifications to Pod::To::Text. People say "this may make code slow; let's run benchmarks" and you rage quit. 14:51
Pod::To::Html
cale2 IOninja: Thats a good explanation, cheers. It works differently than I would have expected, so that's helpful.
cale2 IOninja: Well regarding the html table, I couldn't get it to work even with the local map.json file. Chrome loading errors with the datatables file. Prob only works with a CDN. Then I looked at the sort library you were using and it seemed to be pretty fast, so I doubted the one I suggested would be faster. 14:53
DrForr That's what code profilers are for :) 14:54
cale2 Regarding the "when" modifications to Pod::to::text, It's like you all said. The existing code is faster, so refactoring for readability would be pointless
IOninja cale2: no, I first said "Overall, I suspect this has a measurable negative performance impact and our docs build is slow as it is. I'd suggest measuring what that impact is first." on the GitHub Issue, and then re-iterated the point on IRC with "cale2: note the impact may be different in the code you changed. I suggest testing (like running two doc builds with and without the change)". 14:58
And I see in that conversation you call me a bigot because I pointed out desire to keep dirtier code with multies for sake of it being faster 14:59
Or rather because I dismissed your pleas for some sort of "purity" of code despite potential performance impact on an already-too-slow codebase. 15:00
cale2 IOninja: I'm merely a hobbyist programmer. I wouldn't know how to set up a proper testing workflow like that. Just trying to help if I can.
IOninja: The "bigot" comment was when you dismissed me as an "intellectual" or something just because I used the words "list comprehension" and "accumulator". It was tongue in cheek anyway. Apologies 15:02
IOninja cale2: well, keep in mind we have 270 people in the org. Both because at least a subset of them gets notifications and spend time reviewing the PRs and Issues you open and then close... and at least a subset of them know how to set up a proper testing workflow if you ask. 15:04
llfourn perlpilot: I wrote down my top 10 p6 features for you: gist.github.com/LLFourn/2a59e03c40...ea09f378be 15:08
IOninja wow, containers is #1? 15:09
llfourn Yes. I know that will be weird for many people but It's my favorite. 15:09
IOninja I'd go with these for my list: gist.github.com/zoffixznet/9adc6c9...bd05b61cc5 15:13
timotimo when i clicked that link i thought there'd be a little elaboration to go with each point 15:16
IOninja :) 15:17
Actually, imma move WhateverCode to #1 spot. I think that's my favourite Perl 6's feature 15:18
llfourn I'll work on that. But brain tired now :)
go sleep o/
IOninja m: (* * * * * * * * * * *)(|(^6+1)).say 15:19
camelia 720
IOninja beauty
IOninja m: ($ += **)(^20).say 15:20
camelia (0 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 153 171 190)
IOninja \o/
Geth doc: a4fb28da9e | Cale++ | doc/Type/Signature.pod6
reorganize "constraining return types"
15:27
doc: f9479377ac | Cale++ | doc/Type/Signature.pod6
Merge pull request #1220 from perl6/WildYorkies-patch-3

reorganize "constraining return types"
IOninja wonder why I'm getting each response to an RT ticket as three emails sent to me :/ 15:40
lizmat IOninja: perhaps Zoffix or brokenchicken have something to do with it? 15:40
mst lizmat++ 15:41
IOninja heh 15:42
IOninja Interesting rule side note on www.hackerrank.com/womens-codesprint-3 "Winners who reside in Russia will receive $15 USD via Bitcoin in lieu of a World Champion T-shirt" 15:46
Russia has a ban on T-shirts or something? :)
IOninja Cool Booking.com is one of the sponsors 15:47
[Coke] just gave some overstock booking.com swag he had to a coworker with an upcoming business trip who needed a document holder. whee. 16:32
m: +(1..11)==10 16:33
camelia WARNINGS for <tmp>:
Useless use of "==" in expression "+(1..11)==10" in sink context (line 1)
IOninja m: say 1..10 == 10 16:34
camelia True
[Coke] IOninja: was going to be a commentary on your 1..11 list of top 10s. :) 16:38
IOninja Ah
perlpilot I find the specificity of "lexical $_" and "lazy iterators" interesting. For me, it would be more like "pervasive lexicality" and "rampant laziness" :- 16:40
er :-)
timotimo i wouldn't say rampant laziness 16:41
that'd be if your lang does lazy like haskell does
perlpilot oh, maybe so
but P6 is heavily bent towards as much laziness as you can get
IOninja m: say 42/0 + Inf 16:41
camelia Inf
IOninja m: my @a = ^3; for @a <-> $v { $v = $++ }; say @a 16:42
camelia [0 1 2]
IOninja m: my @a = ^3; for @a -> $v is rw { $v = $++ }; say @a
camelia [0 1 2]
IOninja These are the same thing? 16:43
m: <-> {}
camelia ( no output )
IOninja m: say <-> { 42 }()
camelia 42
IOninja interesting... 16:44
IOninja m: my $y = 72; <-> $x { $x = 42 }($y); say $y 16:44
camelia 42
perlpilot If I were making a top 10 for Perl 6, NativeCall would have to be in there somewhere.
IOninja Yeah, it's pretty cool, but I don't know C. 16:45
Geth doc: 37b65252c0 | (Wenzel P. P. Peppmeyer)++ | doc/Language/operators.pod6
:= is a compile time only
IOninja m: use Test; my @a[3;3]; for @a.pairs -> $p { $p.value = $++ }; is-deeply @a, Array.new(:shape(3, 3), [0, 1, 2], [3, 4, 5], [6, 7, 8]); 16:50
camelia Partially dimensioned views of arrays not yet implemented. Sorry.
in sub _is_deeply at /home/camelia/rakudo-m-inst-2/share/perl6/sources/C712FE6969F786C9380D643DF17E85D06868219E (Test) line 579
in sub is-deeply at /home/camelia/rakudo-m-inst-2/s…
IOninja seems is-deeply is busted with shaped arrays? 16:50
m: use Test; my @a[3;3]; is-deeply @a, @a 16:51
camelia Partially dimensioned views of arrays not yet implemented. Sorry.
in sub _is_deeply at /home/camelia/rakudo-m-inst-1/share/perl6/sources/C712FE6969F786C9380D643DF17E85D06868219E (Test) line 579
in sub is-deeply at /home/camelia/rakudo-m-inst-1/s…
IOninja m: my @a[3;3]; say @a eqv @a
camelia True
IOninja A bug \o/
m: my @a[3;3]; sub _is_deeply (Mu $g, Mu $e ) { $g eqv $e }; say _is_deeply @a, @a 16:53
camelia Partially dimensioned views of arrays not yet implemented. Sorry.
in sub _is_deeply at <tmp> line 1
in block <unit> at <tmp> line 1
IOninja hehe, that's interesting...
IOninja Some Zoffix guy messed it up yesterday: github.com/rakudo/rakudo/commit/f9...6d700335de 16:56
timotimo who might that be 16:57
IOninja Dunno. But he's clearly a n00b. 16:58
IOninja m: my @a[3;3]; sub _is_deeply (Mu \g, Mu \e ) { g eqv e }; say _is_deeply @a, @a 17:01
camelia True
IOninja Works if I don't use $ containers... 17:02
IOninja m: my @a[3;3]; my @b[3;3]; sub _is_deeply (Mu \g, Mu \e ) { g eqv e }; say _is_deeply @a, @b 17:06
camelia Partially dimensioned views of arrays not yet implemented. Sorry.
in sub _is_deeply at <tmp> line 1
in block <unit> at <tmp> line 1
IOninja Aha. I see
Well, I'll claim I didn't break anything, but changed when it short-curcuits to avoids reaching the NYI area 17:07
IOninja m: use nqp; my @a[3;3]; sub x(@a, @b) {dd [nqp::eqaddr(@a, @b), nqp::eqaddr(@a.WHAT, @b.WHAT)] }; sub _is_deeply (Mu $g, Mu $e ) { x $g, $e }; say _is_deeply @a, @a 17:31
camelia [1, 1]
Nil
IOninja I mean... 17:31
m: use nqp; my @a[3;3]; sub x(@a, @b) { nqp::eqaddr(@a, @b) }; sub _is_deeply (Mu $g, Mu $e ) { x $g, $e }; say _is_deeply @a, @a
camelia 1
IOninja m: use nqp; my @a[3;3]; sub x(\a, \b) { nqp::eqaddr(a, b) }; sub _is_deeply (Mu $g, Mu $e ) { x $g, $e }; say _is_deeply @a, @a 17:32
camelia 0
IOninja The latter is the new version of eqv and since the two things aren't nqp::eqaddrs, it goes in further in the code to try to iterate over the items, but using non-dimentional iterating way 17:33
timotimo doesn't a normal array also implement .values?
so you could "just" compare shapes and then iterate both .values until you find a mismatch?
IOninja Oh, I'm already done with tests: github.com/perl6/roast/commit/1f5dead548 17:34
timotimo OK
IOninja I was just musing on what exactly in my change it was that caused the discrepancy
Wooooo!
I got a dead sha! github.com/perl6/roast/commit/1f5dead548 17:35
that's one step down from deadbeef :)
IOninja m: "1f5dead548842b9f26516adb6df995d9108d7ef3".comb.grep({!/\d/}).squish.join.say 17:37
camelia fdeadbfadbdfdef
IOninja Close enough :}
raschipi Oi! 18:05
timotimo greetings 18:06
IOninja \o 18:08
raschipi m: say rand > .5 ⁇ "yep" ‼ "nope" 18:17
camelia yep
raschipi Noice
elaADnlxie runs autoreplace on his projects ;) 18:28
SmokeMachine m: [{:1error, :10data}, {:2error, :20data}].flatmap(*.<error data>).classify({<error data>[$++ % 2]}).say # is there a better way to do it? 18:58
camelia {data => [10 20], error => [1 2]}
raschipi You want an idiom suggestion? #E como foi o carnaval? 18:59
SmokeMachine m: [{:1error, :10data}, {:2error, :20data}].flatmap(*.pairs).map(-> $i {$i.value but role {method c {$i.key}}}).classify(*.c).say # i dont think its better... but works too 19:00
camelia {data => [10 20], error => [1 2]}
IOninja m: say % .push: [{:1error, :10data}, {:2error, :20data}]».pairs.flat' 19:01
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 0310data}, {:2error, :20data}]».pairs.flat7⏏5'
expecting any of:
infix
infix stopper
postfix
statement end
IOninja m: say % .push: [{:1error, :10data}, {:2error, :20data}]».pairs.flat
camelia {data => [10 20], error => [1 2]}
SmokeMachine raschipi: yes... a idiom suggestion! # não muito bem... fiquei doente o carnaval inteiro... mas ao menos subiu uma feature minha no rakudo! e vc?
IOninja: that was a good one!
raschipi SmokeMachine: IOninja++ #Parentes da minha noiva sofreram um acidente de trânsito, fiquei correndo pra cá e pra lá acudindo 19:02
SmokeMachine raschipi: # meus meus pêsames... melhoras p/ eles 19:14
is there a way to classify() change the data classified? 19:16
IOninja nope 19:17
or... 19:19
m: say % .classify-list { *.is-prime }, :as{ .Int }, ('42, '31337', '2')
camelia 5===SORRY!5=== Error while compiling <tmp>
Unexpected block in infix position (missing statement control word before the expression?)
at <tmp>:1
------> 3say % .classify-list7⏏5 { *.is-prime }, :as{ .Int }, ('42, '313
expecting any …
IOninja m: say % .classify-list: { *.is-prime }, :as{ .Int }, ('42, '31337', '2')
camelia 5===SORRY!5=== Error while compiling <tmp>
Malformed double closure; WhateverCode is already a closure without curlies, so either remove the curlies or use valid parameter syntax instead of *
at <tmp>:1
------> 3say % .classify-list: { *.is-pr…
IOninja m: say % .classify-list: *.is-prime, :as{ .Int }, ('42, '31337', '2')
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3y-list: *.is-prime, :as{ .Int }, ('42, '7⏏0531337', '2')
expecting any of:
infix
infix stopper
statement end
s…
IOninja screw you 19:20
m: say % .classify-list: :as{"Value is $_"}, { $_ %% 2 ?? 'even' !! 'odd' }, ^5; 19:21
camelia {even => [Value is 0 Value is 2 Value is 4], odd => [Value is 1 Value is 3]}
IOninja SmokeMachine: ^ that seems to be it
m: say classify :as{"Value is $_"}, { $_ %% 2 ?? 'even' !! 'odd' }, ^5;
camelia {even => [Value is 0 Value is 2 Value is 4], odd => [Value is 1 Value is 3]}
raschipi m: say % .classify-list: :as{$_++}, { $_ %% 2 ?? 'even' !! 'odd' }, ^5; 19:22
camelia Cannot resolve caller postfix:<++>(Int); the following candidates
match the type but require mutable arguments:
(Mu:D $a is rw)
(Int:D $a is rw)

The following do not match for other reasons:
(Bool:D $a is rw)
(Bool:U $a is …
IOninja Ranges don't provide writable containers, and even if they did that ++ is useless 19:23
(in this case)
raschipi It isn't a loop in this case, is that it? 19:24
IOninja It's a method call. Its internal implementation is irrelevant. Did you mean $++ (the anonymous state var?) 19:27
m: say % .classify-list: :as{$++}, { $_ %% 2 ?? 'even' !! 'odd' }, ^5;
camelia {even => [0 2 4], odd => [1 3]}
SmokeMachine m: say % .classify-list: :as{.value}, {.key}, [{:1error, :10data}, {:2error, :20data}]>>.pairs.flat 19:30
camelia {data => [10 20], error => [1 2]}
RabidGravy boom 19:31
SmokeMachine m: [{:1error, :10data}, {:2error, :20data}]>>.pairs.flat.classify(:as{.value}, *.key).say 19:32
camelia {data => [10 20], error => [1 2]}
IOninja [Coke]: llfourn I recall you were asking for a routine to parse character names. Comment on proposal to add it to Rakudo: github.com/rakudo/rakudo/pull/1031 19:32
IOninja & # work 19:36
SmokeMachine IOninja: thanks! 19:37
[Coke] IOninja++ 19:52
IOninja stresstests a tweak to parse-names's code squeeze out another 13% of speed out of it 20:01
Geth Inline-Perl5/create_sub_packages: b5f1f10cc8 | (Stefan Seifert)++ | lib/Inline/Perl5.pm6
Also create sub packages of loaded Perl 5 packages

use Foo:from<Perl5>; will now not only create a "Foo" package in Perl 6, but also Foo::Bar if that's what a "use Foo;" in Perl 5 would do (either because Foo::Bar is in the same file, or because Foo does a "use Foo::Bar" or similar).
Inline-Perl5/create_sub_packages: f162ba6db4 | (Stefan Seifert)++ | lib/Inline/Perl5.pm6
First part of inlining $loaded
Geth doc: e4d341bbc5 | (Elizabeth Mattijsen)++ | doc/Language/unicode_texas.pod6
Add ⁇ ‼ to list of unicode / texas variants
20:20
Geth doc: b6407d8b7e | (Zoffix Znet)++ | doc/Type/Str.pod6
Document Str.parse-names / &parse-names

Implemented today in Rakudo: github.com/rakudo/rakudo/commit/84cf1d2fb3 Tests in: github.com/perl6/roast/commit/5679afffa1
20:46
ajr_ Just for information, attempting to install Rakudo* on the Raspberry Pi has run into a problem right at the start 21:34
ajr_ Attempting to run Config.pl generates an "illegal instruction" message. 21:34
IOninja :( 21:35
ajr_ It appears to be a known problem with the ARM, though, judging by traffic on Pi sites.
I'll post an update when I've worked out the fix, unless soemone beats me to it.
ajr_ s/soem/some/ 21:36