»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by masak on 12 May 2015.
00:01 yeltzooo joined 00:04 Spot__ joined 00:07 avuserow joined 00:09 BenGoldberg joined 00:10 fernando___ joined, BenGoldberg_ joined 00:11 Ben_Goldberg left 00:13 BenGoldberg left 00:20 sjn_phone_ left 00:21 cognominal_ left 00:24 psch joined 00:27 nine joined 00:30 [ptc]_ joined, Spot___ joined, bin_005_n joined 00:31 raiph joined, clkao_ joined 00:32 ggherdov_ joined, stevemc_ joined 00:34 arnsholt joined, zoosha joined 00:36 Bucciarati_ joined, psch_ left, ggherdov left, fernando___ left, Spot__ left, Al-Caveman left, Khisanth left, zoosha_ left, ugexe left, Bucciarati left, steve_mc left, skarn left, Obbi left, clkao left, yogan left, mephinet left, arnsholt_ left, hoelzro left, [ptc] left, nine_ left, integral left, pochi_ left, bin_005 left, flussence left, Juerd left, pochi joined, [ptc]_ is now known as [ptc] 00:38 Spot___ is now known as Spot__ 00:41 clkao_ is now known as clkao, AlexDaniel is now known as 17WAB4TD9, integral joined, AlexDaniel joined, hoelzro joined, mephinet joined, yogan joined, fernando___ joined, Khisanth joined, flussenc1 joined, Juerd joined, Obbi joined 00:42 fernando___ left, fernando___ joined, mephinet left, mephinet joined, raiph left 00:43 Khisanth is now known as Guest11680 00:44 perlpilot joined, pmichaud_ joined, krakan_ joined, breinbaa1 joined, orevdiabl joined, jdv79_ joined, leedo joined, rudi_s_ joined 00:45 Gothmog_1 joined, smash_ joined, nwc10_ joined, grondilu joined, rhr_ joined 00:46 bobkare_ joined 00:47 ugexe joined 00:48 skarn joined 00:49 tony-o_ joined 00:50 gfldex_ left 00:52 ggherdov_ is now known as ggherdov 00:55 Al-Caveman joined, silug_ joined, profan left, smash left, PerlJam left, pmichaud left, silug left, [Tux] left, breinbaas left, rhr left, leedo_ left, rudi_s left, Gothmog_ left, b2gills left, Gothmog_1 is now known as Gothmog_, jdv79 left, [Tux] joined 00:57 aborazmeh joined, aborazmeh left, aborazmeh joined, 17WAB4TD9 left, nwc10 left, b2gills joined 00:59 bobkare left, bobkare_ is now known as bobkare 01:00 kurahaupo joined 01:16 kurahaupo left 01:27 stevemc_ left 01:46 Guest11680 left 01:49 Khisanth joined 02:09 yqt left 02:15 aborazmeh left 02:16 noganex_ joined 02:20 noganex left 02:36 Sqirrel left 02:37 flussenc1 left, flussence joined 02:38 rmgk_ joined, rmgk is now known as Guest33299, rmgk_ is now known as rmgk 02:42 Guest33299 left 02:51 davido___ joined 02:52 davido__ left 03:08 CQ_ joined 03:09 dj_goku joined 03:11 CQ left, CQ_ is now known as CQ 03:14 dayangkun joined 03:16 nys left 03:30 kaare__ joined 03:31 kaare__ is now known as kaare_ 03:51 tinyblak joined 04:11 isBEKaml joined, isBEKaml left 04:17 dayangkun left 04:24 bin_005_n left 04:26 bin_005 joined 04:30 rindolf joined 04:31 bin_005_j joined 04:32 bin_005 left 04:42 bin_005_j left 05:19 rindolf left 05:23 skids joined 05:30 spintronic left, spintronic joined 05:46 Psyche^ joined 05:47 nwc10_ is now known as nwc10 05:50 Psyche^_ left 05:52 araujo joined 05:57 aborazmeh joined, aborazmeh left, aborazmeh joined 06:13 danaj joined 06:15 BenGoldberg_ left
xinming m: loop (my $c = 0; $c < 3; $c++) { "hello".say; } loop (my $c; $c < 3; $c++) { "test".say } 06:31
camelia rakudo-moar be122a: OUTPUT«5===SORRY!5=== Error while compiling /tmp/I8wd83MWbU␤Strange text after block (missing semicolon or comma?)␤at /tmp/I8wd83MWbU:1␤------> 3y $c = 0; $c < 3; $c++) { "hello".say; }7⏏5 loop (my $c; $c < 3; $c++) { "test"␤»
xinming m: loop (my $c = 0; $c < 3; $c++) { "hello".say; }; loop (my $c; $c < 3; $c++) { "test".say }
camelia rakudo-moar be122a: OUTPUT«Potential difficulties:␤ Redeclaration of symbol $c␤ at /tmp/zQGmzLFw0W:1␤ ------> 3 $c++) { "hello".say; }; loop (my $c7⏏5; $c < 3; $c++) { "test".say }␤hello␤hello␤hello␤»
06:31 aborazmeh left
xinming Is this a bug? I mean, shouldn't the $c be visible within the loop only, instead of the whole block. 06:32
m: loop ($c = 0; $c < 3; $c++) { "hello".say; };
camelia rakudo-moar be122a: OUTPUT«5===SORRY!5=== Error while compiling /tmp/AwVZMTxKem␤Variable '$c' is not declared␤at /tmp/AwVZMTxKem:1␤------> 3loop (7⏏5$c = 0; $c < 3; $c++) { "hello".say; };␤»
xinming In synopsis, We have the example without needing to decalre the $c, But that doesn't seem to work.
06:33 aborazmeh joined, aborazmeh left, aborazmeh joined 06:34 muethos joined
bartolin xinming: we had that as a bug report the other day: RT #125434. it was rejected, because the current behaviour is expected. basically the lexical scope of $c in your example is the outer block. the bug report has a link to S04 which explains the details. 06:45
rt.perl.org/Ticket/Display.html?id=125434
xinming: you could also take a look at this discussion: irclog.perlgeek.de/perl6/2015-06-19#i_10774643 06:46
m: loop (my $c = 0; $c < 3; $c++) { "hello".say; }; loop ($c = 0; $c < 3; $c++) { "test".say } 06:48
camelia rakudo-moar be122a: OUTPUT«hello␤hello␤hello␤test␤test␤test␤»
06:52 jasonmay1 is now known as jasonmay
xinming bartolin: Ok, Thanks. 06:52
bartolin your welcome
xinming another question, Is it possible to extract the "method" (not sub) and return that method as a code? 06:53
bartolin sorry, I don't know that 06:54
xinming because something like &self.method_name result an error 06:55
07:03 bin_005 joined 07:17 muethos left
skids m: Int.^find_method("abs").perl.say 07:34
camelia rakudo-moar be122a: OUTPUT«method abs (Int:D $: *%_) { #`(Method|57858136) ... }␤»
skids xinming: spec on the above comes with a caveat -- it is in S12, but I don't know if the hyphenation-versus-underscores reform will get into the MOP related functions or not. 07:38
07:44 skids left 07:50 aborazmeh left 07:53 azawawi joined
azawawi hi 07:53
I am trying the script in github.com/MoarVM/MoarVM/issues/149 07:54
2015.06 fixed the 100% CPU behavior but now a CTRL-C does not cause any exit from die
am i doing the wrong way or is there a new way to exit a script from a signal? 07:55
07:56 mr-foobar joined 07:58 telex left 08:00 telex joined 08:09 aborazmeh joined, aborazmeh left, aborazmeh joined 08:11 azawawi left 08:12 darutoko joined 08:19 uncleyear left 08:21 breinbaa1 left 08:23 breinbaas joined, breinbaas left 08:24 breinbaas joined, salva joined 08:26 RabidGravy joined
dalek kudo/nom: 55498e2 | usev6++ | src/Perl6/Metamodel/MethodContainer.nqp:
Fix JVM build (avoid NullPointerException)
08:34
kudo/nom: 06e4e9a | lizmat++ | src/Perl6/Metamodel/MethodContainer.nqp:
Merge pull request #444 from usev6/jvm_build

Fix JVM build (avoid NullPointerException)
08:55 gfldex joined 09:08 rindolf joined 09:10 uncleyear joined
bartolin star-m: BEGIN my %c; multi foo ($a where %c{$a}:exists) { say "cached " ~ %c{$a} }; multi foo ($a) { %c{$a} = $a; say $a }; for 1..10 { my $n = (1..10).pick; foo($n) } 09:10
camelia star-m 2015.03: OUTPUT«5␤1␤cached 5␤6␤cached 6␤8␤4␤cached 4␤cached 6␤3␤»
bartolin m: BEGIN my %c; multi foo ($a where %c{$a}:exists) { say "cached " ~ %c{$a} }; multi foo ($a) { %c{$a} = $a; say $a }; for 1..10 { my $n = (1..10).pick; foo($n) }
camelia rakudo-moar 06e4e9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/2I7owAarne␤Invalid typename 'exists' in parameter declaration.␤at /tmp/2I7owAarne:1␤------> 3my %c; multi foo ($a where %c{$a}:exists7⏏5) { say "cached " ~ %c{$a} }; multi foo ␤»
bartolin that looks like a fallout of jnthn's EXPR preclim fix 09:11
the example is (adjusted) from integration/advent2012-day04.t, which we only execute as stresstest 09:12
if it's expected to work I would rakudobug it and add a new test to roast (which is not marked as 'stress') 09:18
09:20 tinyblak left
masak good antenoon, #perl6 09:21
bartolin: why `BEGIN my %c` and not just `my %c` -- what's the semantic difference between those two? 09:22
moritz \o 09:23
masak is cursed these days with knowing a little too much about scoping rules
09:23 muethos joined
moritz mostly off-topic question: can somebody recommend literature on how to implement workflow systems in business applications? 09:24
masak m: my %c; sub foo($a where %c{$a}:exists) {}
camelia rakudo-moar 06e4e9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/ZUwJ2FZQXc␤Invalid typename 'exists' in parameter declaration.␤at /tmp/ZUwJ2FZQXc:1␤------> 3my %c; sub foo($a where %c{$a}:exists7⏏5) {}␤»
bartolin masak: hmm, I took that from the failing example roast
masak bartolin: consider whether it's useless there too ;) 09:25
bartolin masak: yeah, I'm considering it right now ;-)
moritz m: my %c; sub foo($a where { %c{$a}:exists }) {}
camelia ( no output )
09:25 domidumont joined
masak m: my %c; sub foo($a where (%c{$a}:exists) ) {} 09:28
camelia ( no output )
09:29 domidumont left 09:30 domidumont joined 09:42 muethos left 09:45 aborazmeh left
masak wonders if "Perl 6 regex syntax" shouldn't be its own item in the list in c2.com/cgi/wiki?AlternativesToRegularExpressions 09:45
09:49 spider-mario joined 09:50 muethos joined 09:55 setty1_ left
RabidGravy Unless anyone can explain it, I'm calling this a bug: 10:01
m: my enum Bar <A B C>; say B.value; say B.can("value")
camelia rakudo-moar 06e4e9: OUTPUT«1␤Too many positionals passed; expected 2 arguments but got 3␤ in block <unit> at /tmp/9JfnjneQzw:1␤␤»
10:02 domidumont left 10:03 brrt joined
lizmat looks like bug, please report :-) 10:04
dalek ast: 0d91ae9 | usev6++ | integration/error-reporting.t:
Add test for RT #123684
10:05
10:09 domidumont joined
xinming What is the best way to loop over an array with idx => $value pair? 10:10
masak m: my @array = foo => 1, bar => 2; for @array -> Pair (:$key, :$value) { say "$key ~~> $value" } 10:11
camelia rakudo-moar 06e4e9: OUTPUT«foo ~~> 1␤bar ~~> 2␤»
masak xinming: like that?
the `Pair` is optional
m: my @array = foo => 1, bar => 2; for @array -> (:$key, :$value) { say "$key ~~> $value" } 10:12
camelia rakudo-moar 06e4e9: OUTPUT«foo ~~> 1␤bar ~~> 2␤»
masak mostly there to show what's going on (unpacking).
xinming masak: I mean something like my @array = 'a' .. 'z'; for @array -> ($idx, $val) { ... }
I know we can use something like loop 10:13
loop (my $cnt = 0; $cnt < @array.elemns; $cnt++) { my $val = @array[$cnt]; ... }
10:14 AlexDaniel left, AlexDaniel joined
masak m: my @array = "a".."d"; for @array.pairs -> (:$key, :$value) { say "$key ~~> $value" } 10:14
camelia rakudo-moar 06e4e9: OUTPUT«0 ~~> a␤1 ~~> b␤2 ~~> c␤3 ~~> d␤»
masak that's how it'd do it, I think.
m: my @array = "a".."d"; for @array.kv -> $key, $value { say "$key ~~> $value" }
camelia rakudo-moar 06e4e9: OUTPUT«0 ~~> a␤1 ~~> b␤2 ~~> c␤3 ~~> d␤»
masak also works.
and is maybe even a bit more idiomatic, come to think of it. 10:15
whoever decided that .kv should work on arrays: karma to you.
probably TimToady++ :)
xinming bbl. 10:16
I was thinking, What does (:key mean
does (:$key, :$value)
pointy sub
signature
I think I understand now
dalek k-simple: dc8f299 | smls++ | lib/GTK/Simple.pm6:
Set the main window title properly, instead of abusing argv[0]

gtk_init()'s argv parameter is meant to be hooked up to the program's command-line argument list, with the first arg being the program name itself. GTK uses this first arg as the default title for the main window, but strips all but the last path component so that running a GTK app as
  "/usr/bin/myapp --foo" uses "myapp" as the default title. This mechanism
is thus unsuitable for implementing the :title adverb which is supposed to be able to set arbitrary titles:
   GTK::Simple::App(title => "Enable / Disable")
This patch passes the program name as argv[0] like GTK expects, and then explicitly sets the main window title using gtk_window_set_title() if the
  :title adverb is specified.
This fixes #2
10:17
xinming pair return a pair, with key => $key,
dalek ast: 4d4c6a6 | usev6++ | integration/ (2 files):
Move test for RT #123684 to integration/weird-errors.t
10:18
RabidGravy lizmat, in as #125445 - I'll work around for the time being
10:20 TEttinger joined 10:21 tinyblak joined
TEttinger is there an explanation somewhere of what ops are available? the rubyish example uses: my $hash := QAST::Op.new( :op<hash> ); 10:21
and then pushes individual expressions onto that, but I have no idea what kind of expression it needs to make a usable hash 10:22
key-value pairs?
any pairs?
unpacked items, there just need to be an even number of them?
brrt TEttinger: ehm, not sure, but we do have an oplist for MoarVM
and we auto-generate a node-types list for MAST from that 10:23
as far as nqp hashes goes
10:23 muethos left
brrt i believe you can do: $m := nqp::hash(); nqp::setkey($foo, $bar); 10:24
but tbh i don''t use that often so wouldn't know
TEttinger hm
I do wonder what :op<hash> even does
brrt i'm fairly sure it creates a hash 10:25
TEttinger oh, now you're just making things up :P
brrt :-P 10:26
10:26 tinyblak left
brrt no, really 10:26
jnthn :op<hash> (and thus nqp::hash) wants key, value, key, value... 10:27
masak m: my $foo = method { say "OH HAI {self}!" }; 42.$foo
camelia rakudo-moar 06e4e9: OUTPUT«OH HAI 42!␤»
TEttinger thanks brrt++, jnthn++ 10:30
brrt yw :-) 10:31
10:40 RabidGravy left 10:41 salva left 10:44 xfix joined
dalek kudo/nom: 89e97f1 | lizmat++ | src/ (3 files):
Deprecate $*(PROGRAM|EXECUTABLE)_NAME
10:52
10:53 rindolf left
dalek ast: faddde7 | lizmat++ | S02-magicals/progname.t:
Handle $*PROGRAM_NAME deprecation
10:53
10:54 FROGGS[mobile] left
dalek kudo/nom: 6b1ffd6 | lizmat++ | docs/ChangeLog:
Mention $*(PROGRAM|EXECUTABLE)_NAME deprecation
10:55
lizmat m: my $foo = -> $a { say "OH HAI $a!" }; 42.$foo 10:57
camelia rakudo-moar 06e4e9: OUTPUT«OH HAI 42!␤»
dalek ast: 5a73e11 | usev6++ | integration/advent2012-day04.t:
Remove useless 'BEGIN', masak++
10:58
11:00 brrt left 11:03 hahainte1net is now known as hahainternet
dalek ast: f449c23 | lizmat++ | S02-types/deprecations.t:
Test for $*(PROGRAM|EXECUTABLE)_NAME deprecation
11:13
ecs: fe8d383 | lizmat++ | S28-special-names.pod:
Deprecate $*PROGRAM_NAME -> $*PROGRAM-NAME
11:16
11:23 lue joined, ShimmerFairy left 11:27 lue is now known as ShimmerFairy
TEttinger so the NQP postcircumfix operators such as [ ] , and { } , they're implemented with something close to... make QAST::Var.new( :scope('positional'), $<EXPR>.ast ); 11:33
why don't they have any reference or something to the array or hash that's being indexed? 11:34
moritz :scope('positional') ? I don't think I've seen that 11:36
in NQP, [] turns into nqp::atpos
TEttinger it's only used in the postcircumfix [ ] as far as I can tell
moritz in Perl 6, to a call to postcircumfix:<[ ]>()
vendethiel- moritz: which in turn uses .AT-POS, right? 11:37
11:37 colomon joined
TEttinger github.com/perl6/nqp/blob/master/s....nqp#L1572 11:37
jnthn :scope('positional') is mostly a little convenience, so we can use QAST::VarWithFallback
As to "where's the array", it's unshifted higher up 11:38
That's how method calls are compiled too; compile the call with args, and something higher up i the tree unshifts the invocant.
Mostly falls out of the Perl 6-y view (reflected in its grammar) that [...] is just an interesting kind of postfix. 11:39
TEttinger but what's higher up than postcircumfix<[ ]> ?
I don't really get a lot of this yet
jnthn I suspect that's called by postfixish, which is probably called by termish
TEttinger it's starting to fall into place though 11:40
moritz vendethiel-: right
TEttinger really, I just want to implement named functions nth and get, but not operators for accessing those things, because it would be weird with lisp syntax 11:41
jnthn ah no, I may be wrong...I think it may be EXPR (the operator precedence thing) that does the unshift in question
TEttinger oh, that actually would make sense
11:42 MueThoS joined 11:43 rindolf joined, itz__ joined 11:44 cognominal joined, MueThoS left 11:45 itz_ left
masak as much as I like TFD, I also feel mentally offloaded if I make a TODO-list to pick the next test from all the time. 12:10
I wish I understood better why that is :)
12:13 Zhtwn joined
Zhtwn p6: my @foo = my $bar = 42, "str"; say $bar.perl 12:15
camelia rakudo-moar 6b1ffd: OUTPUT«42␤»
Zhtwn p6: my ( @baz, $quux ); @baz = $quux = 42, "str"; say $quux.perl
camelia rakudo-moar 6b1ffd: OUTPUT«$(42, "str")␤»
Zhtwn trying examples from Variables doc -- why does the "my" change the value in the assignment? 12:16
masak I don't think it should. 12:17
Zhtwn yeah, it surprised me a bit
moritz m: my ( @baz, $quux ); @baz = ($quux = 42), "str"; say $quux.perl 12:20
camelia rakudo-moar 6b1ffd: OUTPUT«42␤»
moritz just a question of precedence 12:21
jnthn Indeed; we don't parse the "=" in a "my $x = 42" as an infix, but rather as an initializer
masak right, but shouldn't the `=` in `$quux = 42` have item assignment precedence? 12:22
which is tighter than comma
doesn't `=` essentially sit on two different prec levels?
even without `my` or equivalent? 12:23
Zhtwn that's the point being made in the Variables doc with this example: "Note that item assignment has tighter precedence than list assignment and also tighter than the comma."
masak right. 12:24
12:26 domidumont left
jnthn Yes, = get be item assignment or list assignment prec level, determined by some rules 12:26
vendethiel- masak: "=" for @ having a different precedence level using my has always been "surprising"
it's certainly DWIMM
it's certainly DWIMmy*
jnthn If I had to guess what's going on, it's about the region of code (the dynamic scope of the parser, more concretely) that the decision is considering 12:29
And with the my/initializer form it's more restricted
(as in, analyzed at the level of the "my ... ="
Zhtwn ah. tricky example to use in the Vars doc, then, I'd say. 12:34
should I expand the doc to include the precedence trickiness? or should this example just be removed? 12:35
or is this behavior that may change? I'd add a note about that, then 12:38
12:44 Ven joined
vendethiel- m: multi foo(Int) { say "hi"; }; EVAL "multi foo(Str) { say 'bai'; };"; my $a = "hey"; foo($a); 12:46
camelia rakudo-moar 6b1ffd: OUTPUT«bai␤5===SORRY!5=== Error while compiling EVAL_0␤Missing block␤at EVAL_0:1␤------> 3multi foo(Str)7⏏5 True;␤ expecting any of:␤ new name to be defined␤»
12:46 larion joined
vendethiel- m: multi foo(Int) { say "hi"; }; EVAL "multi foo(Str) \{ say 'bai'; };"; my $a = "hey"; foo($a); 12:47
camelia rakudo-moar 6b1ffd: OUTPUT«Cannot call foo(Str); none of these signatures match:␤ (Int)␤ in block <unit> at /tmp/a_tSwiYJqD:1␤␤»
masak vendethiel-: nice try :)
vendethiel- m: multi foo(Int) { say "hi"; }; EVAL "multi foo(Str) \{ say 'bai'; };"; my $a = True ?? "hey" !! 5; foo($a);
camelia rakudo-moar 6b1ffd: OUTPUT«Cannot call foo(Str); none of these signatures match:␤ (Int)␤ in block <unit> at /tmp/iirEc5XhAZ:1␤␤»
masak vendethiel-: but multi dispatch *is* rooted in static things.
12:47 Ven left
vendethiel- *g* 12:47
masak vendethiel-: and EVAL has its own lexical scope, out of which you cannot lift a new multi declaration. 12:48
12:48 Ven joined
masak there's some nice thinking gone into that. 12:48
or, put differently
vendethiel- m: our multi foo(Int) { say "hi"; }; EVAL "our multi foo(Str) \{ say 'bai'; };"; say "alive"; my $a = True ?? "hey" !! 5; foo($a);
camelia rakudo-moar 6b1ffd: OUTPUT«5===SORRY!5=== Error while compiling /tmp/jh9fXLyQcf␤Cannot use 'our' with individual multi candidates. Please declare an our-scoped proto instead␤at /tmp/jh9fXLyQcf:1␤------> 3our multi foo(Int) { say "hi"; }7⏏5; EVAL "our multi foo(Str) \{…»
masak LONG LIVE LEXICAL SCOPING
Ven hehe
12:52 smls joined
smls Zhtwn, masak, jnthn: I reported #125416 a few days ago about that item assignment bug (or WAT) 12:53
12:53 BenGoldberg_ joined
jnthn Not convinced it's a bug, or at least I'd like to see one of (a) a case where the design docs suggest we're doing it wrong, or (b) evidence STD is getting a different answer in the parse than Rakudo 12:55
smls jnthn: What about the test cases in the bug report? 12:56
Don't you think it's weird to parse 1, my $x = 2, 3 as item assignment but Int(1), my $x = 2, 3 as list assignment?
Also, shouldn't a my $x LHS always parse the = with tighter precedence than comma? 12:57
12:58 bin_005 left
jnthn Something looks odd in that example, at lesat. 12:58
Though it's probably also explainable
ah..hmm
There is a discrepancy with STD 12:59
That may explain it
token declarator re-declares it 13:00
jnthn adds that to see if it changes things 13:01
13:01 tinita_ is now known as tinita
jnthn aha, yes 13:02
That un-WATs the ticket case
13:02 tinyblak joined, flussenc1 joined, pmichaud joined
jnthn I thought we already had that...odd 13:02
13:02 Psyche^_ joined, integral_ joined, integral_ left, integral_ joined 13:03 smls left
jnthn Lemme see what this does to spectest... 13:03
13:03 darutoko- joined, Gothmog_1 joined 13:04 rudi_s joined 13:05 Juerd_ joined, hoelzro_ joined, Obbi_ joined, uncleyea1 joined
jnthn m: use Test; sub x(*@x) { +@x }; is x(1.Int, my $x = 2, 3), 3; 13:06
camelia rakudo-moar 6b1ffd: OUTPUT«not ok 1 - ␤␤# Failed test at /tmp/KZowN4b7Yf line 1␤# expected: '3'␤# got: '2'␤»
13:07 fernando____ joined, fernando____ left, fernando____ joined, smash joined, skarn_ joined 13:08 uncleyear left, darutoko left, Psyche^ left, flussence left, skarn left, ugexe left, smash_ left, Gothmog_ left, rudi_s_ left, pmichaud_ left, integral left, hoelzro left, mephinet left, yogan left, fernando___ left, Juerd left, Obbi left, Gothmog_1 is now known as Gothmog_, Juerd_ is now known as Juerd 13:09 kaare_ left 13:10 smls joined
bartolin m: sub foo ($w) { }; foo :w(3) # trying to set positional parameter via named argument 13:11
camelia rakudo-moar 6b1ffd: OUTPUT«Too few positionals passed; expected 1 argument but got 0␤ in sub foo at /tmp/olcVBPAaVu:1␤ in block <unit> at /tmp/olcVBPAaVu:1␤␤»
bartolin ^^ I was unable to find an open ticket for this. it seems like it has worked in the past ... 13:12
13:12 mephinet joined
Ven bartolin: I think that was deprecated/removed quite some time ago... 13:13
13:13 yogan joined, uncleyea1 is now known as uncleyear
dalek kudo/nom: 8276cee | jnthn++ | src/Perl6/Grammar.nqp:
Fix assignment precedence analysis leak.

