»ö« 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
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
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␤»
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
simon__ nom: my @a = 1..3; @a X @a X @a; 00:43
p6eval nom eb6c4b: ( no output )
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
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
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
dalek ecza: 37737c7 | sorear++ | / (5 files):
Realign compiler and runtime parameter flags to 1:1 correspondence
03:22
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
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
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
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
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
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
sorear git status # What branch are you on? 04:50
TimTom master
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
lue hello world! o/ 04:55
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
benabik nom: say (9/9).WHAT 05:06
p6eval nom eb6c4b: OUTPUT«Rat()␤»
pat_js 08:29 *** 421 message Unknown command 07:30
dalek ecza: 8fef06e | sorear++ | / (5 files):
More signatures refactoring - use bitfields througout
08:26
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?
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
geekosaur very little 09:22
masak morning, #perl6! 09:27
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
masak 9/9 ~~ Int is potentially a tricky one. 09:48
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
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
tadzik or that was supposed to be the LAF prize... 10:40
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
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
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 &
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
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␤»
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
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))␤»
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
masak moritz! \o/ 18:01
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
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
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.
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
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?
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
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
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
sorear aaaaa wchar_t 19:58
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
masak ruoso: "concurrent task" is a cute term. I like. 20:02
ruoso masak: parrot uses the term 'task' as the generic for "green thread" or "os thread" 20:04
masak ooh, nice.
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
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
colomon parse definitely still has an :actions argument 21:26
Yary same error here
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
Yary just had to re-run Configure to get the Makefile back 21:52
sorear needs a more ... statistically robust ... way to do timings 22:23
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.
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
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?
tadzik gist.github.com/1522280 -- mostly working Bailador pastebin 23:26
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