TimToady | m: say WHAT (|42) | 00:02 | |
camelia | rakudo-moar be7ce0: OUTPUT«(Slip)» | ||
TimToady | arguably, that could just return 42 | ||
I wonder how many single-element slips we generate on the average day... | 00:03 | ||
dalek | ast: bc8fa4f | TimToady++ | S04-statements/for.t: test for RT #123072 "for loop properly sinks final statement method call" |
00:59 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=123072 | ||
gfldex | m: my %multi-dim; %multi-dim{1;2;3} = 42; dd %multi-dim{1;2;3} | 01:14 | |
camelia | rakudo-moar be7ce0: OUTPUT«(42,)» | ||
gfldex | m: my %multi-dim; %multi-dim{1;2;3} = 42; dd %multi-dim{1;2;3}.WHAT | 01:15 | |
camelia | rakudo-moar be7ce0: OUTPUT«Cannot look up attributes in a type object in block <unit> at <tmp> line 1» | ||
gfldex | m: my %multi-dim; %multi-dim{1;2;3} = 42; dd %multi-dim{1;2;3}.^nameT | ||
camelia | rakudo-moar be7ce0: OUTPUT«Method 'nameT' not found for invocant of class 'Perl6::Metamodel::ClassHOW' in block <unit> at <tmp> line 1» | ||
gfldex | m: my %multi-dim; %multi-dim{1;2;3} = 42; dd %multi-dim{1;2;3}.^name | ||
camelia | rakudo-moar be7ce0: OUTPUT«"List"» | ||
gfldex | i don't think that should be a list | ||
awwaiid | lizmat: in your recent REPL.pm changes, I am surprised to see the threading bit -- is there a way to catch the SIGINT without that, or what does it add? | 01:27 | |
lizmat: ok, now I've read the previous irc and your comments on 128900 and understand better. Still not quite all the way understand though | 01:41 | ||
dalek | ast: 63c1f00 | TimToady++ | S02-types/pair.t: test for RT #128860 "List.invert maps via a required Pair binding" |
01:54 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128860 | ||
dalek | kudo/nom: baeabb4 | TimToady++ | src/core/List.pm: Improve message on (1,2,3).invert to mention Pair Binding of the map routine internally now requires list elements to bind as Pair. Fixes RT #128860, insofar as it improves the error message. (The alternate approach of inserting a CATCH into the map closure could in theory produce an even better message, but it appeared to slow things down more than the Pair binding approach.) Also, we now propagate is-lazy correctly through .invert and .antipairs. Note that we cannot make the degenerate case of .invert the same as .antipairs, because .invert must expand list values into multiple antipairs. In any c5eb876 | (Wenzel P. P. Peppmeyer)++ | src/core/hash_slice.pm: implement :exists on multi-dim assoc subscript literals |
||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128860 | ||
ShimmerFairy | ooc, is there an easy way to ask for a particular Method object from a class, without resorting to the MOP? That is, I know I can do Foo.^methods.grep(*.name eq 'bar') or whatnot, but it'd be nice if it were easier to do, e.g. &Foo::bar for example. | 02:59 | |
I know Foo::bar won't work because you can put a 'sub bar' in a class, but something like that would be nice :) | 03:03 | ||
TimToady | if only we had mechanisms for adding syntactic sugar to the language... ;) | 03:05 | |
ShimmerFairy | And I also just remembered that Foo."bar"() is a thing too, and keeping a list of strings would be easier :P | 03:13 | |
gfldex | m: class C { multi method m1 {}; multi method m2 {} }; dd C::.keys | 03:14 | |
camelia | rakudo-moar baeabb: OUTPUT«().Seq» | ||
ShimmerFairy | TimToady: but yeah, I can't wait for slangs and especially macros to get more fleshed out and fully-featured :) | ||
ShimmerFairy still thinks slangs and macros should be intertwined like grammars+actions in most other cases, fwiw | 03:15 | ||
gfldex | i did expect .keys to return a list of stuff or Any | ||
ShimmerFairy | m: class C { method m1 {}; method m2 {} }; dd C::.keys # just checking if it's the multis by chance | 03:17 | |
camelia | rakudo-moar baeabb: OUTPUT«().Seq» | ||
TimToady | methods never go into the package namespace unless declared our | 03:19 | |
and if you don that, they aren't installed in the metaclass | 03:20 | ||
*do | |||
gfldex | so many things to doc, so little time… | ||
ShimmerFairy | Ah, interesting. I suppose the reason why .^methods() feels LTA is just because I don't think Method objects should need MOP fiddling, since you can access other kinds of Routines by just &foo. :P | 03:21 | |
TimToady | that's the nice thing about lexicals, you can treat them as static due to early binding even when they're anonymous; methods are late binding, and classes can also be anonymous, so there's no consistent way to find a name other than through the metaclass | 03:27 | |
meaning the lexical scopes themselves are anonymous, unless you count OUTER:: | 03:28 | ||
but you don't need an object to know which outer lexical scopes to search | 03:29 | ||
ShimmerFairy | makes sense. And like you said, there's always the possibility of syntactic sugar you can add yourself :) . .oO(Foo.^&bar ?) | 03:33 | |
[Tux] | This is Rakudo version 2016.07.1-174-gbaeabb4 built on MoarVM version 2016.07-18-g2f269d8 | 08:59 | |
csv-ip5xs 10.060 | |||
test 15.262 | |||
test-t 7.457 | |||
csv-parser 16.341 | |||
gfldex | @designers: FYI: github.com/perl6/doc/commit/0dc31dfd40 | 09:07 | |
util/ignored-methods.txt may very well contain mistakes (or may get some in the future) | 09:08 | ||
kudo/nom: b76ffbb | lizmat++ | src/core/hash_slice.pm: Merge pull request #835 from gfldex/multidim-assoc-exists implement :exists on multi-dim assoc subscript literals |
|||
ast: e0d318a | (Wenzel P. P. Peppmeyer)++ | S32-hash/exists-adverb.t: add test for :exists on multi-dim assoc subscript literals |
|||
ast: 922ee0d | lizmat++ | S32-hash/exists-adverb.t: Merge pull request #139 from gfldex/multidim-assoc-exists add test for :exists on multi-dim assoc subscript literals |
|||
jnthn | ShimmerFairy: Foo.^methods.grep(*.name eq 'bar') might, if you're just after the "closest" method, be replaced by Foo.^lookup('bar') | 10:06 | |
ShimmerFairy | jnthn: ah, that seems shorter :) . And yes, I'd more-or-less prefer similar MRO to what occurs normally :) | 10:07 | |
jnthn | That'll get you it | 10:08 | |
There's also Foo.^find_method('bar') | |||
lookup = look this method up, giving me the declared Method object from the class | |||
find_method = give me something that, if I inovke it, would do the same thing as calling the method" | 10:09 | ||
In a boring class with a normal method they will give the same answer. | 10:10 | ||
ShimmerFairy | jnthn: I'm guessing the find_method version has the original object "attached" to it in some way, then? Or is that not it? | ||
jnthn | But if you do it with a role, lookup will give you back a Method object (good for introspection), while find_method will give you back something that, when invoked, puns the role and then invokes | ||
ShimmerFairy | ah | 10:11 | |
jnthn | No, we don't do attachment of that find at the MOP level | ||
*of that kind | |||
Other MOP modules will leave lookup alone (unless they are especially antisocial :P) but overriding find_method is a common trick :) | |||
ShimmerFairy | So the difference comes in where the metaobject needs extra steps to give you an invokable thing (e.g. role punning) | 10:13 | |
lizmat | m: class A { method a(\SELF:) { SELF = Mu } }; my $a = A.new; dd $a; $a.a; dd $a # jnthn | 10:14 | |
camelia | rakudo-moar b76ffb: OUTPUT«A $a = A.newMu $a = Mu» | ||
lizmat | jnthn: is there a reason why the above doesn't work if the $a is a private attribute ? | 10:15 | |
reason I'm asking, is I'd like to be able to reset $!todo if e.g. reify-at-least finds out it has exhausted $!todo | 10:16 | ||
now, the callers seem to be responsible for this, which I think is a bad design :-) | |||
jnthn | ShimmerFairy: Yeah, pretty much | 10:27 | |
"the callers seem to be responsible" - where, ooc? | 10:29 | ||
Note that if said private attribute was bound there'll be nothing to bind in to | |||
I'm pretty sure assigning to the Scalar holding an object's invocant isn't good design either. :P | 10:30 | ||
uh, *nothing to assign in to | |||
lizmat | jnthn: e.g. github.com/rakudo/rakudo/blob/nom/...st.pm#L470 | 10:38 | |
I think it would be simpler if "reify-until-lazy" would reset its object when it was fully reified | 10:39 | ||
instead of the caller needing to do this (and in many cases not doing that, thus selecting the slower iterator when it isn't necessary) | |||
jnthn | Maybe, but I suspect we bind $!todo in so many places... | 10:44 | |
dalek | kudo/nom: e4d5384 | lizmat++ | CREDITS: Add gfldex++ to CREDITS |
10:45 | |
nine | jnthn: will find_method also return a FALLBACK? | 11:34 | |
dalek | kudo/nom: 6dcee99 | lizmat++ | src/core/ (9 files): .push-all *always* returns IterationEnd So mark as such in the Signature. Currently, there seems to be no difference in JITting between this way and just returning IterationEnd. But this should hopefully change sometime in the future. In any case, I think it improves readability. |
11:48 | |
kudo/nom: 32902f2 | lizmat++ | src/core/ (4 files): .sink-all *always* returns IterationEnd |
11:59 | ||
gfldex | is submethodness introspectable? | 12:03 | |
lizmat | ~~ SubMethod ?? | 12:04 | |
*Submethod actually | |||
m: class A { submethod a {} }; say A.^methods[0] ~~ Submethod #gfldex | 12:05 | ||
camelia | rakudo-moar e4d538: OUTPUT«True» | ||
gfldex | thx | ||
lizmat | m: class A { method a {} }; say A.^methods[0] ~~ Submethod #gfldex | ||
camelia | rakudo-moar e4d538: OUTPUT«False» | ||
gfldex | is there any difference between a method and a submethod, both from user side and the compiler, sans the name? | 12:08 | |
beside the none-inheritance of submethods | 12:09 | ||
lizmat | I think that's the only difference | 12:15 | |
looking at te code, both Method and Submethod are just Routines, with a different gist | |||
*the | |||
at least on the P6 level | |||
dalek | kudo/nom: e89721d | lizmat++ | / (2 files): native array's push-all only returns IterationEnd |
12:17 | |
masak | gfldex: the "sub" refers to "shouldn't assume there's a fully-built `self`" and the "method" refers to "called like a method" | ||
gfldex: near as I can figure out, submethods exist because BUILD needs to be one. | |||
gfldex: DESTROY used to be on that list too, but DESTROY is useless. | 12:18 | ||
lizmat | afk& | 12:23 | |
gfldex | should prefix:<||>(Positional) return SemiList (to be invented) for %h{||@a} and @a{||@b} ? | 12:29 | |
m: say LoL | |||
camelia | rakudo-moar 32902f: OUTPUT«===SORRY!=== Error while compiling <tmp>Undeclared name: LoL used at line 1» | ||
dalek | p/no-eval: 6866e12 | (Pawel Murias)++ | src/vm/js/ (4 files): [js] Start of transition towards using nqp::forceouterctx. Fails test 24. |
12:31 | |
p/no-eval: 8b84c39 | (Pawel Murias)++ | src/vm/js/ (5 files): [js] When evaling up a context less codeRef make it use a wrapped forced ctx. |
|||
gfldex | i found %cache{||some-capture.Array} very useful in github.com/gfldex/perl6-rakudo-sli...ched.p6#L9 | 12:33 | |
dalek | p/no-eval: 4377458 | (Pawel Murias)++ | src/vm/js/ (2 files): [js] Don't attach the setting setup code on CodeRefs. |
12:38 | |
masak | lizmat: got some bad news -- splice is broken in 007 again | 13:33 | |
lizmat: the short golf I used as an informal test works, but the use of splice in the 007 code base fails. | |||
lizmat: stand by for new failing golfed version. | 13:34 | ||
m: my @a; @a.splice(0, 0, "x"); say +@a | 13:36 | ||
camelia | rakudo-moar e89721: OUTPUT«0» | ||
masak | m: my @a; @a.splice(0, 0, "x"); @a.splice(1, 0, "y") | ||
camelia | rakudo-moar e89721: OUTPUT«Offset argument to splice out of range. Is: 1, should be in 0..0 in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at <tmp> line 1» | ||
masak | lizmat: ^ | ||
I'm happy to again be enough at the forefront of Perl 6 app development to be running headlong into these things :> | |||
thanks also go out to TravisCI, which always tests against latest Rakudo, forcing me to upgrade to bleeding-edge sometimes ;) | 13:37 | ||
masak submits rakudobug | |||
heck, let's re-open RT #128736 | 13:38 | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128736 | ||
masak | need to conserve our natural numbers a little | ||
oh, it wasn't closed, it was needstest | 13:40 | ||
...test number 10 is TODO-passed in t/spec/S19-command-line/repl.rakudo.moar -- can we unmark it TODO? | 13:44 | ||
happily, re-applying the previous workaround to 007 has it passing again on Rakudo HEAD | |||
travis-ci | Rakudo build errored. Elizabeth Mattijsen 'native array's push-all only returns IterationEnd' | 13:57 | |
travis-ci.org/rakudo/rakudo/builds/152036785 github.com/rakudo/rakudo/compare/3...9721d6d69c | |||
buggable | ✓ [travis build above] One job failed due to the timeout. No other failures. | ||
jnthn | nine: Yes, or at least, if there is a FALLBACK find_method will return something that tries to delegate there. | 15:17 | |
AlexDaniel | buggable: hehe :) | 16:00 | |
buggable++ | |||
dalek | p: 2df0a06 | TimToady++ | src/vm/moar/QAST/QASTRegexCompilerMAST.nqp: charrange without :m should avoid ordat/ordfirst Synthetics wrongly look like they're in a character range if we strip the combining information, so instead we'll just use the raw char code, and the synthetic will naturally fall out of the range by virtue of being negative. Fixes RT #128550. |
19:20 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128550 | ||
kudo/nom: fe90be0 | TimToady++ | tools/build/NQP_REVISION: bump NQP to get fix for RT #128550 |
19:23 | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128550 | ||
dalek | ast: 172f694 | TimToady++ | S15-nfg/regex.t: update charrange tests for RT #128550 Removed todo on base case; also added test for :i case, which had also been doing it wrong. |
||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128550 | ||
TimToady | m: say /^<[a..z]>$/.ACCEPTS("n\x[308]"); | 19:32 | |
camelia | rakudo-moar fe90be: OUTPUT«Nil» | ||
TimToady | m: say /:i ^<[a..z]>$/.ACCEPTS("n\x[308]"); | ||
camelia | rakudo-moar fe90be: OUTPUT«Nil» | ||
TimToady | m: say /:i:m ^<[a..z]>$/.ACCEPTS("n\x[308]"); | ||
camelia | rakudo-moar fe90be: OUTPUT«「n̈」» | ||
TimToady | m: say /:m ^<[a..z]>$/.ACCEPTS("n\x[308]"); | 19:33 | |
camelia | rakudo-moar fe90be: OUTPUT«「n̈」» | ||
TimToady | my initial scan for other occurrences of ordat didn't turn up any other obvious deficiencies | 19:34 | |
travis-ci | Rakudo build passed. TimToady 'bump NQP to get fix for RT #128550' | 20:15 | |
travis-ci.org/rakudo/rakudo/builds/152093416 github.com/rakudo/rakudo/compare/e...90be01c654 | |||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128550 | ||
lizmat | masak: will look at the .splice issue tomorrow | 22:12 | |
masak | \o/ | 22:14 | |
is there a way for the RT ticket to be marked up with "needs to tests"? :) | 22:15 | ||
jnthn | There's a testneeded tag | ||
lizmat | anyways, today was an eventful day for us | 22:16 | |
1. we broke the record for number of 50km+ rides in the month of August | |||
2. we broke the total km cycled for the month of August | |||
3. it was the bloodiest trip we've ever made | 22:17 | ||
on account of me hitting the concrete at 25km / hour | |||
jnthn | Ouch!! :( | ||
masak | :( | 22:18 | |
lizmat | yeah, pretty will be looking more oddly at me for the coming 3 weeks than they normally do :-) | ||
anyways, nothing broken, just a lot of scratches and bruises | |||
masak | lizmat: here's hoping for a speedy recovery | ||
"needs two* tests" | |||
jnthn | Glad you're at least in shape to be on IRC the evening after it... | ||
brrt | oh, ouch indeed | ||
lizmat | yeah... also, we still needed to cycle 25km after this happened | 22:19 | |
and that was no problem.. | |||
jnthn | o.O | ||
lizmat | did make me feel like a professional cyclist doing the Tour de France a bit :-) | ||
gfldex | you ran home? | 22:20 | |
lizmat | cycled home | ||
cleaned up, got a checkup at the first aid station at the hospital | |||
anyways, | 22:21 | ||
going to try to get some sleep now... | |||
so, good night, #perl6-dev! | |||
gfldex | sweet dreams | ||
jnthn | Glad you're safe. Rest well! | ||
lizmat | thanks! | ||
gfldex | another reason to go to mars. Less gravity. | 22:22 | |
brrt | sleep well |