Per STD, we should have a fresh $*LEFTSIGIL per declarator. Fixes RT #125416.
13:13
13:13 uncleyear left, uncleyear joined
bartolin Ven: Oh! It looks there are some fudged tests which rely on it. 13:13
dalek ast: a1edc2d | jnthn++ | S03-operators/assign.t:
Test to cover RT #125416.
13:14
jnthn bartolin, Ven: Yeah, that feature went away.
smls jnthn: Another case: @foo = $bar = 5, 10; parses both = as list assignments, but my @foo = $bar = 5, 10; parses the 2nd one as item assignment 13:15
13:16 ugexex joined, fernando____ is now known as fernando___
bartolin Ven, jnthn: thanks a lot. it looks like it's still mentioned in S06 ... 13:16
smls S03 suggests that the determinaing factor for = precedence is "whether the left side is a list or a scalar destination"
bartolin anyway, I'll adjust those tests, then
jnthn smls: I don't *think* that difference is out of line with how the standard grammar does it... 13:17
smls so if it identified $bar as the destination, shouldn't it automatically use item assignment?
13:18 ilbelkyr_ joined, amurf_ joined, ilbelkyr left, ilbelkyr_ is now known as ilbelkyr
smls OTOH if it considered the whole of (@foo = $bar) as the destination, as in (@foo = $bar) = 5, 10; then it should do list assignment, but in that case $bar should not be filled at all 13:19
13:19 ribasushi left
jnthn smls: We only get a fresh $*LEFTSIGIL per call to EXPR or declarator 13:19
13:20 amurf left, petercommand left
smls Well, I'm arguing more from spec and DWIM here 13:20
13:20 jasonmay left, cosimo_ left, Blub\0 left, captain-adequate left, xinming left, ponbiki left 13:21 moritz left, Possum left, agentzh left
jnthn s/spec/design docs/ 13:21
13:21 pecastro left, lestrrat left, bartolin left
smls right 13:21
though STD is not infallible either, is it? :P
13:22 petercommand joined
jnthn Certainly not, as I've discovered recently 13:22
smls It just seems strange (and not supported by the design docs) to identify a $foo as the destination, but then parse the RHS like list assignment.
13:22 ponbiki joined, captain-adequate joined, cosimo joined, bartolin joined, jasonmay joined
jnthn The mechanism isn't really about identifying destination, is the thing. 13:22
13:22 ponbiki is now known as Guest84975, Possum joined, xinming joined, pecastro joined
jnthn It's about "does $*LEFTSIGIL end up containing '$'" 13:23
The one I just fixed was because we failed to have a fresh one of those per declarator.
We do have one per EXPR.
13:23 Blub\0 joined
jnthn iiuc, @foo = $bar = 5, 10; sees an @ first, sets that into $*LEFTSIGIL for the current EXPR, and then the $ from bar never updates it 13:25
13:26 aborazmeh joined, aborazmeh left, aborazmeh joined, ribasushi joined, smls left
jnthn But in "@foo = my $bar = 5, 10;" we get $*LEFTSIGIL set for unconditionally by the "my" declarator. The bug I just fixed was that token declarator was missing a fresh declaration of $*LEFTSIGIL 13:27
13:27 smls joined, smls left
jnthn So anyway, that's why we get things the way we do, as far as I can tell 13:27
13:28 smls joined, moritz joined, agentzh joined, agentzh left, agentzh joined 13:29 lestrrat joined
smls TimToady will know more :) 13:29
jnthn Aye
Anyway, now I understand why what's happening is happening, and after going through STD I think it must get the same answers.
13:30 aborazmeh left
jnthn I don't have any idea right now (a) if it's desirable to handle this differently, 'cus it'll almost certainly mean complicating the rules, and (b) how I'd make such a change to try it out 13:31
Right now the rule is "first sigil we encounter in an expression or in a declarator decides it"
Which is easy enough to explain and remember. 13:32
And will DWIM in enough cases.
Zhtwn ...for programmers that think like parsers... ;-) 13:33
smls well, it's easy enough to remember when you think about expressions from a STD/Rakudo grammar perspective
jnthn Zhtwn: Those who don't will probably not write such complex expressions :P
13:34 xfix left
jnthn Heck, I do know about parsers and I'd tend not subject folks reading my code to such things. :P 13:34
Zhtwn jnthn: true. That's a good argument for removing this example from the Variables doc, eh? 13:35
or maybe putting a "it's neat, but be careful" warning?
jnthn Zhtwn: I think it's worth the docs containing an example of where you might get caught out 13:36
Zhtwn ok, I'll get on that
jnthn I think the "decided by first sigil seen in an expression or declarator" isn't a bad summary.
smls jnthn: Well, the testcase from my bugreport was golfed down from a GTK::Simple program where I had something like set_contents( ..Label.new(), my $box = ..Box.new( ... ), ...)
jnthn If illustrated with examples
smls: Yeah, that one should be dealt with now
smls ok 13:37
jnthn That was due to us not declaring a fresh $*LEFTSIGIL per declarator.
So the postfix in the previous thingy before the , wrongly influenced the decision. 13:38
13:39 Zhtwn left
smls but without the "my" it would still influence it? 13:39
jnthn smls: Indeed
Or at least, so far as I can follow the intent of STD 13:40
I think at this point, though, will have to defer to TimToady++.
It's possible I'm missing something, but it seems doing anything different here would be a non-trivial change.... 13:41
dalek ast: a9f6adf | usev6++ | S06-signature/named-parameters.t:
Adjust tests which tried to set

