»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
sorear phenny: tell colomon I'm wondering how to work the spectest stuff into announce.v13 00:00
phenny sorear: I'll pass that on when colomon is around.
colomon I'm back... little guy did NOT want me reading tonight. 00:03
phenny colomon: 00:00Z <sorear> tell colomon I'm wondering how to work the spectest stuff into announce.v13
colomon what are you wondering about it? 00:04
x3nU #perl6 seems to be most active perl irc channel these days 00:05
pretty strange
00:07 hundskatt left
colomon why is that strange? 00:07
x3nU perl 6 isn't exactly most popular thing
colomon but it's got two implementations with very active development at the moment, both coordinated over this channel. 00:10
dduncan that might also be because more established languages have split up into a variety of channels, while Perl 6 stuff is concentrated in fewer
eg, most Perl 5 talk is in channels about specific tools or modules rather than generic Perl 5 I think 00:11
or a lot is on mailing lists
Perl 6 talk doesn't seem to be on email lists as much as it used to
colomon, what is the other most active implementation besides Rakudo? 00:12
colomon Niecza
dduncan okay
I might have guessed that, what with it having regular release announcements
is there more than one person working on Niecza 00:13
sorear x3nU: have you tried looking on irc.perl.org?
dduncan: I count as five people
dduncan okay
sorear seriously, though, bus number = 1. colomon and [Coke] are trying to fix this
colomon I'm not really trying to fix the bus number thing, but I am trying to make sure you don't have to do all the work! 00:14
sorear colomon: right now there's nothing much in the announcement about all the spectest improvement work that's been done 00:15
maybe I'll link to tadzik/flussence's graph
dduncan on a tangent, is there any list of projects that are based on but don't intend to be a full Perl 6 implementation?
or are any known
not the lists, but projects
my Muldis D is based on Perl 6, and I thought there might be others
NQP maybe
is one 00:16
sorear phenny: tell flussence_ Do you mind if I use github.com/flussence/specgraphs/ra.../impls.png in the niecza v13 announcement?
phenny sorear: I'll pass that on when flussence_ is around.
colomon sorear: you could say something like [Coke] and colomon are working on fudging spectests so they run on NIecza; between that and actual improvements, we've gained 5000+ working spectests since the last release.
dduncan I suppose Perlito is another 00:20
sorear nom: sub foo($x where { 12 }) { "Y" }; say foo(4)
p6eval nom eb6c4b: OUTPUT«Y␤»
sorear Is this correct?
wait, of course it is 00:21
dalek ecza: 5a663d0 | sorear++ | docs/announce.v13:
Add blurb about roast progress, link to flussence++ chart
00:23
colomon is it correct? does the where clause smartmatch or does it just need to return true?
or is it smartmatching on the block? 00:24
colomon has not used where clauses in far, far too long
sorear I am, uh, not really sure 00:25
00:26 pmurias left, silug_ left
colomon yeah, it's smartmatching 00:27
I think
:(1) Will introspect the same way as: :(Int $ where 1)
x3nU sorear: yes, i'm on few channels there
colomon nom: sub foo($x where 12) { "Y" }; say foo(4) 00:28
p6eval nom eb6c4b: OUTPUT«Constraint type check failed for parameter '$x'␤ in sub foo at /tmp/Lg7p0E_DBc:1␤ in block <anon> at /tmp/Lg7p0E_DBc:1␤ in <anon> at /tmp/Lg7p0E_DBc:1␤»
00:30 dduncan left
colomon nom: sub foo($x where /\w+/) { say $x }; foo("this"); foo(" ") 00:31
p6eval nom eb6c4b: OUTPUT«this␤Constraint type check failed for parameter '$x'␤ in sub foo at /tmp/odHAr76zcq:1␤ in block <anon> at /tmp/odHAr76zcq:1␤ in <anon> at /tmp/odHAr76zcq:1␤» 00:32
colomon yeah, that's totally smartmatching
00:34 risou is now known as risou_awy 00:39 drbean left 00:42 simon__ joined
simon__ nom: my @a = 1..3; @a X @a X @a; 00:43
p6eval nom eb6c4b: ( no output )
00:46 drbean joined 00:53 simon__ left 00:54 replore joined 00:55 x3nU left 00:56 tokuhirom left 01:01 benabik left 01:02 benabik joined 01:55 donri joined 01:57 hypolin joined
sorear crazy idea of the day: how about making p6eval automatically "say" the result if no output is generated? 02:08
(rakudo and niecza already have this logic for the REPL. I'm imagining adding a --replish-output option) 02:09
02:15 envi_ joined 02:16 hundskatt joined 02:18 raiph left
donri sorear: +1 02:26
colomon +1 02:37
sorear Who would be able to tell me if this is feasable on the Rakudo fence side? 02:38
02:40 mkramer joined
donri why not just surround "say (...)"? 02:52
geekosaur double output if the code already does a say? 02:57
sorear exactly 02:58
dalek ecza: 16011dd | sorear++ | src/ (2 files):
Remove a bunch of fossils from signature handling
03:02
03:07 mkramer1 joined, mkramer left 03:14 lutok left
dalek ecza: 37737c7 | sorear++ | / (5 files):
Realign compiler and runtime parameter flags to 1:1 correspondence
03:22
03:24 mkramer joined, mkramer1 left 03:34 Ingis left 03:37 Psyche^ joined 03:38 sftp left 03:39 mkramer1 joined, mkramer left 03:40 Patterner left, Psyche^ is now known as Patterner 03:41 cognominal_ joined 03:44 cognominal left 03:46 mkramer1 left, mkramer joined 03:54 hypolin left 03:55 hypolin joined 04:15 envi_ left 04:18 mkramer left 04:24 Chillance left 04:39 TimTom joined 04:41 simcop2387 left
TimTom rakudo: my %a; %a<a> = <1 2 3>; say %a<a>; %a<a> = %a<a>,4; say %a<a>; 04:41
p6eval rakudo eb6c4b: OUTPUT«1 2 3␤maximum recursion depth exceeded␤ in method gist at src/gen/CORE.setting:682␤ in method gist at src/gen/CORE.setting:3977␤ in method gist at src/gen/CORE.setting:3977␤ in method gist at src/gen/CORE.setting:3977␤ in method gist at src/gen/CORE.setting:39…
TimTom good, so it's not just me
04:42 simcop2387 joined
TimTom is it a known issue that assigning some kinds of parcels in rakudo is currently broken? 04:42
sorear I don't see a bug there 04:43
TimTom ␤maximum recursion depth exceeded␤ in method gist at src/gen/CORE.setting:682␤ in method gist at src/gen/CORE.setting:3977␤ in method gist at src/gen/CORE.setting:3977␤ in method gist at src/gen/CORE.setting:3977␤ in method gist at src/gen/CORE.setting:39…
sorear %a<a> = %a<a>, 4 creates a recursive data structure
TimTom it should be printing 1 2 3 4 or something similar to it
but it shouldn't be an infinite recursive structure 04:44
sorear there is no 1 2 3 in the result
after the assignment, <1 2 3> is unreferenced garbage
04:44 raiph joined
TimTom I don't care if it ends up as ([1,2,3], 4) or (1,2,3,4). Either way it's not an infinitely recursive structure 04:45
04:45 Ingis joined
sorear TimTom: except as defined it *is* an infinitely recursive structure 04:46
rakudo: my $a; $a = <1 2 3>; say $a; $a = [ @$a, 4]; say $a
p6eval rakudo eb6c4b: OUTPUT«1 2 3␤1 2 3 4␤»
TimTom sorear: so how would I instead get it to assign the value of %a<a> to the slot stored in %a<a>
okay, that's fine. The underlying reason I found this is because hash push is broken 04:47
sorear TimTom: avoid using a parcel, because parcels are very lazy
parcels don't actually fetch until they have to
04:47 IngisKahn joined
sorear when you say $a = $a, 4; the parcel doesn't fetch until long after $a is re-assigned 04:47
TimTom rakudo: my %a; %a.push(1 => 2); %a.push(1 => 3); say %a 04:48
sorear which is why it comes out recursive
p6eval rakudo eb6c4b: OUTPUT«("1" => [2, 3]).hash␤»
TimTom okay, so that one's just broken on my system
04:49 eiro left
sorear what version are you on? 04:49
b: my %a; %a.push(1 => 2); %a.push(1 => 3); say %
TimTom latest
p6eval b 1b7dd1: OUTPUT«===SORRY!===␤Non-declarative sigil is missing its name at line 22, near "%"␤»
TimTom at least when I do a git pull it reports I'm at latest
04:49 Ingis left
sorear git status # What branch are you on? 04:50
TimTom master
04:50 stepnem_ joined
sorear b: my %a; %a.push(1 => 2); %a.push(1 => 3); say %a 04:51
p6eval b 1b7dd1: OUTPUT«1 2 3␤»
sorear TimTom: git checkout nom and try again
TimTom k
04:54 raiph left 04:55 lue joined
lue hello world! o/ 04:55
04:55 stepnem left, cooper left, stepnem_ is now known as stepnem
lue rakudo: say (9/9) ~~ Int; 04:56
p6eval rakudo eb6c4b: OUTPUT«Bool::False␤»
lue That feels like a bug.
sorear I said the same thing. 04:59
05:01 cooper joined
benabik nom: say (9/9).WHAT 05:06
p6eval nom eb6c4b: OUTPUT«Rat()␤»
05:11 cognominal joined 05:14 cognominal_ left 05:24 wolfman2000 left 05:45 envi_ joined 05:47 kaleem joined 06:00 lutok joined 06:16 traingeek joined, traingeek left 06:34 replore left 06:35 replore_ joined 06:50 packetknife left, am0c joined 07:00 koban joined 07:16 sudokode left 07:22 HarryS left 07:27 pat_js joined
pat_js 08:29 *** 421 message Unknown command 07:30
07:30 cognominal left 07:32 cognominal joined 07:34 mkramer1 joined 07:45 sudokode joined, fridim_ left 07:55 mkramer joined, mkramer1 left 08:07 sayu joined
dalek ecza: 8fef06e | sorear++ | / (5 files):
More signatures refactoring - use bitfields througout
08:26
08:28 mkramer left 08:29 HarryS joined, mkramer joined 08:35 mkramer left
ingy hi 08:48
anyone around?
sorear yes 08:49
but probably nobody useful. :)
ingy sorear! 08:50
I have a question for you! 08:51
what's the difference between a .a file and a .o file?
geekosaur .a file is a statc link archive, made of .o files 08:52
sorear .o files are like executable files, but without "main" 08:53
phenny sorear: Service not found in github.com/nslater/oblique/wiki
sorear compilers produce .o files, and the linker takes a bunch of .os and makes an executable
geekosaur as distinct from a dynamic link library which is made from .o files linked together in a special way (and often the .o files are compiled differently; see position-independent code)
sorear but people got tired of adding printf.o exit.o ... to their link lines, so the linker also accepts .a files, which are just archives contianing .o files
ingy oh 08:54
sorear I mean archives in a quite literal sense - .a files and .tar files can be used interchangably (well, the on-disk formats are incompatible)
notably, Debian packages use ar format for some reason
ingy is a .a file like a static .so? 08:55
geekosaur it's simpler
ingy and wtf is geekosaur?
geekosaur BSD has libarchive, linux doesn't in general, so .a format is easier to manipulate
erm? 08:56
ingy oh
I thought you were a bot
sorry
:D
geekosaur (also ar files are generally flat, i.e. cannot hold subdirectories)
ingy let me try comething 08:57
geekosaur (I think gnu ar relaxes that somewhat)
ingy something
thx geekosaur
sorear ingy: geekosaur is the *nix expert formerly known as allbery_b 09:02
who has a long history of wisecracking about his age
ingy: .a files are just file archives. they aren't in any way specialized for use with linkers. 09:03
geekosaur if you've ever heard Against Me!'s "Thrash Unreal"... sometimes I feel like that 09:04
sorear geekosaur: which came first, ar or tar?
09:04 eiro joined
sorear wanders off to sleep 09:05
geekosaur hm. that goes back a long way. ar came first with respect to use for disk files, though; tar was originally intended for disks (and you generally used numeric options 0-7 to pick /dev/rmt[0-7]nsted of the f/-f option)
geekosaur isn't quite sure what happened to that line... network hiccuped
sorear s/disks/tapes/?
geekosaur tapes. sigh 09:06
geekosaur needs a nap
sorear wait, where are you living these days?
geekosaur time only tells part of the story; my sleep schedule is quite insane, when it exists at all
geekosaur has a sleep disorder that leaves his sleep schedule drifting somewhat aimlessly and resistant to being fixed 09:07
sorear KF8NH suggests strong US ties but CTCP TIME says Western Europe
geekosaur oh. this IRC session is in EC2 and its time zone is UTC
but I'm actually located near Akron, OH atm
sorear ah 09:08
sorear out for real
geekosaur and between the number of people all over the place that I regularly chat with and my own sleep non-schedule, utc for the IRC session is fairly convenient
ingy geekosaur: do you do any perl 5 XS? 09:12
09:15 Trashlord left 09:19 eiro left 09:21 eiro joined
geekosaur very little 09:22
09:25 pat_js left
masak morning, #perl6! 09:27
09:29 drbean left
masak sorear: there once was logic to do what you proposed. it drove people nuts and interacted heavily with debugging. might just've been the implementation, of course, but from what I've seen the utility isn't worth the investment. 09:29
09:29 eiro left, eiro joined 09:31 drbean joined 09:33 mkramer joined 09:37 mkramer left, mkramer joined 09:44 kaare_ joined
masak 9/9 ~~ Int is potentially a tricky one. 09:48
09:48 mkramer left
masak on one hand, you could decide that number results should always try to fit into the "narrowest" type; here, Int. 09:48
I've argued that many times myself.
on the other hand, it feels slightly unfair if someone does 'my Rat $r = $a / $b', and it typefails the times when $b divides $a. 09:49
09:50 mkramer joined, mkramer left 09:54 envi_ left 10:03 mj41 joined, Trashlord joined 10:07 hypolin left 10:13 replore_ left 10:14 drbean left 10:19 drbean joined 10:30 mj41 left
masak breaking news: now there's a *second* prize in the contest: strangelyconsistent.org/blog/the-20...ng-contest 10:34
yet another reason to sign up. :)
tadzik the third prize can be an optimal way to tie a shoe :P 10:39
10:40 drbean left
tadzik or that was supposed to be the LAF prize... 10:40
10:47 drbean joined
masak tadzik: what is it with you and the optimal way to tie a shoe? :P 10:47
tadzik it's awesome! 10:49
will teach you one day
masak :P
11:13 cognominal left 11:16 ponbiki joined
masak "First of all: Finally accept that there are two Perls now. 5 and 6. Period. The world needs more Perl - here we have it. :) None of the two will go away. That's a good thing." -- Su-Shee++ blogs.perl.org/users/su-shee/2011/0...ideas.html 11:28
I really like the suggestions in that blog post. 11:29
11:31 koban left 11:36 cognominal joined 11:39 Trashlord left
tadzik what's a <...> in function body? 11:40
optional yada yada?
masak nom: sub foo { ... }; foo; say "alive" 11:43
p6eval nom eb6c4b: OUTPUT«alive␤»
masak nom: sub foo { ??? }; foo; say "alive"
p6eval nom eb6c4b: OUTPUT«Stub code executed␤alive␤»
masak nom: sub foo { !!! }; foo; say "alive"
p6eval nom eb6c4b: OUTPUT«Stub code executed␤ in sub foo at /tmp/ariRzjFSxp:1␤ in block <anon> at /tmp/ariRzjFSxp:1␤ in <anon> at /tmp/ariRzjFSxp:1␤»
masak nom: sub foo { ... }; foo.^name
p6eval nom eb6c4b: ( no output )
tadzik nom: sub foo { <...> }; foo; say "alive"
p6eval nom eb6c4b: OUTPUT«alive␤»
masak nom: sub foo { ... }; say foo.^name
p6eval nom eb6c4b: OUTPUT«Failure␤»
tadzik masak: github.com/mberends/http-server-simple/pull/4 11:44
masak tadzik: as far as I know, that's just a string with funny syntax.
tadzik oh, sane
nom: sub foo { <...> }; say foo.perl
p6eval nom eb6c4b: OUTPUT«"..."␤»
tadzik yep
masak &
11:45 donri left 12:08 Trashlord joined 12:23 am0c left 12:41 sayu_ joined 12:42 sayu left 12:46 sayu_ left 12:50 sayu joined 13:06 PacoLinux joined 13:07 x3nU joined 13:24 mkramer joined 13:31 zhangkaizhao joined 13:37 sftp joined 13:42 IngisKahn left 13:44 Trashlord left 13:52 kaleem left 14:08 Chillance joined 14:26 lateau_ joined 14:32 mkramer left 14:33 mkramer joined 14:41 mkramer left 14:43 mkramer joined, mkramer left 14:50 Trashlord joined 14:51 mkramer joined 14:55 TimTom left 15:03 mkramer left, sayu left 15:04 lateau_ left, bluescreen10 joined 15:05 mkramer joined 15:28 am0c^ joined 15:40 risou_awy is now known as risou 15:55 benabik left 15:57 TimTom joined 15:58 benabik_ joined 16:06 am0c joined, colomon_ joined 16:07 colomon left, colomon_ is now known as colomon
masak quiet today. is everyone in a post-Christmas dinner coma? 16:30
or are you absorbed by the p6cc problems? :P
tadzik more like in-a-cold coma :/
masak aww
tadzik not even in a mood for hacking 16:31
but did some psgi/POST research for HTTP::Server::Simple
masak puts on armor and hugs tadzik :)
tadzik :)
ha 16:32
twitter.com/#!/samvtran/status/151...3386315776
it was a good move to merge it :)
masak \o/ 16:33
I never saw the the point of those angle brackets, though. 16:34
tadzik they're just workaround
in this case
could've been removed completely and the effect would've been similar 16:35
masak ah. 16:36
tadzik now they just return "..."
but they're either never called, or their result is ignore 16:37
d
tadzik ponders giving some serious love to H::S::Simple
colomon has been pondering making a serious effort to port panda to niecza -- but $work and family will probably keep tuits in short supply for a couple of days 16:38
masak (Panda on Niecza)++ 16:40
16:42 glitchmr joined, glitchmr is now known as GlitchMr 16:43 GlitchMr left 16:48 jaldhar left 16:49 x3nU left 16:52 pmurias joined 16:54 jaldhar joined
ruoso have been trying to get some word from the parrot folks on the "blocking buffered stream" idea 16:58
masak yes, nice email thread.
kudos.
TimTom Hi. I'm looking for a way to either get the cross operator to return it's items as an list of arrays or for the for loop to take n items at a time without being forced to specify n scalar variables. As an example of the list generation... 17:01
rakudo: my @a = (1,2,3); my $n = 2; say infix:<X>(|(en.wikipedia.org/wiki/Special:Searc...;search=@a xx $n));
p6eval rakudo eb6c4b: OUTPUT«===SORRY!===␤Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 2␤»
TimTom oh good. it interpreted that...
rakudo: my @a = (1,2,3); my $n = 2; say infix:<X>(|([ [@a] ] xx $n));
p6eval rakudo eb6c4b: OUTPUT«1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3␤»
masak TimTom: hi. sounds like you maybe want lol context. 17:03
"lol" here stands for "list of lists".
TimTom masak: most likely. How would I get said context?
masak I'm not so sure it's fully supported yet... so, workaround, most likely.
here, let me dig up the relevant piece of spec for you. 17:04
ruoso say infix:<X>(|([ [1,2,3] ] xx 2)).perl
nom: say infix:<X>(|([ [1,2,3] ] xx 2)).perl
p6eval nom eb6c4b: OUTPUT«((ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),)).list␤»
ruoso nom: say infix:<X>(|([ [1,2,3] ] xx 2)) 17:05
p6eval nom eb6c4b: OUTPUT«1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3␤»
ruoso nom: $a := infix:<X>(|([ [1,2,3] ] xx 2)); say $a[0;0];
p6eval nom eb6c4b: OUTPUT«===SORRY!===␤Variable $a is not predeclared at line 1, near " := infix:"␤»
masak hm. I don't see any particular synopsis "introducing" lol context. 17:06
ruoso nom: my $a := infix:<X>(|([ [1,2,3] ] xx 2)); say $a[0;0];
p6eval nom eb6c4b: OUTPUT«ListIter.new()␤»
ruoso nom: my $a := infix:<X>(|([ [1,2,3] ] xx 2)); say $a[0;0;0];
p6eval nom eb6c4b: OUTPUT«ListIter.new()␤»
ruoso nom: my $a := infix:<X>(|([ [1,2,3] ] xx 2)); say $a[0;0].get;
p6eval nom eb6c4b: OUTPUT«Method 'get' not found for invocant of class 'Parcel'␤ in block <anon> at /tmp/1CqkbYX8Dg:1␤ in <anon> at /tmp/1CqkbYX8Dg:1␤»
TimTom I know it's referenced at least in the spec. In fact, it's referecned right in the cross operator section
but there's no explanation on how I would transform something into them.
ruoso nom: my $a := infix:<X>(|([ [1,2,3] ] xx 2)).lol; say $a[0;0].get; 17:07
p6eval nom eb6c4b: OUTPUT«Method 'lol' not found for invocant of class 'List'␤ in block <anon> at /tmp/8nn1qc4s8X:1␤ in <anon> at /tmp/8nn1qc4s8X:1␤»
TimTom I'm not sure how it affects the infix notation, but you want X, instead of X to get it into a semblance of a list of list for the return value. But it still ends up treated as a single list for iteration 17:08
ruoso p6eval nom: my $a := infix:<X>(|([ [1,2,3] ] xx 2)); say $a[1][1];
p6eval ruoso: nom eb6c4b: OUTPUT«2␤»
TimTom oooh
ruoso the bind operator will defer context enforcement 17:09
so you will get the actual iterators
in this case, $a[1;1] was supposed to work as well 17:10
but I guess it's not making the correct context 17:11
There was also a "capture context", but I'm not sure that ever got accepted/implemented
p6eval nom: my ¢a = infix:<X>(|([ [1,2,3] ] xx 2)); say $a[1][1]; 17:12
p6eval ruoso: nom eb6c4b: OUTPUT«===SORRY!===␤Malformed my at line 1, near "\x{a2}a = infix"␤»
ruoso p6eval nom: my ¢a = infix:<X>(|([ [1,2,3] ] xx 2)); say ¢a[1][1];
p6eval ruoso: nom eb6c4b: OUTPUT«===SORRY!===␤Malformed my at line 1, near "\x{a2}a = infix"␤»
ruoso p6eval std: my ¢a = infix:<X>(|([ [1,2,3] ] xx 2)); say ¢a[1][1];
p6eval ruoso: std dc62e1d: OUTPUT«===SORRY!===␤Malformed my at /tmp/H30mtq9BPc line 1:␤------> my ⏏¢a = infix:<X>(|([ [1,2,3] ] xx 2)); say␤ expecting scoped declarator␤Parse failed␤FAILED 00:01 120m␤»
ruoso yep... not accepted/implemented 17:13
TimTom nom: my $a := infix:<X>(|([ [1,2,3] ] xx 2)); for $a -> $elem { say $elem; }
p6eval nom eb6c4b: OUTPUT«1␤1␤1␤2␤1␤3␤2␤1␤2␤2␤2␤3␤3␤1␤3␤2␤3␤3␤»
TimToady we have a parcel context introduced with \ instead
TimTom it's still flattening when used in a for loop
ruoso TimTom: for will flatten the elements.. 17:14
TimTom ruoso: as will any listy context. assigning it to @d also gets the same result 17:15
TimToady lol is still unimplemented
TimTom I suppose I could instead iterate over ^$a.elems
colomon TimToady! \o/
ruoso doesn't the Parcel have an API to get the immediate elements? 17:16
TimToady nom: my $a := infix:<X>(|([ [1,2,3] ] xx 2)); say $a[0].perl 17:17
p6eval nom eb6c4b: OUTPUT«(ListIter.new(),)␤»
TimToady nom: my $a := ([1,2,3],[4,5,6]); say $a[0].perl 17:18
p6eval nom eb6c4b: OUTPUT«[1, 2, 3]␤»
ruoso nom: my $a := ((1,2,3),(4,5,6)); say $a[0].perl 17:19
p6eval nom eb6c4b: OUTPUT«1␤»
ruoso wasn't that supposed to have two Parcels?
TimToady I would tend to think so 17:20
nom: my $a := ((1,2,3),(4,5,6)); say $a.perl 17:21
p6eval nom eb6c4b: OUTPUT«((1, 2, 3), (4, 5, 6))␤»
ruoso hmm... $a[0] is forcing flat list context 17:22
nom: my $a := ((1,2,3),(4,5,6)); say $a[0;0].perl
p6eval nom eb6c4b: OUTPUT«1␤»
ruoso nom: my $a := ((1,2,3),(4,5,6)); say $a[0;1].perl
p6eval nom eb6c4b: OUTPUT«2␤»
TimToady nobody implements ; yet either 17:23
ruoso ah. ok.
TimToady in fact, S09 has mostly been completely ignored
ruoso nom: say Parcel.^methods
p6eval nom eb6c4b: OUTPUT«Parcel Capture flat item list lol at_pos postcircumfix:<[ ]> STORE FLATTENABLE_LIST FLATTENABLE_HASH fmt of Bool Numeric Str ACCEPTS gist perl DUMP abs conjugate sqrt sign rand sin asin cos acos tan atan atan2 sec asec cosec acosec cotan acotan sinh asinh cosh acosh t…
TimToady nom: my $a := ((1,2,3),(4,5,6)); say $a.lol.perl 17:24
p6eval nom eb6c4b: OUTPUT«LoL.new((1, 2, 3), (4, 5, 6))␤»
TimToady nom: my $a := ((1,2,3),(4,5,6)); say $a.lol[0]perl
p6eval nom eb6c4b: OUTPUT«===SORRY!===␤Confused at line 1, near "say $a.lol"␤»
ruoso nom: my $a := ((1,2,3),(4,5,6)); say $a.lol[0].perl
TimToady nom: my $a := ((1,2,3),(4,5,6)); say $a.lol[0].perl
p6eval nom eb6c4b: OUTPUT«(1, 2, 3)␤»
ruoso hah
TimToady looks like we have some lols
ruoso nom: my $a := infix:<X>(|([ [1,2,3] ] xx 2)).lol; say $a.lol[0][0];
p6eval nom eb6c4b: OUTPUT«Method 'lol' not found for invocant of class 'List'␤ in block <anon> at /tmp/KNC1ANnUM_:1␤ in <anon> at /tmp/KNC1ANnUM_:1␤»
TimToady I suspect it's only the minimum lol-hood to implement ** binding 17:25
but I'm exactly two weeks behind in backlogging due to brane malfunction, so don't quote me on anything 17:26
ruoso I am afraid infix:<X> is flattening too early 17:33
hmm... nope... it's not 17:34
nom: say infix:<X>(|(((1,2,3) xx 2)))[8][1].perl 17:35
p6eval nom eb6c4b: OUTPUT«3␤»
17:35 zhangkaizhao left
TimToady perl6: say ([1,2,3] X [4,5,6]).elems 17:35
p6eval niecza v12-183-g8fef06e: OUTPUT«1␤»
..pugs b927740, rakudo eb6c4b: OUTPUT«9␤»
TimToady 1 is correct there 17:36
so yes, nom is flattening wrongly
masak aye. 17:37
TimToady [] should not flatten in a list context
masak submitted a rakudobug about that yesterday.
(but with &take, not infix:<X>)
suspect it's the same root cause, though. namely, &take :)
ruoso hmm.. why is 1 correct? isn't .elems being called on the parcel with the results? 17:38
TimToady perl6: say (([1,2,3],[1,2,3])).elems 17:41
p6eval pugs b927740, rakudo eb6c4b, niecza v12-183-g8fef06e: OUTPUT«2␤»
masak 2!?
TimToady .elems appears to be flattening 17:42
perl6: say ([1,2,3] X [1,2,3]).perl
p6eval pugs b927740: OUTPUT«((1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3))␤»
..niecza v12-183-g8fef06e: OUTPUT«([1, 2, 3], [1, 2, 3]).list␤»
..rakudo eb6c4b: OUTPUT«((ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),)).list␤»
ruoso perl6: say ((1,2,3) X (1,2,3)).perl 17:43
p6eval pugs b927740: OUTPUT«((1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3))␤»
..rakudo eb6c4b: OUTPUT«((ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),)).list␤»
..niecza v12-183-g8fef06e: OUTPUT«(1, 1, 1, 2, 1, 3, 2, 1, 2, 2, 2, 3, 3, 1, 3, 2, 3, 3).list␤»
TimToady niecza is wrong there in losing the subparcels from X, I think 17:44
17:44 cognominal left
TimToady otoh, your inner parens are supposedly noops 17:45
perl6: say (1,2,3 X 4,5,6).perl
p6eval niecza v12-183-g8fef06e: OUTPUT«(1, 4, 1, 5, 1, 6, 2, 4, 2, 5, 2, 6, 3, 4, 3, 5, 3, 6).list␤»
..rakudo eb6c4b: OUTPUT«((ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),), (ListIter.new(),)).list␤»
..pugs b927740: OUTPUT«((1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6))␤»
17:46 cognominal joined, yunga joined
ruoso yeah.. true... but the effect was supposed to be the same yet... I think pugs is correct there.. 17:46
TimToady it at least provides that appearance :) 17:47
masak Rakudo is just being weird in this case.
ruoso but [1,2,3] is supposed to be different than plain 1,2,3 17:52
perl6: say [1,2,3].perl; say (1,2,3).perl;
p6eval pugs b927740, rakudo eb6c4b, niecza v12-183-g8fef06e: OUTPUT«[1, 2, 3]␤(1, 2, 3)␤»
ruoso perl6: say [1,2,3].HOW; say (1,2,3).HOW;
p6eval niecza v12-183-g8fef06e: OUTPUT«ClassHOW.new(...)␤ClassHOW.new(...)␤»
..rakudo eb6c4b: OUTPUT«Method 'gist' not found for invocant of class 'Perl6::Metamodel::ClassHOW'␤ in sub say at src/gen/CORE.setting:5649␤ in block <anon> at /tmp/0BfXLX4lvT:1␤ in <anon> at /tmp/0BfXLX4lvT:1␤»
..pugs b927740: OUTPUT«<obj:Class>␤<obj:Class>␤»
masak [backlog] wow, the discussion abotu <numish> and LTM is eye-opening. I hadn't realized how much subrule parsing and calling actions can "get out of sync". 17:53
ruoso TimToady: btw, if you could take a look at a thread in parrot-dev I just posted, it would be interesting to get some confirmation about some expectations about concurrency... 17:56
lists.parrot.org/pipermail/parrot-d...06506.html if you're not subscribed 17:57
moritz \o 17:59
18:01 whiteknight joined, whiteknight is now known as Guest89987
masak moritz! \o/ 18:01
18:02 fglock joined 18:04 am0c left 18:08 mkramer left 18:10 mkramer joined
sorear good * #perl6 18:14
masak: ah, understood. I will drop it then.
masak sorear: it's one of those "cute on paper" ideas, I think. 18:15
18:15 mkramer left
sorear niecza: say (1,2,3 X 4,5,6).raw-elem(2).perl # TimToady, known bug in .perl 18:17
p6eval niecza v12-183-g8fef06e: OUTPUT«Unhandled exception: Unable to resolve method raw-elem in class List␤ at /tmp/u0vVfpZ8vu line 1 (mainline @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2572 (ANON @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2573 (module-CORE @ 61) ␤ at /…
sorear niecza: say (1,2,3 X 4,5,6).raw_at(2).perl 18:18
p6eval niecza v12-183-g8fef06e: OUTPUT«Unhandled exception: Unable to resolve method raw_at in class List␤ at /tmp/tIhJvaDWkc line 1 (mainline @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2572 (ANON @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2573 (module-CORE @ 61) ␤ at /ho…
sorear ohright, it doesn't return a Parcel 18:19
I really need help understanding the finer points of LoL and .lol semantics
18:21 GlitchMr joined
masak ruoso: I think jnthn will be interested in the current patrrot-dev thread. but he's currently on holiday. 18:22
ruoso: if I may channel him for a while, I'd say that "all sane concurrency will have to somehow build on CAS". 18:27
ruoso CAS? 18:28
masak that seems relevant at least for serializing access to that increment counter in the discussion.
en.wikipedia.org/wiki/Compare-and-swap
ruoso oh... but that is in a much lower level... 18:29
masak yes, it's grounded in hardware. but the *idea* of it is useful even at higher levels. 18:30
in some sense, all the other atomicity concepts build on CAS as a primitive.
so the question is "just" through which Perl 6 primitives we choose to expose it. 18:31
ruoso Yes... but I am talking on a level more abstract than that
I am talking in the model on how information flows and how parallel things preempt each other
masak right.
so it's more the "mental model of Perl 6" that you're interested in now. 18:32
not how to ground it in the VM.
18:32 carlin joined
ruoso with the exception that we would require one more vm primitive 18:33
that we used to
which is the akin to unix pipes
carlin has something changed with how Q:PIR {} works in Rakudo? 18:34
18:34 mj41 joined
carlin I'm getting "Cannot assign a non-Perl 6 value to a Perl 6 container" on code that worked a few months ago 18:34
tadzik carlin: what does the code return>?
masak well, I've always seen unix pipes as a kind of coroutines. so, basically equivalent to the gather/take primitive.
TimToady by default unix processes cannot modify their incoming env or arg values from the surrounding scopes
masak carlin: might need to containerize stuff explicitly nowadays. 18:35
carlin: maybe check how Rakudo's src/core/ does things.
TimToady also Q:PIR is deprecated in favor of nqp primitives
carlin ah ok
masak aye.
carlin so %r = box whatever isn't the way to go anymore? 18:36
tadzik you may want to box that from the Perl 6 side
like nqp::p6box_i(Q:PIR {}) for Int
masak ruoso: is there any reason I'm missing that things like '<==' would need more from Perl 6 than things like 'gather'?
TimToady any lazy list can potentially be implemented using threads in p6 18:37
in that sense <== isn't so special 18:38
but it is more of an indication that the user is thinking in parallel
masak to me it feels like "the same" primitive.
TimToady so the optimizer might make different choices
we may also end up with some restrictions on how the inner scope of a thread can interact with its outer scope by default 18:39
masak I've been mentally labelling the thread-like thing that runs inside of a 'gather' as a 'co' (from 'coroutine') -- essentially a green thread.
TimToady that's fine until it blocks :) 18:40
masak then it's a 'compet' :P
TimToady: wouldn't it make sense from the optimizer's point-of-view to *completely* restrict the thread's interaction with the outer scope by default?
and then have it ask nicely for permissions?
TimToady not necessary for constants 18:41
masak feels analogous to making params readonly.
TimToady and for some known-unchanging values
masak sure, but those are not problematic anyway...
TimToady but basically it's okay for any input you have no say in the production of
sorear restricting interaction between coroutines and outer scopes is very problematic. I can't think how to implmenet it 18:42
TimToady well, ssa-ish fresh-binding-only semantics help with the loops involving the return value, at least 18:43
masak the boundary between threads isn't visible statically?
18:43 pmurias left
TimToady it is in <==, at least at the top level, but not in subcalls 18:43
sorear masak: threads can call functions outside them, like &infix:<+>
masak dang.
masak de-trains, back in 30ish 18:44
TimToady anyway, our default is that it's the programmers fault, and if the compiler can help to detect badness, all the better 18:45
programs that rely on such side effects may become illegal in the future, which is a good reason to avoid programming in that style 18:46
it's an open question what can be caught in the absense of a monadic lifestyle, though...
and monads are not P6's job to inflict on the minds of programmers 18:47
or however a sane person would say that...
historically, Perl has not shied away from detecting specific problems just because the general problem is insoluable :) 18:49
.oO("Your program is going to halt at line 42. You have been warned.")
18:50
18:52 thou joined 18:54 MayDaniel joined, am0c^ left 19:00 Mowah joined 19:07 drbean left 19:11 risou is now known as risou_awy 19:13 drbean joined 19:14 donri joined
sorear TimToady: what do you think about <:XID_Start> and <:XID_Continue> ? 19:15
seems the Perl 5 folks have switched to using that to define identifiers
19:19 cognominal left 19:21 cognominal joined
TimToady I don't think anything about them. 19:24
it does not reassure me that a google for XID_Start finds only old four-year-old discussions though 19:27
I suppose if I put on my language designer meta-hat, I'd say that language designers don't like standards bodies telling them how to design their languages. :) 19:31
ruoso masak: it is a coroutine that can be run concurrently, yes 19:38
we could consider that every gather spawns a new "concurrent task"
dalek ecza: 64376da | sorear++ | lib/CORE.setting:
Seems STD wants <alpha> to match "_"
19:39
sorear now running the pre-release spectest
moritz niecza: say so '_' ~~ /<:alpha>/ 19:40
p6eval niecza v12-183-g8fef06e: OUTPUT«Bool::False␤»
sorear :alpha is the Unicode property "Alphabetic" 19:42
<alpha> is now defined as <:alpha + [_]>
moritz yes, I'm aware 19:45
just thought I'd check :-) 19:46
TimToady maybe we should rename that to <al_pha> :)
more seriously, maybe it should be <wchar> if it reflects \w 19:47
but I shouldn't be designing anything till my brane improves a bit more... 19:48
19:49 IngisKahn joined 19:57 drbean left
sorear aaaaa wchar_t 19:58
19:58 mj41 left
TimToady right...well, <w> is maybe available, but \w is still shorter :) 19:59
anyway, as I say, I'm still not quite up to weighing tradeoffs in my head 20:00
at least I can think about one thing at a time now...
last week it was more like .5 things at a time
s/week/month/ 20:02
20:02 icwiener joined
masak ruoso: "concurrent task" is a cute term. I like. 20:02
20:03 GlitchMr left, drbean joined, benabik_ left
ruoso masak: parrot uses the term 'task' as the generic for "green thread" or "os thread" 20:04
masak ooh, nice.
20:06 fglock left 20:08 fridim_ joined 20:24 bbkr1 left 20:25 cognominal_ joined 20:27 drbean left 20:28 cognominal left 20:31 ksi joined 20:33 drbean joined 20:34 bbkr1 joined 20:45 Mowah left 20:46 mj41 joined 20:50 donri left 20:54 molaf joined 21:04 [particle] joined 21:06 ilogger2 joined, ChanServ sets mode: +v ilogger2
dalek ecza: 66cefa7 | sorear++ | Makefile:
github.com has a valid SSL certificate now
21:14
ecza: a22318d | sorear++ | FETCH_URL:
Update FETCH_URL
masak 'night, #perl6 21:15
sorear v13 ann sent
'night masak 21:16
21:18 Yary joined 21:19 [particle] joined
Yary Hi. I updated my Rakudo git clone (after about a year of non-use) and a simple Grammar failed- pastebin.com/wA0G9qRY 21:22
is it my build, or has the syntax changed?
colomon probably syntax, give me a moment 21:23
hmmm... 21:24
tadzik shouldn't that be :actions(Math::Actions.new)?
Yary I'll try adding ".new" 21:25
21:25 arlinius joined
colomon parse definitely still has an :actions argument 21:26
Yary same error here
21:27 [particle] left
Yary Not sure it is a good build. There was a test failure: t/02-embed/01-load.t ............... Failed 1/1 subtests 21:27
colomon Yary: it works for me
Yary OK that's good to know
colomon might be worth doing a "make realclean" and rebuilding everything from scratch 21:28
Yary arrgh takes forever but OK
realclan lost my makefile :-( 21:30
have to go for a bit, thanks for the start though
21:49 drbean joined
Yary just had to re-run Configure to get the Makefile back 21:52
22:05 drbean left 22:14 drbean joined 22:18 y3llow joined 22:19 pothos joined 22:20 y3llow left, y3llow joined 22:22 pothos left, pothos joined, y3llow left 22:23 y3llow joined
sorear needs a more ... statistically robust ... way to do timings 22:23
22:24 y3llow left 22:25 y3llow joined, pothos left, pothos joined
sorear phenny: tell [Coke] What do I need to do to run autounfudge against niecza? 22:31
phenny sorear: I'll pass that on when [Coke] is around.
22:56 Yary left
dalek osystem: 5774692 | tadzik++ | META.list:
Add Bailador
22:56
tadzik nom: qr[/foo] 23:10
p6eval nom eb6c4b: OUTPUT«===SORRY!===␤Unable to parse postcircumfix:sym<[ ]>, couldn't find final ']' at line 2␤»
tadzik std: qr[/foo]
p6eval std dc62e1d: OUTPUT«===SORRY!===␤Unable to parse regex; couldn't find final '/' at /tmp/AjjYKRPFG_ line 1:␤------> qr[/foo⏏]␤ expecting any of:␤ quantifier␤ regex atom␤Undeclared routine:␤ 'qr' used at line 1␤Parse failed␤FAILED 00:01 121m␤»…
tadzik hmm
23:10 mj41 joined
tadzik std: qr[/foo/] 23:10
p6eval std dc62e1d: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'qr' used at line 1␤Check failed␤FAILED 00:01 121m␤»
tadzik does it treat [/ as a delimiter?
23:17 whsdu joined
tadzik gist.github.com/1522280 -- mostly working Bailador pastebin 23:26
23:38 whsdu left
TimToady why are you expecting qr to do anything special? 23:40
tadzik I was expecting it to turn '/foo' into a regex 23:41
TimToady that's a p5ism
there is no qr in p6
tadzik oh, ok
TimToady maybe you wanted rx[] 23:42
tadzik probably, yes. Thank you
23:43 mj41 left 23:48 drbean left 23:53 drbean joined