That feature is no more.
13:42 nys joined
moritz martinfowler.com/articles/enterpriseREST.html "Some people, when confronted with a problem, think "I know, I'll use versioning." Now they have 2.1.0 problems." :-) 13:47
13:50 smls left 13:51 petercommand left, petercommand joined 13:52 RabidGravy joined, zakharyas joined 14:01 smls joined
smls japhb: ping 14:02
14:02 tinyblak left
RabidGravy boom! 14:03
14:07 muethos joined
dalek ecs: f01cb30 | usev6++ | S06-routines.pod:
[S06] remove fossil

this complements 25eb879f36: we no longer map named arguments to positional parameters.
14:08
bartolin ^^ could someone please look at that commit and check if it's sane? 14:09
xinming How do we compile the perl6 code to moarvm byte code please? 14:10
Just curious on how the they are built.
moritz in stages 14:11
parse it, AST, MAST, bytecode 14:12
xinming I'm reading the compiler-overview.pod 14:14
I just try to compile a simple perl6 script myself, to see what how they are built. 14:15
14:15 kaare_ joined 14:17 isBEKaml joined 14:18 Humbedooh joined, silug_ left 14:21 cognominal left
moritz --target=ast might be instructive 14:21
./perl6-m --target=ast -e 'my $x = 42; say $x'
then --target=mast 14:22
geekosaur I think the question is not so much stages as just how one generates the bytecode normally?
xinming geekosaur: Both. 14:24
:-)
I also want to see the parsing result for each stage.
moritz nqp/src/vm/moar/QAST/QASTCompilerMAST.nqp for the MAST->bytecode step, I believe 14:25
lots of grunt work
ah wait, that's QAST -> MAST
ugexex Perl6::Grammar.parse($source-code, :actions(Perl6::ACtions.new()).ast.say ? 14:26
moritz ugexex: no, perl6-m --target=ast $programfile
14:26 JimmyZ_ joined
moritz you need a bit more work 14:27
set a Perl6::World instance in $*W, for example
14:32 silug_ joined
ugexex ah 14:33
m: m: use nqp; use Perl6::Grammar:from<NQP>; use Perl6::Actions:from<NQP>; my $*LINEPOSCACHE; my $x = Perl6::Grammar.parse("say 1;", :actions(Perl6::Actions.new())); say $x.ast.^name;
camelia rakudo-moar 8276ce: OUTPUT«QAST::CompUnit␤»
14:33 tinyblak joined
ugexex m: m: use nqp; use Perl6::Grammar:from<NQP>; use Perl6::Actions:from<NQP>; my $*LINEPOSCACHE; my $x = Perl6::Grammar.parse("say 1;", :actions(Perl6::Actions.new())); say $x.ast.dump; 14:34
camelia rakudo-moar 8276ce: OUTPUT«- QAST::CompUnit␤ - QAST::Block say 1;␤ - QAST::Var(local __args__ :decl(param))␤ - QAST::Stmts ␤ - QAST::Op(call)␤ - QAST::Block␤ - QAST::Stmts ␤ - QAST::Var(lexical $! :decl(contvar))␤ - QAST::Var(l…»
14:35 Ven left
xinming Is there an easy way to dump to moarvm bytecode? 14:37
14:38 tinyblak left
jnthn If you get a MoarVM bytecode file with "--target=mbc --output=foo.moarvm", then you can "moar --dump foo.moarvm" 14:39
xinming I saw that using panda will generate the .moarvm files for pm files. 14:40
ugexex panda is literally doing what moritz posted, except --target=mbc
just add a --output="somefile.moarvm" 14:42
xinming Cannot dump this object; no dump method
I got that error
with command perl6-m --target=mbc -e 'my $x = 42; say $x' --output=hahahaha.moarvm 14:43
ugexex perl6-m --target=mbc --output="what.moarvm" -e 'my $x = 42; say $x' 14:44
14:44 ugexex is now known as ugexe 14:46 JimmyZ_ left, JimmyZ_ joined
xinming Ok, got it. 14:46
thanks
moritz options after the -e are passed to the perl6 programm in -e, and aren't interpreted by the compiler 14:48
14:49 _mg_ joined
xinming Ok, Thanks, I didn't realize that. 14:49
mst moritz: what 14:51
that should require a -- first :(
xinming Unhandled exception: While looking for 'ModuleLoader.moarvm': no such file or directory When I try to call full-cleanup or run the dumped .moarvm file, I'll get that error. 14:53
mst: Glad to see you are here. Do you have a plan to create Catalyst6 for perl6? :-) 14:54
mst xinming: highly unlikely, my first perl6 project is probably going to be carton-for-panda 14:56
and that's mostly because I want access to the grammar engine 14:57
the rest of the language doesn't scratch any itches I currently have
mostly because with Moo(se) perl5's stolen the thing I liked the best :D 14:58
TEttinger mst: are you the shadowcat mst person who implemented wat for perl?
wat's an interesting thing 14:59
mst yes, I am
I like operative lisps
TEttinger I'm having a fun time learning perl 6 at the same time I implement a lisp in perl 6
xinming Moose is great, After I get used to Moose, It made me feel really natural to use the OO in perl6. 15:00
mst but I've ended up with an operative prolog derivative instead
TEttinger I don't really understand the stuff that makes f-exprs special though
I don't exactly know what fexprs really are yet
I attempted to read the kernel spec, did not help too much :) 15:01
mst the way the wat prologue builds things with vau might help
have you done any macro heavy lisp previously? 15:02
TEttinger oh god no
mst ...
TEttinger although the first macro I wrote was a macro writing macro in clojure
mst you shouldn't be scared of that, macros are half the fun
exprs are an even more general case
an unhygienic macro is merely a restricted fexpr 15:03
TEttinger yeah I mean, I've implemented macroexpansion in my lisp before it used perl6 as a toolchain (before, I did a lot more on my own and generated really weird looking lua)
mst I found Wat really useful for prototyping the DX solver (my prolog derivative) 15:04
but the production implementation is in highly-functional Moo code
I may re-introduce wat-style stuff later though 15:05
TEttinger so are fexprs a compile-time thing like macros? can they be either compile-time or run-time?
mst fexpr eliminate the distinction. 15:06
TEttinger would it be worth it for me to try to implement macros in my lisp by using fexprs?
hm 15:07
mst uh, there's some performance disadvantages of a naive fexpr based implementation
they're not actually difficult to fix though
TEttinger yeah, and I would need to expand any compile-time stuff when I hand off the runtime-only QAST to the backend as if it is a perl 6 QAST 15:08
mst fexprs are a runtime construct
TEttinger (I'm using the same toolchain as perl6, which means producing an AST of only runtime stuff)
ok
mst baaasically, in an fexprs based system, a macro is an fexpr that only uses the local environment at the end, to apply a predictable transform of the source sexprs into expanded sexprs 15:09
TEttinger so I'm guessing fexprs get around the old problem that shows up at least in clojure, where you can't pass the value of a macro at runtime, like passing `and` as an argument to `reduce` ?
mst the way you optimise fexprs is to cache that 15:10
macro expansion in a normal lisp is effectively 'expanding macro-like fexprs eagerly in a compilation pass'
15:10 zakharyas left
mst and, yes, fexprs pass as arguments fine, though in -most- cases you probably didn't want to do that 15:11
15:13 _mg_ left
nine Oh how I like this :) > perl6 -Ilib -e 'use Data::Dumper:from<Perl5>; class MyDumper is Data::Dumper { }; my $dumper = MyDumper.new([1]); say $dumper.Dump();' 15:13
$VAR1 = 1;
mst :D
TEttinger nice 15:14
mst hopes one day somebody will use that to do 'use DX::Endjinn:from<Perl5>;' :)
nine 68 lines of patch so one doesn't need Perl5Parent anymore for subclassing Perl 5 classes in Perl 6 :)
15:14 muethos left
mst possibly me, depending 15:14
15:14 _mg_ joined
TEttinger magical, nine. 15:14
mst nine: yay
nine: wonder if you could write a MooseX::Rakudo or something to do the converse 15:15
nine: I guess MooseX::InsideOut plus MooseX::NonMoose might Just Work, actually
nine The only problem I see is, that I actually do not have much content for a talk about this anymore. All you need to know is: "install Inline::Perl5, then use Foo:from<Perl5>;". Then there's not much difference anymore between using a Perl 5 or a Perl 6 module. 15:16
mst *snrk*
nine: do a talk on writing resultset classes in perl6 :) 15:17
TimToady jnthn: just have a moment, haven't really backlogged yet, but it occurs to me that the correct way to run the precedence limiter is to base it off of the left vs right associativity of the prec level in question, whether it includes the level itself or not
yoleaux 20 Jun 2015 10:16Z <jnthn> TimToady: While that helps the colon pair case, we run into problems with pairs, as in "my $a = 'foo' => 'bar'", because those are %item_assignment too. Also chained assignments to declarators seem to go wrong (e.g. my $a = $b = 2).
20 Jun 2015 10:58Z <jnthn> TimToady: I ended up doing github.com/rakudo/rakudo/commit/9ed8577888 which I suspect you'll want to review; as far as I can tell, STD is wrong for ages on these things and we never noticed.
TimToady notest that = and => are right associative, so should Just Work if we do that
*notes
nine mst: I probably will do an example on that, yes. Seems like the most common use case for having Perl 6 code inlined in a Perl 5 module.
mst is really looking forward to playing with reversible parsers 15:18
mst looks sadly at the pile of preceding yaks 15:19
JimmyZ_ use mojo:from<perl5>; then we have a productive web framework for perl6 now.
😊
mst huh
xinming: actually, I might port Web::Simple for a laugh
nine JimmyZ_: please give it a try :)
BenGoldberg_ So, should we now do 'use DBI:from<Perl5>' instead of DBIish? 15:20
15:20 BenGoldberg_ is now known as BenGoldberg
mst that doesn't seem like a question with an answer. 15:20
15:22 domidumont joined
nine BenGoldberg: if DBIish's limitations prevent you from using Perl 6 for something useful, please use DBI:from<Perl5>. Worst case for Perl 6 is that your application is a good testcase for an updated DBIish 15:23
15:25 kaare_ left, kaare_ joined
nine BenGoldberg: or better yet, do use DBIx::Class:from<Perl5>. There are not many reasons for using plain DBI ;) 15:28
smls TimToady: Did the GLR design that you and pmichaud were discussing, reach a conclusion? Or is it on hold again? 15:31
BenGoldberg Good point, although what I was actually thinking of was that there (presently) are more perl5 database driver backends than perl6 ones...
15:33 tinyblak joined
BenGoldberg Maybe the sensible thing would be to add a fallback, within DBIish, so that if someone tries to connect to a database type it's unaware of, it will try to load the appropriate perl5 DBD::<whatever> module, and give back an appropriately wrapped instance. 15:35
So if a user wants to use an oracle database, for example, they don't have to think about whether or not there is a 'real' perl6 binding for it (yet), DBIish will "just" work. 15:37
mst BenGoldberg: well volunteered :D
15:55 spider-mario left 15:57 tinyblak left
xinming m: class A { method t (Int @a, Int @b) { @a.perl.say; @b.perl.say; } } A.new.t((1,2), (2,3)); 16:09
camelia rakudo-moar 8276ce: OUTPUT«5===SORRY!5=== Error while compiling /tmp/xUoqKCBeYI␤Strange text after block (missing semicolon or comma?)␤at /tmp/xUoqKCBeYI:1␤------> 3 Int @b) { @a.perl.say; @b.perl.say; } }7⏏5 A.new.t((1,2), (2,3));␤ expecting any of:␤ …» 16:10
xinming m: class A { method t (Int @a, Int @b) { @a.perl.say; @b.perl.say; } }; A.new.t((1,2), (2,3));
camelia rakudo-moar 8276ce: OUTPUT«Type check failed in binding @a; expected 'Positional[Int]' but got 'Parcel'␤ in method t at /tmp/xc0Ylze_fj:1␤ in block <unit> at /tmp/xc0Ylze_fj:1␤␤»
xinming Good, How do we pass an "array" to specified array please?
I tried with ((1,2), (2,3)) 16:11
also with ([1,2], [2,3])
neither worked.
moritz that's jsut Arrays, not Array[Int] 16:12
xinming Yes, But two arrays in arg won't, work, right?
moritz m: m: class A { method t (Int @a, Int @b) { @a.perl.say; b.perl.say; } }; A.new.t(Array[Int].new(1, 2), Array[Int].new(3)) 16:13
camelia rakudo-moar 8276ce: OUTPUT«5===SORRY!5=== Error while compiling /tmp/FWI81QxPQW␤Undeclared routine:␤ b used at line 1␤␤»
moritz m: m: class A { method t (Int @a, Int @b) { @a.perl.say; @b.perl.say; } }; A.new.t(Array[Int].new(1, 2), Array[Int].new(3))
camelia rakudo-moar 8276ce: OUTPUT«Array[Int].new(1, 2)␤Array[Int].new(3)␤»
16:13 tinyblak joined
xinming Thanks, though, a bit confused. 16:13
16:13 tinyblak left
xinming will Array[Int](@old_array) work? 16:14
Let me try
worked.
m: class A { method t (Int @a, Int @b) { @a.perl.say; @b.perl.say; } }; A.new.t(Array[Int](1,2), Array[Int](2,3)); 16:15
camelia rakudo-moar 8276ce: OUTPUT«Array[Int].new(1, 2)␤Array[Int].new(2, 3)␤»
xinming Thanks
16:16 tinyblak joined 16:17 uncleyea1 joined 16:19 uncleyear left
moritz m: class A { method t (Int @a, Int @b) { @a.perl.say; @b.perl.say; } }; A.new.t( (my Int @ = 1, 2, 3), (my Int @ = 4, 5, 6)); 16:20
camelia rakudo-moar 8276ce: OUTPUT«Array[Int].new(1, 2, 3)␤Array[Int].new(4, 5, 6)␤»
16:24 molaf joined 16:26 Bucciarati_ is now known as Bucciarati
smls Is there someone besides japhb who understands perl6-bench? 16:28
I want to test a new benchmark I added in a local git clone
preferably, using the r-m and p5 already installed in my system
But whatever I tell ./bench, either tries to download and build dozens of compiler/version combinations, or does seemingly nothing at all. 16:29
16:31 isBEKaml left 16:33 Ven joined 16:34 cognominal joined 16:47 zakharyas joined
xinming m: class X { has $.val; }; class T { has X @.array; method init () { for @!array.kv -> $k, $v { @!array[$k].val($k); }; @!array.perl.say; } }; my @x = (1..5).map: { X.new }; T.new(array => @x).init; 16:47
camelia rakudo-moar 8276ce: OUTPUT«Too many positionals passed; expected 1 argument but got 2␤ in method init at /tmp/PDZvRQUUKF:1␤ in block <unit> at /tmp/PDZvRQUUKF:1␤␤»
xinming Is this a bug?
16:48 molaf left
xinming the @!array[$k].val($k) thing. 16:48
16:48 molaf joined
xinming I tried to make $.val is rw. But still the error. 16:48
moritz don't name classes X, because it hides the X:: namespace in which most exceptions live 16:49
maybe you get a wrongly reported error that way
xinming m: class YY { has $.val; }; class T { has YY @.array; method init () { for @!array.kv -> $k, $v { @!array[$k].val($k); }; @!array.perl.say; } }; my @x = (1..5).map: { YY.new }; T.new(array => @x).init; 16:50
camelia rakudo-moar 8276ce: OUTPUT«Too many positionals passed; expected 1 argument but got 2␤ in method init at /tmp/SgebKf8LsW:1␤ in block <unit> at /tmp/SgebKf8LsW:1␤␤»
xinming moritz: Thanks, Will remember that.
Here, the problem is, it seems the public accessor doesn't allow support write.
moritz @!array[$k].val = $k 16:51
xinming Even if I added is rw after has $.val
Ok, so, It only generates reader, not writer.
Thanks
moritz no, it generates a writer
but you use it as an lvalue, not by passing in the new value 16:52
m: class A { has $.x is rw }; my $a = A.new; $a.x = 42; say $a.x
camelia rakudo-moar 8276ce: OUTPUT«42␤»
xinming moritz: The writer is differnt from the lvalue, writer can be over writtered by subclass. 16:53
moritz xinming: if you say so; but calling an rw method only a reader is also misleading
xinming If we make it a lvalue, do we have to make a writer method to modifiy the value before storing it? or, we can still update the value before it is updated. 16:54
16:55 uncleyea1 is now known as uncleyear, uncleyear left, uncleyear joined
xinming The idea of reader writer thing are from moose. I'll learn to use the perl6 way 16:55
16:58 zakharyas left 17:01 yqt joined, GHAAIQ55 joined 17:02 xfix joined
smls "writer can be over writtered by subclass" -- so can an rw accessor, can't it? 17:03
ugexe sounds like you want a Proxy
smls yeah 17:04
17:17 Ven left
smls m: class A { has $.a = 4 }; class B is A { method a { Proxy.new(FETCH => -> $ { self.A::a / 2 }, STORE => -> $, \val { self.A::a = val } ) } }; my $b = B.new; dd $b.a; dd $b.a = 5; dd $b 17:19
camelia rakudo-moar 8276ce: OUTPUT«2.0␤Cannot modify an immutable Int␤ in block <unit> at /tmp/w5HqoR0bFx:1␤␤»
smls I can't make it work. :(
xinming smls: You need is rw. 17:20
smls d'oh
xinming $.a is rw
smls m: class A { has $.a is rw = 4 }; class B is A { method a { Proxy.new(FETCH => -> $ { self.A::a / 2 }, STORE => -> $, \val { self.A::a = val * 10 } ) } }; my $b = B.new; dd $b.a; dd $b.a = 5; dd $b
camelia rakudo-moar 8276ce: OUTPUT«2.0␤25.0␤$b = B.new(a => 50)␤»
smls it's a lot to write though. 17:21
bartolin m: say Int.^methods(:tree) # is this NYI or a fossil?
camelia rakudo-moar 8276ce: OUTPUT«Unexpected named parameter 'tree' passed␤ in any methods at src/gen/m-Metamodel.nqp:467␤ in block <unit> at /tmp/SCiXhCqJrV:1␤␤»
bartolin m: say Int.^methods(:private) # is this NYI or a fossil?
camelia rakudo-moar 8276ce: OUTPUT«Unexpected named parameter 'private' passed␤ in any methods at src/gen/m-Metamodel.nqp:467␤ in block <unit> at /tmp/xWtgQSRxT9:1␤␤»
17:22 khisanth_ joined 17:23 Khisanth left
dalek rl6-roast-data: c6a75bf | coke++ | / (9 files):
today (automated commit)
17:23
moritz bartolin: :tree only exists for parents, iirc 17:28
bartolin: and .^methods(:private) is instead .^private_method_table (but doesn't include superclasses) 17:29
xinming How do we get methods names for a type? 17:30
.^methods returns soemthing unreadable for human
ignore me, I'm using something like .^methods.perl.say
I should use .^methods.say
smls m: .say for Str.^methods>>.name
camelia rakudo-moar 8276ce: OUTPUT«BUILD␤Int␤Num␤chomp␤chop␤pred␤succ␤match␤ords␤samecase␤samespace␤trim-leading␤trim-trailing␤trim␤encode␤NFC␤NFD␤NFKC␤NFKD␤wordcase␤trans␤indent␤path␤codes␤chars␤uc␤lc␤tc␤tclc␤flip␤ord␤WHY␤WHIC…»
FROGGS m: say Any.^methods».name
camelia rakudo-moar 8276ce: OUTPUT«invoke exists_key EXISTS-KEY delete_key DELETE-KEY delete_pos DELETE-POS list flat eager hash Hash Parcel List elems end keys kv values pairs antipairs invert pairup squish rotor reverse sort reduce combinations permutations unique uniq pick roll classify …»
moritz .^methods>>.name
bartolin moritz: both (:tree and :private) are still mentioned in S12 as selector parameters for ^methods
moritz: could be removed there? 17:31
17:31 khisanth_ left, khisanth_ joined
xinming I think I'd vote for a method name to return the max index value in an array. 17:33
17:34 tinyblak left
xinming We have max already. :-) 17:34
17:34 tinyblak joined
smls you mean .end ? 17:34
xinming smls: Nope, the max index for with the value 17:35
(1,5,3).max will return 5 17:36
I'd hope a method to return the 1 means the second item
But it's easy to be implemented anyway
17:38 jack_rabbit left
smls m: my @a = 1, 5, 3; say @a.keys.max({ @a[$_] }) 17:39
camelia rakudo-moar 8276ce: OUTPUT«1␤»
smls Maybe .max should accept :key and :kv adverbs, like .[] 17:41
.first-index and .grep-index could also be deprecated in favor of .first(... , :k) and .grep(... , :k) 17:42
17:42 mj41 joined, Ben_Goldberg joined
smls alternative there could be a .max-index method, but the name is LTS as it sounds like it might do what .end does 17:43
ugexe one returns indices, one returns items
smls LTA
ugexe: Yeah, and an adverb could control that too 17:44
ugexe no argument there. just pointing out they dont do quite the same thing
17:44 skids joined 17:45 khisanth_ left, BenGoldberg left
smls like @foo[4] @foo[4]:k @foo[4]:kv 17:45
17:45 khisanth_ joined 17:48 telex left 17:50 telex joined
mj41 m: gist.github.com/mj41/922a64d233779ceaa17e 17:52
camelia rakudo-moar 8276ce: OUTPUT«No compiler available for language 'perl5'␤ in any at /home/camelia/rakudo-inst-1/share/perl6/runtime/CORE.setting.moarvm:1␤ in any at /home/camelia/rakudo-inst-1/share/perl6/runtime/CORE.setting.moarvm:1␤ in any load_module at src/gen/m-ModuleL…»
mj41 m: gist.github.com/mj41/922a64d233779ceaa17e 17:53
camelia rakudo-moar 8276ce: OUTPUT«0␤42␤No compiler available for language 'BestLang'␤ in block <unit> at /tmp/35gXR9KIum:17␤␤»
mj41 hi, any idea why 'multi sub EVAL' doesn't work here? 17:55
17:55 Zhtwn joined
japhb smls: pong 17:56
17:56 rindolf left
smls japhb: trying to figure out perl6-bench 17:57
how can i test a mini-benchmark on only the latest r-m an perl5?
I tried: ./bench setup; ./bench extract rakudo-moar/nom perl5/v5.22.0; ./bench build rakudo-moar/nom perl5/v5.22.0; ./bench time rakudo-moar/nom perl5/v5.22.0 17:58
mj41 perl5 works ( defined here github.com/rakudo/rakudo/blob/nom/...ol.pm#L168 ) but my BestLang doesn't
smls but the timings/ directory tree does not contain any files, just empty folders
ugexe mj41: when you turn it into a multi you need to look at where it dispatches. i imagine 'question', a string, matches a different EVAL better than the one you expect 17:59
mj41 ugexe: yes, but multi is the same as for 'perl5' ... and 'perl5' works ok 18:00
18:00 profan joined
ugexe its also using a proto 18:01
18:01 araujo left
japhb smls: Did the previous stages work? Meaning, do you see built components/, and are there perl and perl6 binaries in their respective build trees? 18:04
18:05 JimmyZ_ left, tinyblak left
smls japhb: ah, looks like the perl6 binary is not there (the perl one is, though) 18:05
japhb smls: Sounds like something broke in that build. :-( 18:06
jnthn mj41: It seems that the candidate for EVAL-ing Perl 6 code will swallow anything :( 18:07
japhb smls: Oh, also, there are a few people who have worked on perl6-bench over the years. timotimo++ probably the most.
jnthn mj41: Testing a patch for that now 18:10
timotimo o/ 18:16
18:17 beastd joined
japhb nine: Just wanted to let you know that your Inline::* work is very appreciated. Recently got Perl 6 calling Python calling Perl 6 in order to make a Python framework that insisted on being the "outer" entry point (and calling *exit* instead of just returning up the stack when the innermost code returned) happy. 18:19
smls japhb: This time, 'build' worked, and I now have components/rakudo-moar/nom/perl6 and components/perl5/v5.22.0/perl executables
mj41 jnthn++
smls however, ./bench time still doesn't seem to do anything
japhb nine: And I hope to add two more layers (C++ and another Python), so we'll see how deep I can stack the turtles. :-)
smls: Is there a components/rakudo-moar/nom/install/bin/perl6 ? 18:20
smls yes
masak japhb++ # living the Parrot multi-lang dream
japhb Hmmm. Do you have the Perl 5 requisites listed in the README?
masak: Couldn't do it without nine++, arnsholt++, FROGGS++, hoelzro++, jnthn++, etc. (all the nativecall'ing heroes) 18:21
xinming For now, .perl method will hang on recursive lists. Anyway to avoid that? 18:22
japhb xinming: Does .DUMP work?
xinming Also, Is there weak object idea in perl6?
Let me try
good, thanks, that worked.
18:23 yqt left
timotimo smls: just checking; you're giving "./bench time" a list of compiler versions you have, yes? 18:23
smls yes
japhb xinming: Yeah, .DUMP spends more effort trying to deal with unusual data structures ... we haven't really armored .perl yet.
smls: Did you answer my question about Perl 5 requisites? I don't see the answer, but I may have missed it. 18:24
timotimo it could be that bench is hit by a recent GLR-related change?
japhb timotimo: Oh. Crap.
Yeah, that would painfully make sense, actually.
timotimo i must test this hypothesis
japhb Please
smls japhb: Still checking. Looks I have a problem with P5's DateTime module
timotimo i still have some errands to do and commuting, though
BBIAB 18:25
japhb smls: Yeah, that would do it too.
Zhtwn I'm still trying to grok when item assignment is used vs list assignment. Not quite there yet. 18:26
jnthn said it's decided based on the first sigil seen in expression or declarator
smls o.O "[1] 25765 segmentation fault (core dumped) perl -e 'use DateTime'"
Zhtwn p6: my @foo = my $bar = 5, 10; say $bar; # list contest
camelia rakudo-moar 8276ce: OUTPUT«5␤»
japhb smls: Woah. You've got some issues on that box. 18:27
smls That's with a distro-packaged perl-datetime :/
japhb smls: Is it a distro-packaged perl?
Zhtwn p6: my ( @foo, $bar) ; @foo = $bar = 5, 10; say $bar; # got list context
camelia rakudo-moar 8276ce: OUTPUT«5 10␤»
smls yes
18:28 spider-mario joined
japhb smls: What does `type perl` say (assuming you use bash)? 18:28
smls well, except of course the new one built in components/
also, how come ./bench does not rpint any errors
"perl is /usr/bin/perl"
Zhtwn p6: my $bar; my @foo = $bar = 5, 10; say $bar; # expected list; got item? 18:29
camelia rakudo-moar 8276ce: OUTPUT«5␤»
japhb smls: components/ builds are *only* used as timeable compilers, not to run bench, timeall, or analyze
18:29 yqt joined
japhb smls: OK, I'm suspecting that something is really unhappy on your box. 18:29
18:30 vendethiel- left
japhb smls: timeall captures errors and segfaults and such from compilers it is timing into the timing file. But to be frank I never expected timeall *itself* to segfault. Because, WTF. 18:30
18:31 vendethiel joined
smls is doing a full package upgrade 18:31
18:33 khisanth_ left, khisanth_ joined
jnthn mj41: Ah, my first attempt at a patch wasn't good enough, apparently 18:33
[Coke] is there a way to make panda install from a local copy of a module? 18:34
18:34 khisanth_ is now known as Guest64394
timotimo [Coke]: of course; panda install . 18:36
japhb: so it's likely that we're running into a problem with perl5 rather than perl6 for perl6-bench?
japhb timotimo: Given that he segfaults trying to load DateTime in perl5, yes. 18:38
timotimo mhm
japhb Still, I'm not confident that bench is GLR-safe
18:39 Guest64394 left, Khisanth joined
japhb It's had a history of being sensitive to changes in eagerness, end-of-block loop behavior, and so on. 18:39
Because I tried to write it relatively idiomatically, and the idioms kept changing. 18:40
[Coke] timotimo: ok. how do I enforce that for subdeps? 18:45
er, just deps, really.
I realized it doesn't matter anyway, since I'm already dealing with submodules elsewhere. no worries. 18:46
masak really? "penguin" is now a Unicode character?
[Coke] is trying to get the daily runs to also run the Inline::Perl5 tests.
masak the Unicode consortium will go to history as "they had a good run, but they really didn't know when to stop"
timotimo [Coke]: i suppose you'll just have to enumerate them on the commandline?
[Coke] timotimo: yah, more trouble than it's worth, I guess. danke. 18:47
timotimo YW
i suppose something could be thought up
[Coke] be nice if I had a way to make a local, mini modules mirror. 18:48
Zhtwn p6: my $bar; my @foo = $bar = 5, 10; say $bar 18:52
camelia rakudo-moar 8276ce: OUTPUT«5␤»
18:52 molaf left
geekosaur do they think them up or do apple and microsoft hand them lists of things they want? 18:52
(re unicode)
masak well, *someone* handed them a penguin.
flussenc1 .u camel
yoleaux U+1F42A DROMEDARY CAMEL [So] (🐪)
U+1F42B BACTRIAN CAMEL [So] (🐫)
18:53 flussenc1 is now known as flussence
masak very important distinction, Unicode! 18:53
18:53 molaf joined
Zhtwn jnthn: if item/list assignment is decided by first sigil in expression or declarator, shouldn't the "my @foo" have made the "$bar =" be list assignment? what am I missing? 18:53
p6: my $bar; my @foo = $bar = 5, 10; say $bar
camelia rakudo-moar 8276ce: OUTPUT«5␤»
geekosaur penguins are popular/"iconic" at least in the US (cf. several recent animated movies) 18:54
Zhtwn p6: my ( @foo, $bar ); @foo = $bar = 5, 10; say $bar;
camelia rakudo-moar 8276ce: OUTPUT«5 10␤»
flussence
.oO( maybe they should've taken the approach they used for flags [country-code alphabet intended to display flags using font ligatures], and used it for animals too... )
18:55
bartolin .tell FROGGS would you agree that RT #125129 can be merged into RT #78676 (as a duplicate)? 18:56
yoleaux bartolin: I'll pass your message to FROGGS.
flussence
.oO( I'd probably have an easier time memorising the latin species names than numeric codepoints anyhow... )
FROGGS bartolin: yes 18:57
yoleaux 18:56Z <bartolin> FROGGS: would you agree that RT #125129 can be merged into RT #78676 (as a duplicate)?
bartolin great, will do that ...
jnthn Zhtwn: That "$bar = 5" is an expression 18:59
(Parsed as the initializer to the declaration)
19:00 mj41 left
Zhtwn ah. but if there's no declarator, then the relevant expression is "@foo = $bar =", yes? 19:00
19:01 mj41 joined
jnthn yes 19:01
Zhtwn Thanks - I'm seeing it now.
jnthn mj41: spectesting updated version of my patch, which will hopefully nail it
(also doing 5 other things at the same time afk :-))
19:05 tinyblak joined 19:08 Alina-malina left, Alina-malina joined 19:10 tinyblak left 19:15 zakharyas joined 19:23 Guest58780 joined 19:24 lolisa joined
Zhtwn Okay, I think I've got the item/list assignment details documented: github.com/perl6/doc/pull/95 -- comments? 19:26
masak Zhtwn++ 19:28
I had no idea the rule was that complicated. but it's explained well. 19:29
smls I don't think "first sigil seen" is very accurate
m: say (my $x) = 2, 4, 6; dd $x
camelia rakudo-moar 8276ce: OUTPUT«2 4 6␤$x = $(2, 4, 6)␤»
Zhtwn ugh. You're right. It's not the sigil, it's the context? The parens give a list context even without a sigil, yes? 19:31
smls I'm not sure of this stuff anymore, either 19:32
m: (my $x,) = 2, 4, 6; dd $x 19:33
camelia rakudo-moar 8276ce: OUTPUT«$x = 2␤»
19:33 domidumont left
Zhtwn m: my $x; ($x,) = 2, 4, 6; dd $x 19:35
camelia rakudo-moar 8276ce: OUTPUT«$x = 2␤»
Zhtwn m: my $x; ($x) = 2, 4, 6; dd $x 19:36
camelia rakudo-moar 8276ce: OUTPUT«$x = $(2, 4, 6)␤»
smls I guess those are both list assignments
masak doesn't S03 explain the rule somewhere? 19:37
smls but in the first, the RHS list is slurped into the LHS list "$x,"m so $x gets onlt the first item
jnthn Inside a (...) you have a new EXPR, which is opaque to the analysis.
Zhtwn I haven't been able to find a clear explanation of this in S03, fwiw 19:40
looks like the rule is "first context seen in the expression or declarator" -- gotta define "first context", then 19:41
jnthn Zhtwn: Yes, the mechanism is actually relatively simple when expressed as code in the grammar, it's just finding a way to translate that. :) 19:43
19:44 Khisanth left
nine japhb: thanks for telling me :) 19:44
japhb nine++ # Thank you very much for writing it. :-) 19:45
19:48 Khisanth joined 19:50 kurahaupo joined 19:52 darutoko- left 19:55 Ben_Goldberg left 19:56 beastd left 19:57 Ben_Goldberg joined 19:58 vendethiel left 19:59 bin_005 joined 20:04 vendethiel joined 20:07 Khisanth left
Zhtwn okay, updated the PR with better details on how the context is determined for item/list assignment 20:13
same PR: github.com/perl6/doc/pull/95 20:14
labster m: my $x = "num", 42; say $x.perl 20:18
camelia rakudo-moar 8276ce: OUTPUT«WARNINGS:␤Useless use of "," in expression "my $x = \"num\", 42" in sink context (line 1)␤"num"␤»
20:19 uncleyear left 20:20 uncleyear joined, xfix left
dalek rl6-bench: b4fd74e | smls++ | lib/Bench/ (2 files):
Add 'unit' keyword to make deprecation warning go away
20:23
rl6-bench: 2648ccb | smls++ | / (3 files):
Add 'rc-perfect-shuffle' benchmark

  ...based on the "Perfect Shuffle" task on RosettaCode.
With Perl 5 and Perl 6 implementation; NQP still missing.
rl6-bench: 710b94d | japhb++ | / (5 files):
Merge pull request #24 from smls/master

Add rc-perfect-shuffle benchmark and add 'unit' keywords to get rid of deprecation warnings.
20:24 Khisanth joined 20:27 sftp_ joined 20:29 Khisanth left 20:30 sftp left, sftp_ is now known as sftp
cognominal I just proposed github.com/rakudo/rakudo/pull/445 for a better warning on code stringification 20:31
flussence feature request: can we make Bufs a bit more string-like (and useful)? They seem neglected, maybe because nothing in the core really uses them. I threw some ideas up at github.com/flussence/p6-misc/blob/...f-stuff.p6 20:32
smls japhb: How can I generate the HTML/JS graph for a benchmark? 20:37
20:38 Khisanth joined 20:47 Khisanth left, BenGoldberg_ joined
japhb smls: ./bench --style=html_plot compare <builds> 20:49
smls thanks
20:49 Khisanth joined 20:50 Ben_Goldberg left
dalek c: c110826 | (Noel Maddy)++ | lib/Language/variables.pod:
Clarify item vs list assignment in Variables

The context used to determine whether item or list assignment used is a bit tricky. Added detailed explanation and examples.
21:03
c: e46780a | (Noel Maddy)++ | lib/Language/variables.pod:
more clarification on item/list assignment

It's the overall expression / declarator context that determines the type of assignment used, not simply the first sigil seen.
Update with more examples to show how context is determined.
c: 7fa81a3 | moritz++ | lib/Language/variables.pod:
Merge pull request #95 from Zhtwn/assignment-precedence

Clarify item vs list assignment in Variables
21:04 Khisanth left 21:05 Khisanth joined
timotimo maybe i'll continue looking at the binding lowerer now 21:13
21:14 BenGoldberg_ left 21:15 BenGoldberg_ joined 21:16 FROGGS_ joined 21:17 RabidGravy left
mj41 jnthn: vďaka a dobrú noc (díky a dobrou noc) 21:18
jnthn Oh, I forgot to push the patch! 21:20
dalek kudo/nom: c4ccf90 | jnthn++ | src/core/control.pm:
Make overriding EVAL to provide languages work.

This factoring means we now look in the compiler registry, then for a multi candidate. Before, in theory you could write a multi, but in practice we never dispatched to it.
21:20 FROGGS left
jnthn mj41: Prosím! A dobrou noc o/ 21:20
[ptc] does anyone know how often proto.json is updated on the modules.p6.org site?
21:21 Khisanth left 21:24 raiph joined 21:27 zakharyas left
mj41 jnthn: funguje to! děkuji. 21:27
timotimo jnthn: in the binder lowerer we're hllizing things that come in; should i put the type capturing logic after that or before it? my intuition says it's gotta be after, so that the type actually matches up even if things got hllized 21:28
21:28 mj41 left 21:34 _mg_ left, Khisanth joined 21:37 kaare_ left
jnthn timotimo: yes, after 21:38
timotimo doing a spectest run right now 21:39
21:42 Khisanth left
timotimo had to pull in between to get some more fixes 21:43
gist.github.com/timo/e578fe92a918cea41f07 this is my patch currently, and it seems to survive the spec tests very successfully 21:49
masak 'night, #perl6 21:52
jnthn 'night, masak 21:53
jnthn figures he should also rest... o/
dalek kudo/nom: a927a5a | timotimo++ | src/Perl6/Actions.nqp:
allow binder lowering if type captures exist

this happens quite often for roles, as they bind
  ::?CLASS and $?CLASS for their methods when they are
composed.
I saw 55 cases of binder lowering being prevented by the existence of type captures across CORE.setting.
21:53 Khisanth joined
timotimo gnite jnthn!
dalek kudo/nom: 62cdc29 | (Stéphane Payrard)++ | src/core/Code.pm:
Warning now gives the exact Code descendant class
21:55
kudo/nom: b95a226 | lizmat++ | src/core/Code.pm:
Merge pull request #445 from cognominal/patch-2

Warning now gives the exact Code descendant class
21:58 Khisanth left 22:05 DrForr left, DrForr joined 22:06 Zhtwn left
vendethiel cognominal++ timotimo++ jnthn++ 22:06
22:08 smls left
timotimo huh? 22:09
22:10 khisanth_ joined
cognominal thx lizmat++ 22:12
22:15 khisanth_ left 22:17 lsm-desktop left, khisanth_ joined 22:24 khisanth_ left, bin_005 left, khisanth_ joined 22:28 lsm-desktop joined 22:29 khisanth_ left, khisanth_ joined 22:34 kurahaupo left 22:40 khisanth_ left 22:42 khisanth_ joined 22:47 khisanth_ left 22:50 khisanth_ joined 22:51 raiph left 22:52 raiph joined 22:55 khisanth_ left 22:58 khisanth_ joined 23:03 khisanth_ left 23:05 khisanth_ joined 23:19 khisanth_ is now known as Khisanth 23:25 bakedb joined 23:49 laouji joined