»ö« 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 moritz on 25 December 2014.
lue masak: not that I've done an extensive check between the two lists, but I can't find this one grid I have as a rotation or symmetry in your list. 00:01
00:03 ggoebel111111117 left
lue (I can paste it in chat if you don't mind a 7-line paste) 00:03
nvm, I didn't realize I needed to scroll over the gist :P 00:04
00:05 ggoebel111111117 joined
vendethiel masak: uh, yeah, but $changed = True works 00:05
00:05 adu joined
masak vendethiel: it does. 00:05
vendethiel: I don't have a good rationale, except that it "feels" right to do ++ there. 00:06
vendethiel uhm. oke then :b
masak vendethiel: something about, it's OK if several actors do the ++, and if this bool were an integer, it'd care.
vendethiel that's irrelevant tho. it can't go back to false
adu I think I found a bug 00:07
pastie.org/9832410#23
masak vendethiel: neither does an Int if you just ++ it.
lue I use $sethash<key>++ in a couple places; it feels appropriate, and if I suddenly want to switch to a BagHash and care about the number of ++'s, it still works.
adu why is children and ident repeated in the .perl dump?
vendethiel masak: sure, that's not what I'm saying. 00:10
I'm just saying -- there's nothing that can go wrong
00:11 colomon left
masak vendethiel: that is true. this value $changed toggles from False to True (if at all), and then never back. 00:12
vendethiel: and yes, I might equally well have used `$changed = True;` there. but somehow, the way I think about that pattern if `$changed++;` 00:13
CurtisOvidPoe m: role A does B {} role B
camelia rakudo-moar 7af6a8: OUTPUT«===SORRY!=== Error while compiling /tmp/yqEeKgqgqH␤Invalid typename␤at /tmp/yqEeKgqgqH:1␤------> role A does ⏏B {} role B␤»
masak vendethiel: Perl 6 is gracious enough to make that DTRT with bools.
CurtisOvidPoe: semicolon after block.
CurtisOvidPoe m: role A does B {}; role B {}
camelia rakudo-moar 7af6a8: OUTPUT«===SORRY!=== Error while compiling /tmp/g5zut20QMQ␤Invalid typename␤at /tmp/g5zut20QMQ:1␤------> role A does ⏏B {}; role B {}␤»
masak CurtisOvidPoe: Perl 6 doesn't auto-insert semicolons if you have two statements on the same line. 00:14
CurtisOvidPoe But I just added the semi-colon in that second example;
psch m: role B { ... }; role A does B; role B { }
camelia rakudo-moar 7af6a8: OUTPUT«===SORRY!=== Error while compiling /tmp/s3hzsukoi_␤Too late for semicolon form of role definition␤at /tmp/s3hzsukoi_:1␤------> role B { ... }; role A does B;⏏ role B { }␤»
adu why does .perl have duplicates?
psch errh
m: role B { ... }; role A does B { }; role B { }
camelia ( no output )
masak CurtisOvidPoe: one-pass parsing. if you want to refer to a type, you have to have declared, or predeclared it. 00:15
CurtisOvidPoe OK. Thanks.
masak because the parser doesn't look ahead to see if the type will eventually be declared.
adu: no idea.
psch adu: depends on your code. is the code that's on github for C::Parser up to date with what you're running?
00:16 broski joined
lue Don't you get duplicates when using .^methods too? 00:16
broski got a question!
masak shoot!
broski does perl6 have a cms yet
masak don't think so.
there's some web stuff. 00:17
haven't heard about a CMS.
adu masak: github.com/andydude/p6-c-parser/tr...-version-2
broski I want to be all over that
masak (I won't count November, it's bit-rotted.)
broski: glad to hear it :)
adu masak: psch: it is now, the cast-version-2 branch
broski does apache have a perl6 module?
i'm sorry noob questions 00:18
masak I don't think it does.
jercos Does it need to? SCGI, FastCGI, so on so forth seem better to me.
lue Not to my knowledge, but you can use the various CGIs from P6.
masak I think Bailador et al just do their own web server.
also, what jercos said.
lue: CGI? what is this, the 90s? :P
broski yeah seriously lol 00:19
lue masak: CGIs, plural. As in CGI, FastCGI, SCGI, ... :P
geekosaur WSGI
masak .oO( SCSI )
geekosaur mod_* is kinda considered bad these days
CurtisOvidPoe Some thoughts on roles: github.com/perl6/specs/issues/80 00:21
It’s a long discussion and I need to head to bed.
masak 'night, CurtisOvidPoe
CurtisOvidPoe ‘night masak
masak ooh, wasn't aware of "Traits: The Formal Model". will read. 00:22
jercos Autobots, transform and role out
broski :)
CurtisOvidPoe It’s an awesome paper and reall clears up a lot of confusion.
00:23 dayangkun joined
TimToady is testing his solution for 4x4 00:24
psch m: role Foo { has @.foo; }; class Bar does Foo { }; class Baz is Bar does Foo { }; my $f = Baz.new(:children([1,2,3])); say $f.perl # adu
camelia rakudo-moar 7af6a8: OUTPUT«Baz.new(foo => Array.new(), foo => Array.new())␤»
psch that's what happens with e.g. FuncDef, Var and Children 00:25
00:25 KCL_ joined
psch i'm inclined to agree that it's probably a bug, but i'm not deep in our OOP 00:26
it does look wrong... :)
i was expecting composition to fail, as it does when Bar is a role and Baz does both, but...
m: role Foo { has @.foo; }; class Bar does Foo { }; class Baz is Bar does Foo { }; my $f = Baz.new(:foo([1,2,3])); say $f.perl 00:27
camelia rakudo-moar 7af6a8: OUTPUT«Baz.new(foo => Array.new(1, 2, 3), foo => Array.new(1, 2, 3))␤»
adu psch: wait, so is it because there are two "does Foo"?
I didn't realize that "does Foo" was inherited 00:28
masak that feels... odd...
but I guess you can mix in the same role once at every new inheritance level.
yeah, it's probably kosher.
TimToady this would probably run faster if I wasn't outputting all the solutions... 00:29
psch adu: roles get composed into the class, i.e. the class is actually created as a mixture between it's own declaration and the role (if i understand it correctly...)
adu although a pedantic compiler would complain about double-declarations
composition
hm
masak TimToady: I'm delighted that you've decided to join our obsessive problem-solving :>
00:31 kurahaupo joined
lue Let's not forget there's always hexslide :) (Last I left off, I was busy getting annoyed at my first multithread program ever, a multithreading DLX solver for the square variant :P) 00:31
psch m: role Foo { has @.foo; }; role Bar does Foo { }; class Baz is Bar does Foo { }; Baz.^attributes.elems.say
camelia rakudo-moar 7af6a8: OUTPUT«2␤»
masak lue: I most definitely haven't forgotten hexslide.
lue: that third list item there, without a number? strangelyconsistent.org/blog/counti...igurations -- that's the universe daring me to come up with a program to compute it. 00:32
lue (Interestingly, the solver still works. It's specifically the multithreading that breaks things, I didn't break the solver itself when trying to multithread it.)
masak: oh, I know. The puzzle's been on and off my mind ever since you put it up :) .
masak anyway. sleep time. 00:33
'night, #perl6
lue masak o/
00:33 skids joined
psch night masak 00:33
m: role Foo { has @.foo; }; role Bar does Foo { }; class Baz is Bar does Foo { }; Baz.^attributes.map(*.package).say 00:34
camelia rakudo-moar 7af6a8: OUTPUT«(Baz) (Bar)␤»
psch shrugs
adu: that's basically it. different packages the Attribute belongs to after being composed from the role into the class. it doesn't look particularly useful to me, but usually that doesn't mean much :) 00:35
*different packages allow this to work
psch forgot half the sentence there... 00:36
dalek jo6: ffcaf74 | hoelzro++ | lib/Mojo/DOM/CSS.pm:
Get .class.class2 to work properly
jo6: 88ca37e | hoelzro++ | lib/Mojo/DOM/CSS.pm:
Refactor CSS predicate creation to be clearer
broski see ya masak:
adu psch: so if I want the expected behaviour, I have to pick one-and-only-one class which "does Foo"
psch adu: for the current behavior, yes. you might want to bug TimToady++ or jnthn++ about this though, see if there is a good reason :) 00:37
adu :) 00:39
adu pokes TimToady
I can't find RoleHOW 00:43
lue adu: I believe there are different things, like ConcreteRoleHOW and whatnot (it's been a while for me though) 00:47
skids For methods the spec says: "A class's explicit method definition hides any role definition of the same name. A role method in turn hides any methods inherited from other classes." 00:48
psch i think this ties in with CurtisOvidPoe++'s specs issue, at least if i understood that right as well 00:49
skids Were we talking of methods, class Bar hides role Foo, so you have role Baz overriding the method from Bar, which is really from Foo.
erm no Baz was a class, strike that. 00:50
The direct one from Foo overrides the one from Bar which is really from Foo. 00:51
00:55 lsm-desktop joined
masak just popping by to say: 4x4: 33745 mazes. 4239 after removing symmetries. more details tomorrow. 00:59
&
adu hmm 01:03
that's not it
I can't use "use Perl6::Metamodel::ConcreteRoleHOW;" from either perl6 or nqp
japhb Try just Metamodel::ConcreteRoleHOW 01:06
There's a known issue with the Perl6:: prefix being visible or not. Also, you don't need to 'use' it, it's already there. 01:07
adu nope
01:07 broski left
adu oh without the use 01:08
ok
japhb .ask skids In irclog.perlgeek.de/perl6/2015-01-14#i_9939836 , what do you mean by "If you have a hand-tuned layout some of the .WHYs may present in ways that disrupt the final layout."?
yoleaux japhb: I'll pass your message to skids.
adu that works
skids japhb: when you perl6 --doc the file, the format of a method with a WHY may not be wha you want. 01:09
yoleaux 01:08Z <japhb> skids: In irclog.perlgeek.de/perl6/2015-01-14#i_9939836 , what do you mean by "If you have a hand-tuned layout some of the .WHYs may present in ways that disrupt the final layout."?
psch hrm, i might have over-fixed marshalling
on the other hand, how useful is a java.lang.Float in perl6..?
$ ./perl6-j -e'use java::lang::String:from<Java>; my $string = String.new("foo"); $string.WHAT.say' 01:10
(Str)
japhb skids: What kinds of things are known to render wrong? I can probably just avoid those. 01:11
psch i'm fairly sure that's too much
maybe differentiating by "do we come from a constructor" makes sense 01:12
although, probably not, considering java is famous for factories 01:13
skids japhb: signatures will have a newline after every parameter, for example. 01:15
japhb Ah, OK, interesting 01:16
Is this a "hard to fix" or a "just not dealt with yet"?
skids Sort of -- it would be an easy fix to Pod::To:Text if everyone consented, but if you open that file you may fid yourself wanting to rewrite it. 01:19
01:20 kurahaupo left
japhb Oooh, volunteer sniping 01:20
CurtisOvidPoe++ # preso 01:21
01:23 yeahnoob joined
skids Personally I think a small spec change allowing an author a way to exclude the autogenerated part of a declarator pod is in order, because there's no way to automatically do the best thing for every situation. 01:24
01:25 Mouq left
adu psch: sounds like a debate 01:29
TimToady I got an answer of 269895. 01:31
psch adu: i suppose. i'm not sure what point of view i'm siding with yet either...
01:32 cognominal joined 01:34 avuserow_ left
adu psch: I've been debating too 01:35
TimToady masak: assuming it's correct, here's my solution to 4x4: gist.github.com/anonymous/58437645a8aa131ac7b1
japhb Woah. 01:37
TimToady it relies on knowing that all solutions will have the same number of walls, and that all solutions must touch every internal point at least once
that is, if any wall is misplaced to divide the maze into two mazes, there will be an abandoned point somewhere 01:38
that's my assumption, anyway
lue TimToady: y'know, many people would see that many indentation levels and call it a code design smell :P . 01:42
japhb Part of knowing the rules is knowing when to break them. :-) 01:43
TimToady only because we don't have X that can depend on the previous list yet
there might well be a better way to generate all the 9-wall combinations in a set of 24 01:44
psch goes to sleep & 01:48
01:54 colomon joined
TimToady also, it would be considerably faster to not reslice every value every time, I'm sure 01:54
01:58 KCL joined 02:01 KCL_ left 02:24 anaeem1 joined 02:26 anaeem1 left
TimToady yes, my assumption is buggy, so my number is wrong 02:31
adu what's the difference between RoleToClassApplier and RoleToClassComposer?
TimToady oh well, lemme see if I can think of a way to rescue this approach 02:32
adu I should just stop reading the docs, they seem out of sync
JimmyZ adu: I didn't see RoleToClassComposer 02:35
TimToady afk &
adu github.com/rakudo/rakudo/blob/nom/...ctcomposer 02:36
JimmyZ: hence by comments
s/by/my/
JimmyZ oh, that's the same thing 02:39
*they are
02:40 colomon left 02:45 Mso150_h joined 02:52 chenryn joined, kurahaupo joined 03:14 chenryn_ joined, araujo left 03:15 araujo joined, chenryn left 03:25 noganex joined 03:28 noganex_ left 03:44 mdinger joined
mdinger I was looking at design.perl6.org/S05.html to determine how a character class is negated but I couldn't find it. I expect it's different from the perl 5 `[^abc]` but I can't tell. Is it written somewhere/ 03:46
*?
I also looked at doc.perl6.org/language/regexes and github.com/perlpilot/perl6-docs/bl...-intro.pod but still couldn't find it. 03:47
03:49 Mouq joined
Mouq is finally fairly confident about his solution. It's generalizable to all grid widths and heights and could probably easily be extended for N-dimensions 03:52
03:53 chenryn__ joined 03:54 chenryn_ left
Mouq What I have now is available here: gist.github.com/Mouq/a2e7dc887a4a35f9a131 03:54
I'll update it with more comments explaining/proving my algorithm at some point 03:55
Originally I had a large file that kept my first approach well documented, but I scrapped it 03:56
However, I get 192 solutions for the 3x3, so it's possible there's an oversight there. They are all unique, and as far as I can tell they're all valid mazes, but I haven't checked programmatically... 03:57
03:57 vendethiel left 03:58 colomon joined
Mouq Oh, looks like there's lots of old, misleading comments too! Hm.. 04:01
04:08 chenryn__ left 04:14 colomon left
skids mdinger: <-[abcd]> is inverted character class. 04:17
mdinger skids: Okay. Thanks. 04:18
04:25 molaf left
mdinger Is the github.com/perl6/specs/ repository the proper place to file an issue such as character class negation difficult to find? It's a design document so it seems somewhat correct...or is there a more proper location? 04:25
04:27 vendethiel joined
Mouq I'd go with github.com/perl6/doc first 04:27
04:28 araujo left 04:30 BenGoldberg left 04:32 Mso150_h left
mdinger Mouq: okay 04:32
04:35 araujo joined 04:36 kaleem joined
mdinger Thanks guys 04:38
Mouq mdinger++ 04:39
04:42 novice666 joined
lue Mouq: I get 192 too. 04:44
Mouq :D 04:45
Mouq hasn't run 4x4 yet; is optimizing for readibility now, will optimize for speed next 04:46
However on 4x3 I get 2415
novice666 ?What's wrong with phaser BEGIN in perl6 -e ' say $x; BEGIN my $x=10;' and also perl6 -e 'say $x; BEGIN our $x=10;'
lue I haven't written my code to handle rectangle grids, so I can't confirm anything there. 04:47
04:47 mdinger left
Mouq novice666: That's because of non-strictness. "say $x" auto-declares $x, and then you declare it again. 04:48
m: say $x; BEGIN my $x = 10
camelia rakudo-moar 7af6a8: OUTPUT«===SORRY!=== Error while compiling /tmp/ZIbYgXdiLy␤Variable '$x' is not declared␤at /tmp/ZIbYgXdiLy:1␤------> say $x⏏; BEGIN my $x = 10␤ expecting any of:␤ postfix␤»
Mouq m: say my $x; BEGIN $x = 10
camelia rakudo-moar 7af6a8: OUTPUT«10␤»
novice666 Mouq: thanks 04:49
04:49 vendethiel left 04:51 chenryn__ joined
novice666 mouq: but...why interpreter ignore BEGIN phase and catch the first mention of the variable? 04:54
04:55 leont left
Mouq novice666: "my" actually works parse-time, like BEGIN, installing the variable in the innermost scope 04:55
so, (as far as I understand, anyway), "say my $x" is the same as "BEGIN my $x; say $x" or just "my $x; say $x" 04:56
So the parser sees that the variable is undefined before it even gets to the BEGIN 04:57
m: say EVAL '$x'; BEGIN my $x = 10; # :P 04:58
camelia rakudo-moar 7af6a8: OUTPUT«10␤»
adu why does p6-mode indent every subline? 05:05
it seems that emacs' perl-mode seems more accurate for perl6 code 05:07
lue adu: because the indenter's not perfect and I haven't touched it in months :) .
adu lue: ah, so I can blame you ;) 05:08
05:08 telex left, dj_goku left
lue Hrm, 'M-x perl-mode' just gives me cperl, so I don't know what the real perl-mode is like (and CPerl is just crap, that's why p6-mode even exists) 05:08
05:09 vendethiel joined, araujo left 05:10 telex joined 05:13 araujo joined 05:23 KCL_ joined, raiph joined 05:25 Mso150 joined, KCL left 05:26 FlipBill left 05:27 kaleem left 05:30 vendethiel left 05:31 khisanth_ joined 05:33 dj_goku joined, dj_goku left, dj_goku joined 05:34 Khisanth left 05:40 raiph left 05:43 vendethiel joined 05:44 FlipBill joined 05:51 kurahaupo left 06:01 Rounin joined 06:04 adu left 06:06 vendethiel left 06:08 yeahnoob left 06:10 vendethiel joined 06:12 yeahnoob joined 06:21 FlipBill left 06:31 yeahnoob left 06:38 FROGGS_ left 06:43 morealaz joined 06:47 dayangkun left, kaleem joined 06:51 telex left 06:52 vendethiel left
Mouq Updated (with ~100 lines of comments): gist.github.com/Mouq/a2e7dc887a4a35f9a131 06:55
06:56 vendethiel joined, telex joined 07:04 morealaz left 07:05 broquaint left 07:06 [Sno] left 07:07 chenryn___ joined, chenryn__ left 07:12 mr-foobar left 07:13 yeahnoob joined 07:14 yeahnoob left, yeahnoob joined 07:17 vendethiel left, yeahnoob left, ponbiki left 07:25 gfldex joined 07:30 Sqirrel left, anaeem1_ joined 07:31 yeahnoob joined 07:38 PZt joined 07:44 yeahnoob left 07:45 chenryn___ left 07:49 yeahnoob joined, yeahnoob left 07:50 yeahnoob joined, yeahnoob left, yeahnoob joined 07:52 FROGGS joined 07:54 chenryn joined 07:56 zakharyas joined, gfldex left 08:07 yakudza joined 08:15 ponbiki joined
ponbiki j xubuntu 08:15
oops :x
08:17 darutoko joined 08:21 chenryn left, chenryn joined 08:30 brrt joined 08:31 cstevens joined 08:32 cstevens left, vendethiel joined 08:40 [Sno] joined 08:41 zakharyas left 08:43 mvuets joined, cognominal left 08:51 virtualsue joined, rurban joined 08:54 rindolf joined 08:58 Celelibi left 08:59 cognominal joined 09:01 Mouq left 09:11 abraxxa joined 09:15 novice666 left 09:22 virtualsue left 09:30 yeahnoob left 09:32 IllvilJa left 09:34 chenryn left, chenryn joined
woolfy nine: ping ping ping 09:36
dalek kudo/nom: a151332 | lizmat++ | src/core/Parcel.pm:
Add <0 test to Parcel.at_pos
kudo/nom: fdada00 | lizmat++ | src/core/Buf.pm:
Bounds for Blob.at_pos, <0 check for Buf.at_pos
woolfy afk 09:37
09:39 kjs_ joined 09:40 Celelibi joined 09:41 Mso150 left 09:44 broquaint joined, virtualsue joined
masak good antenoon, #perl6 09:45
09:48 dakkar joined 09:49 virtualsue left
jnthn o/ masak 09:50
09:51 vladtz left 09:52 IllvilJa joined
masak all the mazes: gist.github.com/masak/db655cb7ab27...e-04-mazes 09:53
jnthn Amazing! :P
masak :D
jnthn CurtisOvidPoe++ # excellent write-up 09:55
Will read it again and comment more heavily once I'm not tied up with teaching and a cold.
CurtisOvidPoe Thanks, jnthn.
masak Mouq: if you're getting 192 for 3x3, then you should be able to compare my list gist.github.com/masak/c17a7c473bf6f6ad83a5 against yours and find a maze that you have but I don't. 09:56
Mouq: if you do, then I have a bug.
CurtisOvidPoe I’m glad the write-up was coherent. I was drinking and staying up late when I wrote it :) 09:59
10:02 yeahnoob joined 10:05 [Sno]_ joined, zakharyas joined 10:06 [Sno] left, [Sno]_ is now known as [Sno] 10:07 denis_boyun_ joined 10:09 denis_boyun_ left 10:11 chenryn left
masak reads github.com/perl6/specs/issues/80 now 10:18
CurtisOvidPoe: fixed a typo: s/Commu<()>tivity/ta/ 10:24
10:25 pecastro joined
CurtisOvidPoe Thanks 10:25
masak .oO( ta )
CurtisOvidPoe: would "manually resolve the issue" in the last sentence mean something like add a trait to the overriding method to explicitly declare that it overrides? 10:27
moritz masak: and "ta" is short for "takk", right? :-)
masak moritz: you Norwegians with your "kk" :P 10:28
or, should I say, "kk" is admirably analytic/synthetic. but it just looks silly. 10:29
CurtisOvidPoe masak: in Smalltalk, resolving a conflict of that sort involves explicitly excluding conflicting methods. How it should happens in Perl 6 is something I could only guess at.
masak CurtisOvidPoe: I'm pretty sure with the changes you propose, github.com/masak/007/blob/master/lib/_007/Q.pm would break in one way or another :) 10:30
not that I consider that an argument against the change, necessarily -- what you say makes a whole lot of sense.
but it would be a slightly breaking change.
CurtisOvidPoe Yeah, I realize that not everyone would be happy with it. I’ve just been bitten by this enough times that I’ve realized that the traits researchers really did a brilliant job in their formalism (as opposed to say, mixins, which were an experimental hack that happened to get to the core of the inheritance problem) 10:32
masak CurtisOvidPoe: if I understand correctly what "explicitly excluding conflicting methods" means, then that feels like a slightly clunky way to do it.
CurtisOvidPoe: well, you had me at "associativity and commutativity" :) I want this too. 10:33
CurtisOvidPoe masak: I’m not overly fussed about the implementation so long as I can *know* when behavior is being discarded.
masak *nod*
10:34 ugexe left, ugexe joined 10:39 jack_rabbit left, virtualsue joined 10:50 araujo left 10:54 fhelmberger joined
masak TimToady++'s maze solver may have been wrong, but thinking about it made me think about another way to write my solver. 10:59
FROGGS now I think about thinking about thinking to write about a solver 11:03
rurban better FFI to a good existing solver, sat or smt. Simple ones get really slow soon 11:09
masak rurban: part of the joy is using Perl 6 for this, though.
11:10 denis_boyun joined
masak rurban: also, I didn't find much of any code to enumerate spanning trees. much less identify symmetries afterward. 11:10
11:10 chenryn joined 11:13 araujo joined, araujo left, araujo joined 11:21 grondilu joined
grondilu std: sub (:$a, @b) {} 11:22
camelia std f9b7f55: OUTPUT«===SORRY!===␤Cannot put required parameter after variadic parameters at /tmp/QucSA3sbdY line 1:␤------> sub (:$a, @b⏏) {}␤Potential difficulties:␤ @b is declared but not used at /tmp/QucSA3sbdY line 1:␤------> [3…»
grondilu is not quite sure about this
11:22 sqirrel joined
masak then maybe read up on S06 :) 11:22
can't put positionals after nameds in signatures. 11:23
it's fine in argument lists, though.
11:28 ab5tract joined 11:33 brrt left
grondilu I thought I could put named args wherever I want. 11:35
jnthn CurtisOvidPoe: I wonder if you have an example of com/assoc bustage *without* using subset types.
grondilu (I mean, isn't that the point of nming them?)
jnthn grondilu: No, you put positional ones first in the sig, then nameds. 11:36
Been that way for as long as I can remember.
It's probably sane for the reader :)
grondilu k 11:37
jnthn CurtisOvidPoe: My gut feeling is that a warning is not the way to go, and an error and having to mark up the resolution somehow is maybe closer.
11:38 colomon joined 11:39 donaldh joined 11:40 xfix joined, xfix left, xfix joined 11:41 colomon left
CurtisOvidPoe jnthn: You might be right, but I’m unsure. I’ve dithered on that a lot. 11:42
jnthn: the setset examples were there because they brought out the multi issues. For issues without multis, the subsets are necessarily to show the issue. 11:43
Gah! “For issues without multis, the subsets *aren’t necessary* to show the issue.” 11:44
I rather like the idea of fatal ambiguity due to the forcing devs to treat it more seriously and building unambiguous systems. However, I’ve had a number of people object to that idea in Moose on the grounds that “it wasn’t Perlish”. 11:45
11:48 kaleem left
jnthn CurtisOvidPoe: Well, we're stricter on various axes in Perl 6, so it may be more fitting with the langauge generally than it is in Perl 5... 11:49
dalek kudo/nom: 4af3cab | lizmat++ | src/core/Any.pm:
Merge two at_pos candidates
11:50
jnthn CurtisOvidPoe: I'd appreciate an example without multis/subsets, because I think it would make it clearer exactly where the issues lie; there may also be more than one underlying issue that wants looking at here. 11:51
CurtisOvidPoe Will do.
jnthn Thanks!
psch hi #perl6 \o 11:53
jnthn I should have a bit of time before FOSDEM to prototype some changes, if we can figure out what to try changing. :) 11:54
hi psch
11:55 grondilu left
psch o/ jnthn 11:57
jnthn: did you see the role attribute composition WAT by adu in the backlog? 11:58
m: role Foo { has @.foo; }; role Bar does Foo { }; class Baz is Bar does Foo { }; Baz.^attributes.map(*.package).say
camelia rakudo-moar fdada0: OUTPUT«(Baz) (Bar)␤»
psch i have a feeling that ties in with what CurtisOvidPoe bugged, but my understanding might be limited 11:59
also i got past my troubles in Binder.java and PR 354 implements definednes constraints :) 12:01
jnthn psch: taht's not a WAT, that's how it should work.# 12:02
Heck, the MOP even has code that *relies* on that.
More generally, attributes are scoped to classes 12:03
12:03 chenryn left
jnthn m: class Bar { has @.foo }; class Baz is Bar { has @.foo }; Baz.^attributes.map(*.package).say 12:04
camelia rakudo-moar fdada0: OUTPUT«(Baz) (Bar)␤»
jnthn It's equivalent to that.
CurtisOvidPoe jnthn: I’ve posted an example as a response on that ticket.
12:05 sqirrel left
psch jnthn: oh, okay, shows what i know... :) 12:06
12:07 chenryn joined
masak CurtisOvidPoe, jnthn: +1 on errors/strictures. the philosophy in Perl 6 is that if you require higher-level abstractions (such as declared types), then Perl 6 feels it can require things of *you*, the programmer, in return. 12:08
12:09 PerlJam left, PerlJam joined
jnthn CurtisOvidPoe: Thanks. 12:15
And yeah, that illustrates what's at stake much more simply. 12:16
12:17 sqirrel joined
jnthn psch: Does #354 pass spectest? 12:18
psch jnthn: i had 2 flaps, in supply-related tests, but they passed on their own 12:19
aside from that it's a few TODOs passed, the ones mentioned in RT #122229 12:20
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122229
12:26 yeahnoob left
psch ...i'm rerunning now to be sure 12:26
12:27 rindolf left
dalek kudo/nom: a0de41f | lizmat++ | src/core/ (6 files):
Some more at_pos / assign_pos streamlining

  - have at least < 0 check
  - simplified range info in exception (no need to make a real Range object)
12:28
ast: 8e21b00 | lizmat++ | S32-exceptions/misc.t:
Adjust for simplified Range information
12:29
12:31 chenryn left 12:32 rindolf joined 12:39 kaleem joined
psch jnthn: yes, spectest passes (with a different flapping test this time) 12:45
12:46 skids left 12:51 colomon joined
dalek ast: 5b8cca1 | hoelzro++ | S32-exceptions/misc.t:
Test that parameters are included in suggestions
12:55
ast: 22f9e21 | hoelzro++ | S32-exceptions/misc.t:
Test attribute suggestion

   ...when a lexical of the same name is accidentally used
colomon looking at CurtisOvidPoe's latest emailed example,isn't that exactly how p6 is supposed to work? 12:56
12:56 kaare__ left
CurtisOvidPoe colomon: my latest emailed example? Do you mean the github issue I raised? 12:56
colomon yes 12:57
sorry, they are emailed to me from github
12:57 anaeem1__ joined
CurtisOvidPoe The traits paper’s state that the order in which roles are composed is irrelevant. The P6 spec also states that the order is irrelevant. But I posted several examples where the order is very irrelevant. 12:57
moritz well 12:58
12:58 anaeem1__ left
CurtisOvidPoe Since ordering issues in multiple inheritance (and mixins) are one of the core problems that traits were designed to solve, there’s a problem here. 12:58
moritz roles can carry superclasses too
and order of superclasses matters
so at least in that case there's probably not much we can do 12:59
in other cases, maybe
dalek kudo/nom: bba2447 | lizmat++ | src/core/Capture.pm:
Unify on returning Nil on non-existing elements
kudo/nom: 0bb3add | lizmat++ | src/core/array_slice.pm:
Remove < 0 check from postcircumfix:<[ ]>

All of the at_pos/assign_pos have their own checks now, catered to the actual situation. This causes some spectest breakage, because in some situations the exception type has changed. Soon to be fixed.
lizmat ^^^ this should make inlining postcircumfix:<[ ]> a lot more feasible 13:00
colomon CurtisOvidPoe: you're saying that we shouldn't be able to declare a role which does another role but overrides one of its methods?
13:01 anaeem1_ left
lizmat m: my $a; $a[10] := 24' # ooh, wow 13:01
camelia rakudo-moar 4af3ca: OUTPUT«===SORRY!=== Error while compiling /tmp/lEhkFAI99V␤Two terms in a row␤at /tmp/lEhkFAI99V:1␤------> my $a; $a[10] := 24⏏' # ooh, wow␤ expecting any of:␤ infix stopper␤ infix or meta-infix…»
CurtisOvidPoe No. I’m saying that we shouldn’t silently discard the other methods behavior and make a casual reordering of roles cause silent changes to the code’s behavior.
lizmat m: my $a; $a[10] := 24 # ooh, wow
camelia rakudo-moar 4af3ca: OUTPUT«No such method 'bind_pos' for invocant of type 'Any'␤ in sub postcircumfix:<[ ]> at src/gen/m-CORE.setting:2858␤ in block <unit> at /tmp/A37GDrCFms:1␤␤»
13:02 abraxxa left, abraxxa joined
lizmat m: my $a = (1,2,3); $a[2] := 24 # huh? this is all legal, no? 13:03
camelia rakudo-moar 4af3ca: OUTPUT«No such method 'bind_pos' for invocant of type 'Parcel'␤ in sub postcircumfix:<[ ]> at src/gen/m-CORE.setting:2858␤ in block <unit> at /tmp/kIWj5BbYSw:1␤␤»
colomon but you're explicitly saying A does B but with A's foo in one case,and B does A but with B's foo in the other
lizmat m: my $a = (1,my $b,3).list; $a[1] := 24 # one more 13:04
camelia rakudo-moar 4af3ca: OUTPUT«No such method 'bind_pos' for invocant of type 'List'␤ in sub postcircumfix:<[ ]> at src/gen/m-CORE.setting:2858␤ in block <unit> at /tmp/JIMgXW12ai:1␤␤»
moritz lizmat: I don't think parcel should allow binding to slots
lizmat: but I might very well be confused 13:05
lizmat well, if you're allowed to assign into a Parcel, why wouldn't you allowed to bind into one ?
brb 13:11
13:21 cognominal left, cognominal joined 13:24 sqirrel left
pmichaud good morning, #perl6 13:35
moritz good am, pm 13:36
13:37 leont joined
ab5tract yesterday i was playing with SQL::Rabbit in perl 5 13:37
something like this would be awesome to have in p6 13:38
github.com/robinsmidsrod/XML-Rabbit
now if only someone would finish a libxml wrapper ;)
robinsmidsrod ab5tract: :) 13:39
ab5tract oh, hai robinsmidsrod! awesome work there 13:40
when possible, i will attempt to port that over to p6 :D
still trying to think about how it would actually look as a p6-native module.. 13:44
13:47 chenryn joined
ab5tract erm, wires crossed as i was looking at p5 db connectivity options.. that is XML::Rabbit 13:47
dalek ast: 4b5a806 | lizmat++ | S02-types/ (2 files):
Change exception types to new type
13:48
ast: 22ef35b | lizmat++ | S02-types/nested_arrays.t:
Fudge problematic test: we're throwing immediately
ast: 7cbffe8 | lizmat++ | S17-scheduler/at.t:
Make sure we don't die on empty arrays
jnthn o/ pmichaud
ab5tract but speaking of SQL.. i am also dithering on porting something like sequel.jeremyevans.net to p6
robinsmidsrod ab5tract: yeah, I haven't been paying much attention to p6, to be honest, and have little idea how it would work with the benefits that the p6 object model gives 13:49
dalek kudo-star-daily: 9c0dc9b | coke++ | log/ (9 files):
today (automated commit)
ab5tract robinsmidsrod: one thing i can quickly imagine is using the FALLBACK functionality to create the accessors
robinsmidsrod ab5tract: some of the internal method names and attributes could have better (more descriptive) names - I remember I was struggling a bit with moose internals when I created it 13:50
dalek kudo/nom: 63933cd | peschwa++ | src/vm/jvm/runtime/org/perl6/rakudo/Binder.java:
Implement definedness checks for the JVM Binder.

This fixes RT #122229.
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122229
dalek kudo/nom: 9c74ab6 | jnthn++ | src/vm/jvm/runtime/org/perl6/rakudo/Binder.java:
Merge pull request #354 from peschwa/rt122229

Implement definedness checks for the JVM Binder.
jnthn lizmat: Yu're not allow to assign into a Parcel, you're allowed to assign into containers a Parcel may hold. 13:51
lizmat ok, so the error message is LTA :-)
ab5tract i haven't actually looked at the internals yet, but the interface is really awesome 13:52
lizmat m: my $a; $a[10] := 24 # but this should work, no?
camelia rakudo-moar 0bb3ad: OUTPUT«No such method 'bind_pos' for invocant of type 'Any'␤ in sub postcircumfix:<[ ]> at src/gen/m-CORE.setting:2843␤ in block <unit> at /tmp/qGB4WKSHCv:1␤␤»
robinsmidsrod ab5tract: well, do ask if something about XML::Rabbit is strange, and I'll try to explain as best I can - you can also join the #xml-toolkit channel on irc.perl.org were we discuss it occasionally
ab5tract will do, thanks :) 13:53
moritz was confused about the name, because he works a lot with RabbitMQ recently
ab5tract wonders if psch++'s recent work on JVM interop means that accessing an XML parser in Java is now feasible 13:54
where feasible stands for hacking-on-it-is-fun
psch ab5tract: well, i'm always looking for real use-case feedback... ;) 13:56
13:58 KCL joined, Rounin left
[Coke] psch++ 14:00
thank you SO MUCH for improving the state of rakudo-jvm
14:01 KCL_ left
psch [Coke]: you're welcome :) 14:01
moritz and somebody please give psch++ a rakudo commit bit 14:02
psch: have you submitted a CLA to The Perl Foundation already?
psch moritz: about 6 weeks ago or so i think. i inquired 2 or 3 weeks back if it arrived and was told it hasn't yet
[Coke] still not entered into the list. 14:06
jnthn Aww
But +1 from me for psch to have commit bit once CLA is in the list
masak my new 4x4 maze algorithm runs for 32 minutes. that's a bit better than the last one, which ran for 2.5 hours. 14:08
(the new algorithm, instead of "melting" away fringe walls, "grows" walls in all possible ways from an empty starting state) 14:09
ab5tract what's a CLA? btw, i did check here first: github.com/perl6/specs/blob/master...ossary.pod
masak unfortunately, *this* algorithm thinks there are 4258 solutions! grr.
[Coke] Contributor Licensing Agreement.
ab5tract masak: will you be publishing a blog post? i love reading about the mini-challenges on strangelyconsistent
[Coke] s/ing/e/ 14:10
masak ab5tract: I just might. this was a captivating problem.
[Coke] www.perlfoundation.org/contributor_..._agreement
jnthn
.oO( Commit-bit Legal Annoyance )
masak .oO( Come, Lawyer Away! )
[Coke] basically, you agree that the TPF has a license to use the stuff you commit directly. 14:11
14:13 IllvilJa left 14:16 chenryn left 14:18 [Tux] left 14:20 xinming left 14:21 [Tux] joined 14:24 woolfy left 14:25 araujo left, chenryn joined
masak wow, this is the worst rakudobug I've had in a while. 14:27
m: for 2, 3 -> $n { my $s = "0" x $n ~ "1"; say $s, ": ", $s.substr(0, 1) ~ "1" ~ $s.substr(2) } 14:28
camelia rakudo-moar 0bb3ad: OUTPUT«001: 011␤0001: 0100␤»
masak just stare at that for a while.
14:28 woolfy joined
masak that last expression with the .substr calls essentially means "put in a 1 in the second place, but leave everything else intact". 14:28
well, if that is so, where did the final "1" go in "0001"? 14:29
masak submits rakudobug
p6: for 2, 3 -> $n { my $s = "0" x $n ~ "1"; say $s, ": ", $s.substr(0, 1) ~ "1" ~ $s.substr(2) }
camelia rakudo-parrot 0bb3ad: OUTPUT«001: 011␤0001: 0101␤»
..rakudo-moar 0bb3ad: OUTPUT«001: 011␤0001: 0100␤»
masak right.
14:29 IllvilJa joined
masak since I know a tiny bit about how strings are implemented on Moar, I predict that the bug will be tracked down in how string repetitions are handled. 14:30
this is ultimately what's causing the different results for me in the maze finding. well, it's the most obvious cause, anyway. 14:31
p6: for 2, 3 -> $n { my $s = "0" x $n ~ "1"; say $s.substr(2) } 14:32
camelia rakudo-moar 0bb3ad: OUTPUT«1␤00␤»
..rakudo-parrot 0bb3ad: OUTPUT«1␤01␤»
masak p6: my $s = "0" x 3 ~ "1"; say $s.substr(2) 14:33
camelia rakudo-moar 0bb3ad: OUTPUT«00␤»
..rakudo-parrot 0bb3ad: OUTPUT«01␤»
masak p6: say ("0" x 3 ~ "1").substr(2)
camelia rakudo-moar 0bb3ad: OUTPUT«00␤»
..rakudo-parrot 0bb3ad: OUTPUT«01␤»
masak even golfer.
...and if anyone felt that we took up a bit much of the airwaves with our mazes nonsense, know that it led directly to the finding of this bug. :> 14:37
14:38 skids joined
moritz is only sorry that he couldn't follow the airwaves more closely 14:40
tadzik hmm, at some point Steroids got broken, in particular this: github.com/tadzik/steroids/blob/ma...SDL.pm#L45 14:43
it says "use the :() form if you meant to add signature info to the function's type", where should that colon go?
&cb:() doesn't seem to do the same thing
14:44 pmurias joined 14:45 pdcawley joined
pmurias tadzik: add whitespace, I have seen the same error in Inline-Python 14:45
masak `&cb (int32)`?
pmurias yes 14:46
tadzik yeah, that works
thank you pmurias++
woolfy nine: ping svp 14:47
tadzik wow. Profiling Steroids is eye opening 14:53
14:53 araujo joined, araujo left, araujo joined
tadzik I might just have a very interesting talk cooking up :) 14:53
FROGGS I expected 'memory consuming', but your's is better :o) 14:54
tadzik that too
4.4 MB HTML file is no fun for any browser I've tried
FROGGS yeah
tadzik I literally wait a few minutes after each click for angular to react
(or crash my browser. JS pls)
FROGGS though, 4.4MB does not sound that much
tadzik most of it is JSON, aiui 14:55
FROGGS but still
that's not BIG DATA, is it?
tadzik you know what big data is? :D
s-media-cache-ak0.pinimg.com/736x/...22c57f.jpg
FROGGS I have an idea :o)
>.< 14:56
*g*
tadzik anyway: most GC runs take more than there's time for a single game frame to render
the clear winner of allocations is no other than our friend Scalar
so if we somehow avoided boxing things, perhaps using binding here and there, we'll be able to relieve GC a little bit, does that make sense? 14:57
woolfy nine: I am afk, till later this evening...
pmichaud woolfy: did you get my email? 14:59
14:59 araujo left
pmichaud Ah, I just got your reply, thanks. 14:59
15:02 raiph joined
tadzik pmichaud: can you tell me if my ramblings above sound correct? About Scalar allocations being avoidable to our benefit in certain places? 15:03
masak pmichaud! \o/ 15:07
15:08 KCL left
donaldh jnthn: what was the motivation for using annotations on the JVM backend? 15:08
jnthn: I think annotations have a performance cost, versus an alternative like generating coderef init code. 15:10
tadzik :w 15:11
pardon
masak .oO( yes ) 15:12
pmurias tadzik: you have a gigantic list you made with ng-repeat?
tadzik pmurias: ng-repeat? Well I do have lists here and there :) 15:13
skids wonders whether applying a type system on the endianness issue has been done elegantly in any existing HL language. 15:14
i.e. is it the right tool for that job, and if so why is it seldom used for that job. 15:15
15:19 araujo joined, araujo left, araujo joined, raiph left
jnthn donaldh: I think annotations did work out faster for some reason, possibly because they deserialize lazily 15:25
donaldh: I think it led to smaller output than the code-gen too
donaldh: I know we replaced some code-gen with annotations along the way. 15:26
And it was some kind of improvement :) 15:27
donaldh jnthn: I'm seeing ~ 500ms time being spent in sun.reflect.annotation.AnnotationParser.parseAnnotations 15:28
15:28 sqirrel joined, Hor|zon left
jnthn Wow 15:28
15:28 Hor|zon joined
donaldh jnthn: this is for ./perl6 -e 'say "hi"' which currently takes 3.2s on my machine. 15:29
15:29 H2O1 joined
jnthn donaldh: Hmm...question is if generating/executing code would take less than that. 15:30
donaldh I know. And the only way to find out for sure is to try it.
jnthn Well, other question is if we're being too eager about looking at annotations
donaldh Yes, I think that is the case.
15:30 H2O1 left
jnthn And if we can put off accessing some of them until later - as in, never for many things we dont' use. 15:31
donaldh That path may be quite fruitful.
jnthn Yeah, I'd explore that before code-gen.
donaldh is exploring adding profiling capability like moar has.
jnthn Also maybe mine the commit log. 15:32
Because there may be hints about "why annotations" in there.
pmurias jnthn: what is required for automatic precompilation?
jnthn masak: Wow, nice golf. 15:33
masak :)
donaldh Yeah. I can't remember if annotations predate jvm landing in the nqp repo
jnthn donaldh: I'm sure they don't.
So you should find it in the nqp log.
tadzik jnthn: could you check my logic in irclog.perlgeek.de/perl6/2015-01-15#i_9946128 ? 15:34
jnthn pmurias: Well, making manual precompilation have a bug or two less may be a pre-req. But then, some mechanism of knowing (a) where to cache precomps, and (b) how to invalidate them when something they depend on changed
15:35 jluis left
pmurias IMHO automatic precompilation is a really important feature 15:35
because the current alternatives are either waiting which is boring and causes distractions 15:36
or writing Makefiles which is barbaric and annoying
tadzik and even if you do that it blows up in your face every so often 15:38
donaldh jnthn: This is probably the most insightful commit message - "Eliminate code-gen for huge code refs array."
15:42 jluis joined
jnthn donaldh: Apparently it caused problems, then :) 15:43
tadzik: How long do you have for a frame, ooc?
m: say 1/60
camelia rakudo-moar 9c74ab: OUTPUT«0.016667␤»
tadzik jnthn: 16.6ms
most GC runs on this machine (a little aged) take about 18 15:44
donaldh jnthn: Yes, the setting may have blown some classfile limit like method size.
jnthn Hm, that's a bit longer than I'm used to seeing. I wonder why.
donaldh: That sounds familiar. :)
donaldh: That problem happened quite a bit in general - blowing limits.
tadzik jnthn: imgur.com/7qbsVS6 might explain a bit :) 15:45
every run slices off about 400,000 Scalars
jnthn That explains GC frequency better than it explains the GC taking a while.
tadzik err, scratch that 15:46
jnthn Wait, what are the colors in the allocations graph?
jnthn doesn't remember that chart :)
15:47 molaf joined
tadzik oh, hm, I assumed greens are those removed from nursery 15:47
54 garbage collections for the code in that sample 15:48
jnthn Well, I understand the graph in the GC tab
But I dunno what the graph in the allocation tab means.
I'm fairly sure I didn't implement it. :)
tadzik you don't know? We're doomed :D
jnthn timotimo may know :) 15:49
tadzik oh, that's okay :)
anyway, I did some experiments and it's clear that binding and avoiding 'for' is a great way to avoid Scalar allocation 15:50
so if I throw a lot of that away, it's a huge win
I wonder if there's anything to do about BOOTCode 15:51
15:51 gfldex joined
jnthn Less closures... :) 15:52
15:53 kaleem left
tadzik heh 15:53
a loop {} running ten times comes up with 20 BOOTCodes
jnthn An...empty loop? o.O 15:54
tadzik no, not empty :)
hoelzro o/ #perl6
jnthn oh, well could be anything in there then :P
tadzik oh wait, if I cross the loop out it's still 11
so it makes sense
15:55 xinming joined
tadzik so, I think I'll talk on FOSDEM about it, looking at allocations and avoiding them to make your code less GC reliant and thus faster :) 15:55
15:56 KCL_ joined 15:59 [Sno] left, [Sno] joined
jnthn Hopefully showing the tool that helps you discover such things :) 16:00
16:00 telex left
masak ++tadzik 16:00
jnthn BTW, for folks wishing the profiler UI wasn't written in Angular: I'm not attached to it, I just had to write it in the space of about a couple of days worth of working time.
And it's a quick way tos omething that works at all. 16:01
tadzik jnthn: otherwise even I myself wouldn't believe it :P
16:01 KCL_ left
masak Angular for prototyping! \o/ 16:01
tadzik I like it, and the reasons why it stutters on tons of data I can understand
it looks shiny and works well
jnthn Aye
Well, looks shiny is mostly thanks to BS 16:02
masak jnthn: tbh, I think I would enjoy stripping off the Angular and making it pure JS and more performant. :)
jnthn masak: Happy stripping :)
16:02 telex joined
masak wouldn't mind pairing up with someone over it. 16:02
tadzik thanks to BS? Hmm 16:03
oh, Bootstrap. Of course
jnthn Yes! :P 16:04
donaldh yes bootstrap is good for shiny OOTB
jnthn Yeah, I even used it for moarvm.org :P
16:04 [Sno] left
pmichaud tadzik: oops, just now saw your comment 16:07
reading
avoiding scalar allocations can be helpful, but I think you have to be very careful with context. 16:08
16:09 rurban left
pmichaud Scalars are also a way that flattening behavior is controlled. For something that is naturally flat, it doesn't matter if it's in a Scalar, but for something like an Array, Range, or Hash (something Iterable), binding directly instead of using a Scalar may cause it to flatten where otherwise it wouldn't. 16:09
16:11 virtualsue left
moritz what's an example of a thing that's naturally flat? 16:14
FROGGS a disk? 16:17
PerlJam pancakes :)
donaldh en.wikipedia.org/wiki/Flat_Earth
lumimies The NL?
moritz ... in Perl 6 context
FROGGS our jokes
PerlJam moritz: isn't a Parcel "naturally flat" in some sense? 16:18
masak the adoption curve
FROGGS >.<
lumimies FROGGS: They're not naturally flat, they just fall that way
moritz m: say 42 for $(1, 2), $(4, 3)
camelia rakudo-moar 9c74ab: OUTPUT«42␤42␤»
moritz PerlJam: ^^ two non-flat Parcels
16:19 spider-mario joined
PerlJam yeah, but you forced item context upon them against their will 16:19
masak nice. I now have parity between the two algorithms. there are 4238 4x4 mazes. 16:20
jnthn stuff & 16:24
masak .oO( you are in a result set of 4238 unique 4x4 mazes, all alike )
dalek c: c5c4e68 | moritz++ | lib/Language/regexes.pod:
Expand on negated char classes. Closes #40.
16:26
masak new, easier/faster solution: gist.github.com/masak/6f1c0ba393fe5eb508b1 16:29
I note with sadness that gist.github.com no longer highlights Perl 6. 16:30
:/
would someone be willing to port 01-mazes.p6 to Perl 5, and measure how long it takes to run? I'd appreciate that. 16:32
maybe we can use this as a benchmark in p6bench (though with lots fewer iterations).
also, I'd be very interested in any possible speedups to the Perl 6 program. 16:33
16:38 sqirrel left 16:39 chenryn left 16:40 wtw left, denis_boyun left 16:41 chenryn joined
moritz where's that program? 16:43
16:43 chenryn left
masak gist.github.com/masak/6f1c0ba393fe5eb508b1 16:43
japhb masak: I happened to see it since it's near the bottom, but if you mention it as 'perl6-bench' instead of 'p6bench', I'll be highlighted. 16:44
masak got it 16:45
16:45 jluis_ joined
japhb So question for the erstwhile designers/architects: I am designing a framework for RPG systems. I've gotten to a point where I'm not sure about the right OO design to describe my mental model. 16:49
When I create a character, I have a system by which I can apply a set of templates to a "blank" character, and build up most of the basic character stats that way. 16:50
I want to have different types of templates have a decent OO type layout.
So for example, I have a class for AttributeTemplate, which has arrays for unused score numbers, and a preferred array to apply them. 16:51
masak doesn't sense a question yet 16:52
japhb Now I want to be able to specify e.g. HeroicNPCAttributes, and have it provide *default values* for the unused score numbers, and e.g. MeleeFighter, and provide default preference order array. 16:53
Gah, sorry, VERY poor connectivity right now
masak japhb: I'm getting vibes of steve-yegge.blogspot.se/2008/10/uni...ttern.html -- but you're probably already aware of that. 16:54
16:54 anaeem1_ joined
japhb So mentally I'm thinking of these as roles to apply to a (possibly anopnymous) classand instantiate. 16:54
masak: Quite possibly 16:55
16:55 FROGGS left
japhb In any case, the question is (or perhaps questions are): 16:55
How would you best specify default values for attributes in a role that should be applied to the parents' attributes? 16:56
Is there a better design for that kind of default setting than instantiating as: (AttributeTemplate but HeroicNPCAttributes does MeleeFigher).new(...other stuff...) ? 16:57
sjn thought roles were applied to classes, and when doing so may add change or require attributes
japhb Gah, this connectivity is killing me
sjn japhb: it sounds to me that you're overgeneralizing 16:58
16:58 anaeem1_ left, anaeem___ joined
japhb sjn: Unfortunately, I got here from a more specialized design, and had to keep generalizing. 16:58
vendethiel seems like I can't type [ and ] in perl6's repl 16:59
japhb It turns out when people design pen&paper RPGs, they design completely free-form rules. So you take e.g. Pathfinder and try to convert even just character generation rules to code, and you go crazy with special cases and crazy cross-cutting concerns
masak japhb: I'm also reminded of OLOO. don't have a good reference for that, but here's *something*: gist.github.com/getify/5572383 17:00
dsm what's the Perl6 version of open( my $fh, '>', \$content );? 17:01
masak dsm: writing to a scalar reference?
17:01 araujo left
dsm writing to a scalar 17:01
masak dsm: I'd probably make a custom class for that which responds to the right method calls. 17:02
17:02 anaeem___ left
masak dsm: I often make a custom Output thingy -- and there's a module for that by sergot++ -- hold on 17:02
github.com/sergot/IO-Capture-Simple/ 17:03
17:03 sqirrel joined
dsm great 17:03
masak here's a similar, simple example: github.com/masak/007/blob/master/l...est.pm#L68
17:03 araujo joined 17:04 anaeem1 joined 17:05 donaldh left
ab5tract what's the difference between that use and slurp ? 17:08
17:09 abraxxa left
masak ab5tract: it's the difference between output and input. 17:09
(for one thing)
ab5tract okay, i must be dumbing at the moment 17:10
17:10 rurban joined, mr-foobar joined 17:12 jack_rabbit joined 17:15 Mouq joined, anaeem1 left
pmurias if I call QAST::CompUnit.new(QAST::Block.new(...)) from Perl6 it should work? 17:20
the *@children on the nqp is passed a proper nqp::list? 17:21
17:23 anaeem1_ joined 17:26 mvuets left
hoelzro I just saw this in S05-regex.pod: method name { "Name = $.name" } 17:28
won't that infinitely loop?
shouldn't it be $!name there? 17:29
17:29 khisanth_ is now known as Khisanth
japhb is rereading that Steve Yegge article masak++ linked above -- it's amazing how much more I'm thinking about all the details when I'm hip deep in a relevant problem, rather than just reading for general knowledge 17:29
[Tux] use Test should mention the line of tests that fail (like Test::More does) 17:30
s/line/line number/
masak japhb: glad I could help :)
japhb masak++ # Sometimes it's just the right thing said at the right time, even when the listener "already knows that" 17:31
TimToady tadzik: note tht &cb (int32) is technically wrong and will likely break someday; the current implementation steals the subsig slot for attaching function parameter constraints, but eventually we will steal it back, and &cb:(int32) will be the correct form 17:33
17:35 anaeem1_ left
TimToady and the latter form ought to work currently, since the parser is just pretending the colon is a space; at least I thought I made it do that 17:35
17:37 virtualsue joined
dalek rl6-roast-data: 57b62aa | coke++ | / (5 files):
today (automated commit)
17:37
TimToady tadzik: so the &cb:(int32) form will be more future proof, if it works 17:38
and if it doesn't, I'd like to know why...
masak why during this Twitter conversation do I feel a little confused? twitter.com/YDKJS/status/555119366115565571 (for context, the quiz was "Can you name three or more cases of 'significant whitespace' in JavaScript?" twitter.com/YDKJS/status/555117730198585344 ) 17:39
huf if + + vs ++ matters, then so does par seInt vs parseInt 17:40
17:40 jluis_ left
huf s/matters/counts/ 17:40
masak huf: except that the latter is not legal syntax. 17:41
huf hey, the meaning changes :)
but yeah, okay.
TimToady
.oO(one of them is meaner)
huf we just feel that symboly stuff should be less whitespace-sensitive than alnummy stuff 17:42
17:43 sqirrel left 17:44 dwarring joined
masak I dunno... that's just not what I *mean* by "significant whitespace"... 17:45
TimToady "I don't like your I-know-what-a-word-is-li-ness." :P
masak :P
huf a ton of english words have spaces inside them 17:46
it's just an artifact of ortography, the germans (or we) wouldnt put any space in the middle of compound words
PerlJam huf: we call those "phrases" :)
huf sure, sure :) 17:47
masak I can't think of another case in JavaScript where it's valid both to have two words with whitespace between them, and to write them together, and where those two cases have different meaning.
17:48 rurban left
lumimies masak: var mint = 1; varmint = 1 17:49
huf a-ha! :) 17:50
17:51 jack_rabbit left
[Tux] can someone explain why www.xs4all.nl/~hmbrand/t.pl gives me "Variable $!show used where no 'self' is available " 17:51
can't I have helper subs inside a class? 17:52
TimToady those are called private methods
subs have no invocant
masak lumimies: :D I *just* realized that one too! but your variable name is better ;) 17:53
PerlJam [Tux]: you could move the helper sub into a scope where an invocant is available. (but maybe hic sunt dracones if you're not careful:) 17:54
TimToady [Tux]: so declare 'method !myhelper {...}' and then call self!myhelper() 17:55
we try to keep subs and methods very far apart in Perl 6, after all the confusion in Perl 5
[Tux] I tried it like this because I want that sub to be used from two (or more) different methods but I do not want the method visible to the caller of the class
PerlJam [Tux]: private method it is then!
17:56 kjs_ left 17:57 molaf left 17:58 dakkar left 17:59 treehug88 joined
TimToady m: class Me { has $!show = "me"; sub myhelper(\self, *@args) { say @args, $!show }; method start() { myhelper(self, "Sink ") } } 18:01
camelia rakudo-moar 9c74ab: OUTPUT«===SORRY!=== Error while compiling /tmp/fx3EPQTGCC␤Variable $!show used where no 'self' is available␤at /tmp/fx3EPQTGCC:1␤------> elper(\self, *@args) { say @args, $!show⏏ }; method start() { myhelper(self, "Sin␤»
TimToady aww
there is so a 'self' available :P
18:02 pmurias left
TimToady jnthn: ^^ should that be made to work? 18:02
or do we need to know the class of self at compile time? 18:03
18:03 anaeem1_ joined
TimToady m: class Me { has $.show = "me"; sub myhelper(\self, *@args) { say @args, $.show }; method start() { myhelper(self, "Sink ") } } 18:04
camelia rakudo-moar 9c74ab: OUTPUT«===SORRY!=== Error while compiling /tmp/TnjJCfKcEO␤Variable $.show used where no 'self' is available␤at /tmp/TnjJCfKcEO:1␤------> elper(\self, *@args) { say @args, $.show⏏ }; method start() { myhelper(self, "Sin…»
TimToady arguably that one should worker than the first one
[Tux] tux.nl/Files/20150115190501.png 18:05
\o/
18:05 eternaleye left
[Tux] some parts do not (yet) DWIM for me :) 18:06
[Tux] commits and pushes
Mouq masak: perl6 masak-maz3.perl6 | perl6 masak-sym3.perl6 |perl6 -e"my @masak's = lines; my @mouq's = <my-3x3-sym.txt>.IO.lines; say @mouq's (-) @masak's"
set(000100010011, 000100011100, 000101010010, 000101100010)
18:07 eternaleye joined
psch hrm, i found what's probably a big blocker for real-world jvminterop use :/ 18:07
gist.github.com/peschwa/45ff88238adc74aa2405 18:08
it's not only StringBuilder that has that problem, but i haven't isolated yet what pattern causes it
18:12 tgt joined
tgt masak: Did anyone translate 01-mazes.p6 to Perl 5? 18:13
vendethiel I'm looking at some kind of hole to start backlogging in, but it seems today has been a busy day :-) 18:14
masak Mouq: very interesting. I'm having supper now -- will verify later.
18:15 telex left, telex joined
masak tgt: not to my knowledge, no. 18:16
tgt: feel free -- it would be great to know how much faster the Perl 5 version is.
tgt I just did a quick translation. Takes just under 3s in Perl 5, but results are currently slightly different from the fifth iteration, not sure why yet. (920 vs 917, 2442 vs 2435). 18:19
18:21 cognominal left, cognominal joined
masak interesting. 18:25
18:25 jack_rabbit joined
masak well, at least one of the versions is wrong, then :P 18:25
18:26 anaeem1_ left, orevdiabl left 18:27 revdiablo joined, treehug8_ joined
Mouq tried to run 4x4 last night and saw output at ~30,000 before stopping it this morning (I forgot to prevent my computer from falling asleep) 18:28
18:28 treehug8_ left 18:29 treehug88 left
Mouq Though I may be misremebering severly, since I no longer have the output 18:30
tgt How long can I expect the Perl 6 version to take? It's been running for about 20 minutes so far. 18:31
moritz tgt: it takes 21 minutes on hack.p6c.org with rakudo-moar
tadzik TimToady: it didnot 18:32
I got some strange "Expected Signature, got Any when calling such function"
18:33 mvuets joined
tgt Current Perl 5 version: gist.github.com/tgt/e07a3ba2a82ab4bc9348 18:35
18:36 jluis_ joined
masak tgt: on my laptop it took 32 minutes. 18:43
tgt: surprised you don't get a warning if you omit the parens at gist.github.com/tgt/e07a3ba2a82ab4...le1-pl-L11
looks like a very straightforward translation. nice. 18:44
tgt++
any discrepancies will turn out to be quite enlightening. 18:45
18:47 cognominal left 18:49 pecastro left 18:51 Sqirrel joined, kjs_ joined 18:53 obra left 18:57 xfix left
flussence hi *! I'm trying to use Grammar::Tracer but it's giving me the silent treatment. I've used it before, but it's not working with a moar I built 10 minutes ago... 18:58
PerlJam flussence: are you sure you put "use Grammar::Tracer;" at the top of your code? :) 19:01
flussence yep, right before the grammar ...; line even
(I've tried putting it in a few places besides that, nothing works...)
19:04 fhelmberger left
flussence oh... MVM_SPESH_DISABLE makes it work. 19:04
PerlJam sounds like either a bug that needs fixing or at least something that should be documented with Grammar::Tracer 19:06
19:07 kjs_ left
TimToady p6: for <aa aba> xx 50 { if not m/b/ { print "."; next }; print "!"; }; say ""; 19:10
camelia rakudo-moar 9c74ab: OUTPUT«.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!............................................␤»
..rakudo-parrot 9c74ab: OUTPUT«.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!␤»
TimToady there's a lovely moarvm bug
works right on jvm too 19:11
disabling spesh fixes it 19:13
flussence huh, if I clone the grammar-debugger repo and add to the tests to check for some output, it works fine. Maybe it's a precomp bug... 19:14
PerlJam sounds like disabled spesh is often a good thing :(
geekosaur mrrr. masak should test his little joy with spesh disabled too, perhaps
TimToady however, disabling jit, osr, or inline does not fix it 19:16
19:17 abraxxa joined
TimToady moving discussion of this bug over to #moarvm 19:17
flussence well now I'm just confused; my problem went away without spesh disabled... 19:20
19:21 rindolf left, abraxxa left 19:22 abraxxa joined 19:25 kjs_ joined 19:28 anaeem1_ joined, telex left
dalek ast: ef44fab | coke++ | S17-supply/ (24 files):
:D now works in rakudo.jvm, unfudge
19:28
[Coke] ^^ psch++
whoops, it was D: 19:29
vendethiel :D
19:30 telex joined
psch D: isn't a thing, that's half of :D and the invocant marker 19:30
[Coke] er :D: ?
anyway, unfudged. thanks for doing the hard work. 19:31
psch well, that patch was mostly translating the existing binder to java
...but i suppose the emphasis is on "doing" and not on "hard" :) 19:32
m: my method foo(Str:D :) { "yup, have self: " ~ self }; say foo "foo" 19:34
camelia rakudo-moar 9c74ab: OUTPUT«yup, have self: foo␤»
moritz masak: I have a trivial-ish patch that speeds up your script from 20m55s to 7m57s 19:36
19:36 itz_ joined
moritz masak: the trick is to numify %summetries values up-front, so that it isn't repeated inside the tight loop 19:37
rot1 => +«<15 19 23 14 18 22 13 17 21 12 16 20 2 5 8 11 1 4 7 10 0 3 6 9 24>,
19:37 itz left
moritz and with +« for the other ones too 19:37
tgt masak: Using minstr instead of min in the Perl 5 code causes them to behave the same. 100000000100000100100011 and 100000000100000100110001 are identical when compared numerically since they're too large. 19:43
19:43 kaare__ joined
tgt (Gist updated.) 19:46
19:46 FROGGS joined 19:51 xfix joined, xfix left, xfix joined 19:52 anaeem1_ left 19:53 anaeem1 joined 19:56 obra joined 19:57 anaeem1 left 19:59 rurban joined, Mouq left 20:00 kjs_ left 20:03 kjs_ joined 20:08 zakharyas left 20:11 cognominal joined 20:13 jluis_ left, darutoko left 20:17 mr-foobar left 20:18 mr-foobar joined 20:19 geekosaur is now known as eviltwin_b 20:20 abraxxa left, eviltwin_b is now known as geekosaur 20:25 c0m0 joined
timotimo tadzik, jnthn, the colors in the allocations tab show how many allocations have been made from interpreted, spesh'd or jitted code 20:30
20:32 Mouq joined 20:40 abraxxa joined 20:43 andreoss joined, abraxxa left
andreoss how do i declare state variable within multi subroutine? 20:44
moritz same as everywhere
'state $var;'
psch i think using the same state var over multiple multi candidates isn't obviously possible and you need a wrapper method or somesuch 20:45
andreoss moritz: seems it's not shared between multies 20:46
timotimo psch: not a wrapper method, just put it into the proto method
"just"
moritz andreoss: correct 20:47
andreoss: you could have a common outer scope, and a state variable in there, if you need that
moritz wonders if multis can be inside the proto 20:48
timotimo hm, interesting question
moritz m: proto f(\x) { state $a; multi f(Int $x) { $a += $x }; multi f(Str) { say $a }; {*} }; f 42; f 'a' 20:49
camelia rakudo-moar 9c74ab: OUTPUT«Cannot call 'f'; none of these signatures match:␤ in sub f at /tmp/yHPufhFJpS:1␤ in block <unit> at /tmp/yHPufhFJpS:1␤␤»
Mouq m: proto foo { state $*called = 0; {*}}; multi foo { say $*called++ }; foo
camelia rakudo-moar 9c74ab: OUTPUT«0␤»
20:55 rurban left
lizmat moritz: the multi's inside the proto would not be visible outside unless you made them our maybe ? 20:55
skids Mouq: That's neat. I bet there's somewhere I've failed to use that, (Assuming it is working because it is supposed to.) 20:56
lizmat m: proto f(\x) { state $a; our multi f(Int $x) { $a += $x }; our multi f(Str) { say $a }; {*} }; f 42; f 'a'
camelia rakudo-moar 9c74ab: OUTPUT«===SORRY!=== Error while compiling /tmp/OwCogCehiL␤Cannot use 'our' with individual multi candidates. Please declare an our-scoped proto instead␤at /tmp/OwCogCehiL:1␤------> ate $a; our multi f(Int $x) { $a += $x }⏏…»
lizmat m: our proto f(\x) { state $a; our multi f(Int $x) { $a += $x }; our multi f(Str) { say $a }; {*} }; f 42; f 'a'
camelia rakudo-moar 9c74ab: OUTPUT«===SORRY!=== Error while compiling /tmp/fHL0IbXeKe␤Cannot use 'our' with individual multi candidates. Please declare an our-scoped proto instead␤at /tmp/fHL0IbXeKe:1␤------> ate $a; our multi f(Int $x) { $a += $x }⏏…»
lizmat m: our proto f(\x) { state $a; multi f(Int $x) { $a += $x }; multi f(Str) { say $a }; {*} }; f 42; f 'a'
camelia rakudo-moar 9c74ab: OUTPUT«Cannot call 'f'; none of these signatures match:␤ in sub f at /tmp/AbnXREYpl8:1␤ in block <unit> at /tmp/AbnXREYpl8:1␤␤»
lizmat alas 20:57
TimToady: is there a reason there is no autogenerated signature: (self: *@_, *%_) on methods ? 20:59
m: class A { method a { .say for @_ } }; A.a(1,2,3) 21:00
camelia rakudo-moar 9c74ab: OUTPUT«===SORRY!=== Error while compiling /tmp/qo1_ea5vW2␤Placeholder variables cannot be used in a method␤at /tmp/qo1_ea5vW2:1␤------> class A { method a { .say for @_ } ⏏}; A.a(1,2,3)␤»
lizmat m: class A { method a(*@_) { .say for @_ } }; A.a(1,2,3)
camelia rakudo-moar 9c74ab: OUTPUT«1␤2␤3␤»
21:00 virtualsue left 21:01 vendethiel left
moritz masak: I've tried some more optimizations, but +« is the only one worth it 21:03
timotimo tadzik: i'm very strongly hoping Escape Analysis and stack-allocations will make eliminating scalar container allocations manually a thing of the past 21:04
at some point in the future ...
masak tgt: ooh, I'm glad the bug was on the Perl 5 side for once :> 21:05
TimToady lizmat: well, only that @_ is a sop to P5 programmers in the first place, so extending it to methods seemed like gilding a pig's ear
lizmat sop? 21:06
TimToady other than that, it would certainly make sense to allow it in methods
hmm
masak moritz: trying your speedup.
lizmat standing operating procedure ? 21:07
FROGGS lizmat: www.dict.cc/?s=sop
timotimo .o( gilding a pig's ear? )
hobbs lizmat: no, like... concession.
lizmat pacifier ok, I can go with that
TimToady no, a bribe, a sweetener
hobbs that too 21:08
FROGGS nine would say 'Zuckerl' :o)
lizmat so, don't we need to bribe P5 class programmers as well :-)
TimToady sorry, all my native english seems to have leaked out all at once :)
lizmat hands TimToady a blanky
masak "something given to pacify or quiet, or as a bribe", says dictionary.reference.com/browse/sop 21:10
TimToady like what you give a baby to suck on so it doesn't cry 21:11
except I've never heard a baby pacifier called a 'sop'
masak @_ ==> baby
TimToady looks more like a perambulator
21:12 bartolin left
TimToady other than 'pacifier', I've heard 'plug' and 'binky' 21:12
timotimo and then there's the words the little ones invent to refer to the pacifier 21:14
TimToady specifically, however, a sop is something porous that you've dipped into a liquid and given to someone
quite a complicated valence
21:14 vendethiel joined
TimToady 'pah', for one of our kids 21:14
moritz ah, in good old Bavaria that liquid would have been beer, even for babies 21:15
lizmat and in france, it would probably be wine :-)
vendethiel has never drank wine in a family dinner
moritz lizmat: array_slice.pm has lots of occurrences of '+@positions'. Shouldn't @positions.elems be faster? 21:16
lizmat: prefix:<+> dispatches to .Numeric, and .Numeric to .elems
lizmat moritz: will do that
but it won't matter much, I'm afraid
moritz lizmat: I'd do it myself, but I have no idea how to benchmark it 21:17
lizmat to make things like @a[^10] much faster
moritz because I don't know which path triggers it
lizmat we need a separate at_range method, I think
TimToady notes that putting the <0 check into at_pos means every entry of [^10] has to check it
unless we provide an at_pos_raw 21:18
lizmat well, I was more thinking at_range
TimToady well, would probably be _nocheck
lizmat BTW, at the moment this also happens 21:19
timotimo if you implement at_range, that wouldn't "automatically" exist for things that implement at_pos ...
lizmat because @a[^20] internally maps to @a[$_} for ^20 21:20
*]
I actually tried to put a shortcut to at_pos in there
but then all sorts of nested arrays break
21:21 bartolin joined
lizmat timotimo: at_range would be called from circumfix:<[ ]> only for limited Range objects 21:21
with numeric keys, so we can do the bounds check on the first/last element of the range once 21:22
21:22 virtualsue joined
timotimo OK, fair enough 21:22
oooooh my gosh 21:24
lizmat ???
timotimo i can move through the history of CWDs in fish shell just with alt and left and right arrows
that's awesome
TimToady just leaves a different desktop in each directory 21:25
timotimo hehe
TimToady I know that nom/src is two to the right and two down from here 21:27
specs are just down one, nom to the right of that, nom/nqp to the right of that, and nom/nqp/MoarVM to the right of that :)
timotimo have you ever considered a "3d grid" of workspaces? :) 21:28
TimToady that's my other computer :) 21:29
21:29 mvuets left, kjs_ left
masak moritz: yup. 7 minutes, 14 seconds here too. 21:30
moritz: I wonder if there's an optimization could be crammed out of that one.
timotimo out of what exactly? @positions.elems? 21:31
moritz timotimo: pre-numifying a list of strings that is used often
timotimo: in masak++'s maze code
timotimo oh
21:31 xfix left
lizmat masak: hmmm.... seems Array.elems is falling back to List.elems 21:32
timotimo is there an optimization opportunity in that?
lizmat hmmm... I guess we must check for unreified elemens :-(
something for the GLR for sure 21:33
timotimo oh, hm
lizmat on bounded Array's for sure :-)
moritz has an idea for that
can't we check nqp::defined($!nextiter), and only call .gimme if it's defined? 21:35
lizmat moritz: I'm still not sure when I can do that, but I can sure try :-) 21:36
moritz lizmat: I can try too :-)
lizmat be my guest :-)
timotimo gimme also checks if nqp::defined($!nextiter), right? but we probably don't inline that
dalek kudo/nom: 4853cce | lizmat++ | src/core/array_slice.pm:
Faster check for +@positions, moritz++
21:37
TimToady yowsers, euobserver.com/justice/127232
now where would a large group of people be gathering in Belgium...
lizmat I specifically did not touch that, as I hoped it would solve itself when pmichaud continues to work on the GLR
moritz lizmat: you're probably right 21:38
lizmat: I also note that either I have to introduce a new scope, or do a return, both of which might be slower
lizmat yeah :-(
but I do think I can make the [*-1] case faster 21:39
timotimo hm
maybe we could have a global instance of *-1 that we can identity-check and special-case?
because i think *-1 is pretty common 21:40
[Tux] FROGGS++; # Tuxic - it caused my return
TimToady might be able to generalize to *-anything
lizmat well, *-1 is a Callable
timotimo TimToady: perhaps ... perhaps with the 6model parametric extensions :)
lizmat can we distinguish that any other way ? 21:41
TimToady we have control of the parse, so anything is possible :P
FROGGS [Tux]: but I did nothing in that regards lately :o)
timotimo if our optimizer turns all instances of *-1 into the same instance of Callable, we can just $argument eqv (*-1)
[Tux] it still works
lizmat m: (*-1).WHAT.say 21:42
camelia rakudo-moar 9c74ab: OUTPUT«(WhateverCode)␤»
lizmat still, I don't know how to introspect that for the "-1" part
timotimo just let it does an int or something :P
Int*
21:43 kurahaupo joined
TimToady you use that introspect word again, which is evil 21:44
the parser should turn it into a different type 21:45
it could be something derived from WhateverCode
or maybe it could be a specially typed integer that just counts from the end, and happens to respond as a WhateverCode as well 21:49
just optimizing for *-1 is too specific 21:50
timotimo fair enough
21:52 Sqirrel left
lizmat TimToady: the big time sink atm is the gimme(*) on the array 21:56
just to find out how many elements there will be
TimToady gimme is a vast pit of introspection 22:02
timotimo aye 22:04
dalek c: 0e44c0c | moritz++ | lib/Type/IO/FileTestable.pod:
IO::FileTestable: link anchors, mention method form
22:04 skids left
moritz perlpunks.de/paste/show/54b839ca.21f9.313 spectests fine; does anybody know how to benchmark it in a meaningful way? 22:06
shaves off one second off the spectest run, which is just noise
lizmat m: for ^10000 { (1,2,3).list.elems } 22:07
camelia ( no output )
lizmat the difference between the patches is your gain / loss
22:08 rhr left, Ugator joined
moritz ok, my patch makes it slower :( 22:11
erm, no
I compared the wrong way around :-)
time ./perl6-m -e 'my $l := (1, 2, 3).list; loop (my int $i = 0; $i < 100_000; $i = $i + 1 ) { $l.elems }' 22:12
before: 0.61s
after: 0.55s
jnthn TimToady: No, making attribute lookup work in a sub just 'cus there happens to be a \self is probably a bad idea. Just write a private method instead of a sub.
moritz m: say (0.61 - 0.55) / 0.61 * 100
camelia rakudo-moar 9c74ab: OUTPUT«9.836066␤»
moritz ... except that the 0.55s was an outlier 22:13
now I get 0.59s instead
timotimo oh, huh
moritz m: say (0.61 - 0.59) / 0.61 * 100
camelia rakudo-moar 9c74ab: OUTPUT«3.278689␤»
dalek kudo/nom: 0463a4b | lizmat++ | src/core/array_slice.pm:
Streamline @a[*-1]:adverb by about 25%
jnthn PerlJam: Joy, the first MoarVM dynamic optimizer bug I see in literally weeks and you treat it like we have one every day. :/
When was the last time you implemented a VM's dynamic optimizer? 22:14
*sigh*
moritz I'd like to use this opportunity to point out how few JIT bugs we've had
jnthn That also.
moritz I really didn't expect that
PerlJam jnthn: nah, just that I'd seen "works without spesh" like 3 times "all at once" (relatively speaking) 22:15
jnthn The last significant soruce of MoarVM bugs was the various OSX segfaults.
*source
TimToady: I guess we have $*PACKAGE available when compiling the sub so technically we could perhaps make it work. I'm still not sure if it's a good idea... We've kept sub/method pretty separate. 22:16
moritz messed up the benchmarks again
lizmat m: my $a; (1,my $,3).list[1] := $a # should this be allowed ?
camelia rakudo-moar 9c74ab: OUTPUT«No such method 'bind_pos' for invocant of type 'List'␤ in sub postcircumfix:<[ ]> at src/gen/m-CORE.setting:2843␤ in block <unit> at /tmp/rD_n0tQi9x:1␤␤»
22:17 [Sno] joined
moritz I'd also think that making attributes in subs work just because there's a 'self' makes 'self' much more magical than it is now 22:17
PerlJam indeed.
moritz m: say (0.61 - 0.54) / 0.61 * 100 22:18
camelia rakudo-moar 9c74ab: OUTPUT«11.475410␤»
lizmat m: say .54/.61 22:20
camelia rakudo-moar 9c74ab: OUTPUT«0.885246␤»
lizmat is what I usually do and see that's about 11% 22:21
moritz m: say 1 - 54 / 61 # :-)
camelia rakudo-moar 9c74ab: OUTPUT«0.114754␤»
lizmat moritz: turns out I didn't need .elems at all 22:22
moritz lizmat++ 22:23
moritz -> sleep 22:24
lizmat gnight, moritz
22:26 kurahaupo left 22:27 adu joined, kaare__ left 22:28 kurahaupo joined 22:29 sjn left, dagurval_ left 22:36 kjs_ joined 22:37 cognominal left, dagurval joined, sjn joined
psch github.com/peschwa/eigmip6/blob/ma...e-in-c.pl6 heh 22:40
apparently generative music is fun, i hadn't known :P
with all the frameworks for it in some lisp-dialect it's not that easy to find out either 22:41
(fsvo "all")
22:41 Sqirrel joined 22:43 labster_ joined
psch well, maybe it's more "random chords" and not really generative... 22:45
22:45 sven_123_ joined 22:46 nebuchad` joined, mr-fooba_ joined, kshannon joined, nine_ joined 22:47 mls_ joined, moritz_ joined, torbjorn_ joined, Util_ joined, gtodd1 joined, masak__ joined, mattp_ joined, [particle]1 joined, amkrankr1leuen joined, sergot_ joined, Maddingu1 joined 22:48 robins joined, haroldwu_ joined 22:49 bonsaikitten joined, btyler joined, jferrero_ joined 22:50 stux|RC joined 22:51 erdic_ joined, jdv79_ joined, BinGOs_ joined, breinbaa1 joined, sivoais_ joined, petercom1and joined, perlpilot joined, mr-foobar left, revdiablo left, yakudza left, Khisanth left, moritz left, djanatyn left, Spot__ left, masak left, sunnavy_ left, kshannon_ left, synopsebot left, Util left, amkrankruleuen left, ribasushi left, sergot left, atta left, nine left, robinsmidsrod left, muraiki left, [Sno] left, c0m0 left, Psyche^ left, clkao_ left, hugme left, vike left, dylanwh left, go|dfish left, pyrimidine left, cibs left, kurahaupo left, virtualsue left, andreoss left, pdcawley left, ggoebel111111117 left, jakesyl_insomnia left, TuxCM left, tadzik left, Woodi left, mst left, pochi left, ka05 left, MilkmanDan left, Guest22354 left, skaufman1 left, ingy left, daxim left, jnthn left, cxreg left, mtj- left, mathw left, El_Che left, Timbus left, tinita_ left, leedo_ left, spider-mario_ joined 22:52 ribasushi joined, masak__ is now known as masak, Colby` joined, jack_rabbit left, sven_123 left, stux|RC-only left, lue left, mls left, torbjorn left, Pleiades` left, lestrrat left, labster left, felher left, epochbell left, labster_ is now known as labster, Colby` is now known as Pleiades`, Sqirrel left, kjs_ left, bartolin left, tgt left, eternaleye left, lsm-desktop left, hobbs left, revdiablo joined 22:53 anocelot_ joined, xprime joined, Sqirrel_ joined, virtualsue joined, andreoss joined, pdcawley joined, ggoebel111111117 joined, TuxCM joined, tadzik joined, Woodi joined, mst joined, pochi joined, ka05 joined, MilkmanDan joined, Guest22354 joined, skaufman1 joined, ingy joined, daxim joined, jnthn joined, cxreg joined, mtj- joined, mathw joined, El_Che joined, Timbus joined, tinita_ joined, leedo_ joined, jakesyl_insomnia joined, BinGOs left, bartolin joined, BinGOs_ is now known as BinGOs 22:54 Juerd left, lumimies left, mephinet- left, integral left, yogan left, flussence left, dalek left, ggherdov left, skarn left, Vlavv left, geekosaur left, danaj left, haroldwu left, jferrero left, JimmyZ left, nebuchadnezzar left, gtodd left, btyler_ left, xiaomiao left, BinGOs left, BinGOs joined, jakesyl_insomnia left, jakesyl_insomnia joined, epochbel1 joined, [Sno] joined, c0m0 joined, Psyche^ joined, clkao_ joined, hugme joined, vike joined, dylanwh joined, go|dfish joined, pyrimidine joined, sinisalo.freenode.net sets mode: +v hugme, nyuszika7h left, vendethiel left, mtj_ joined, vendethiel- joined 22:55 atta joined, spider-mario left, PerlJam left, ponbiki left, [particle] left, sivoais left, mattp__ left, salv0 left, petercommand left, breinbaas left, Maddingue left, mtj_- left, erdic left, oetiker left, Bucciarati left, Gothmog_ left, TimToady left, anocelot left, jdv79 left, salparadise left 22:56 noganex_ joined, Bucciarati joined, dagurval left 22:57 simcop2387 left 22:58 ggherdov joined, Gothmog_ joined 23:00 sven_123 joined, tony-o_ joined, esaym joined, breinbaas joined, perlfan_ joined, noganex left 23:01 avalenn_ joined, sven_123_ left, sivoais_ left, silug left, haroldwu_ left, kshannon left, BinGOs left, btyler left, moritz_ left, araujo left, kshannon joined, pdcawley_ joined, PerlJam joined, danaj joined, PZt left, Maddingu1 left, SHODAN left, ivan`` left, geekosaur joined, geekosaur left, breinbaa1 left, camelia left, BooK left, ilbot3 left, revdiablo left, ribasushi left, perlpilot left, jferrero_ left, itz_ left, jtpalmer left, profan left, arnsholt left, lizmat_ joined, BinGOs joined, yakudza joined 23:02 labster_ joined, vendethiel joined, oetiker joined, Vlavv` joined, lue joined
lizmat jnthn: is :D the same check as self.DEFINITE ? 23:02
23:02 Hor|zon left, lizmat left, Grrrr left, avalenn left, petercom1and left, erdic_ left, davido_ left, vukcrni left, nwc10 left, obra left, xinming left, tony-o left, awwaiid left, telex left, DarthGandalf left, esaym153 left, psch left, perlfan left, geekosaur joined, Shozan joined, ilbot3 joined, davido_ joined 23:03 sergot joined, Grrrr joined, araujo joined, treehug88 joined, pmichaud_ joined, Sir_Ragnarok_ joined 23:04 DarthGandalf joined, eternaleye joined, Woodi_ joined 23:05 anocelot joined, mattp_ is now known as 17WAAXY9L, muraiki joined, VABY2H2 joined, mattp_ joined, ivan`` joined, felher joined, simcop2387 joined, leedo joined, ivan`` left, camelia joined, torbjorn joined, epochbel1 left, [Sno] left, c0m0 left, Psyche^ left, clkao_ left, hugme left, vike left, dylanwh left, go|dfish left, pyrimidine left, vendethiel- left, anocelot_ left, xprime left, Sqirrel_ left, virtualsue left, andreoss left, pdcawley left, ggoebel111111117 left, TuxCM left, tadzik left, Woodi left, mst left, pochi left, ka05 left, MilkmanDan left, Guest22354 left, skaufman1 left, ingy left, daxim left, jnthn left, cxreg left, mtj- left, mathw left, El_Che left, Timbus left, tinita_ left, leedo_ left, Pleiades` left, stux|RC left, masak left, gtodd1 left, torbjorn_ left, nine_ left, nebuchad` left, labster left, sjn left, jluis left, broquaint left, rmgk left, frew left, Sir_Ragnarok left, zoosha left, labster_ is now known as labster, tinita joined, Juerd joined, lumimies joined, mephinet- joined, integral joined, yogan joined, flussence joined, dalek joined, JimmyZ joined, sinisalo.freenode.net sets mode: +v dalek, felher is now known as Guest19303, frew joined, lestrrat joined 23:06 haroldwu joined, btyler joined, ajr joined, salv0 joined, Pleiades` joined, ajr is now known as Guest37082, rmgk joined 23:07 itz joined, araujo left, arnsholt joined, xinming joined, dalek left, BooK joined, Bucciarati left, atta left, sergot_ left, 17WAAXY9L left, FROGGS left, leont left, dj_goku left, CurtisOvidPoe left, pmichaud left, ruoso left, eMBee left, apejens left, raydiak left, prammer left 23:08 araujo joined, jtpalmer joined, ruoso joined, ChanServ sets mode: +v camelia 23:09 profan joined, jluis joined, tadzik joined 23:10 jack_rabbit joined, silug joined, mephinet- left, cxreg joined, adu left, atta joined, broquaint joined, mtj joined, mst joined, nine joined, ingy joined, leont joined 23:11 ka05 joined, adu joined 23:12 sjn joined, ponbiki joined, dalek joined, ChanServ sets mode: +v dalek, ponbiki is now known as Guest24916, moritz joined, eMBee joined, mst is now known as 77CAABY7Q, VABY4HM joined, zoosha joined, revdiablo joined, skaufman joined, apejens joined, jnthn joined, nwc10 joined, gtodd joined, prammer joined, YUAAFKS9 joined, pochi joined, MilkmanDan joined, bowtie joined, pyrimidine joined, go|dfish joined, dylanwh joined, vike joined, hugme joined, clkao_ joined, Psyche^ joined, c0m0 joined, [Sno] joined, epochbel1 joined, telex_ joined, djanatyn joined, ribasushi_ joined, dagurval_ joined, ggoebel111111118 joined, prime- joined, masak__ joined, ivan`` joined, mathw joined, obra joined, sivoais joined, awwaiid joined, sinisalo.freenode.net sets mode: +v hugme, TuxCM joined, Maddingue joined, stux|RC-only joined 23:13 psch joined, Hor|zon joined, daxim joined, TimToady joined, Khisanth joined, sunnavy joined, Timbus joined, FROGGS joined, Bucciarati joined, petercommand joined, synopsebot joined, raydiak joined, mephinet joined, nyuszika7h joined, Spot___ joined, lsm-desktop joined, hobbs joined, sivoais is now known as 7GHAAMI3M 23:14 telex_ left, masak__ is now known as masak, nyuszika7h left, telex joined, ribasushi_ is now known as ribasushi, bowtie is now known as Guest53643, Khisanth is now known as Guest38736, masak is now known as Guest3703, 7GHAAMI3M left 23:15 skarn joined, jferrero joined 23:16 erdic joined, Guest3703 is now known as masak_grr
masak_grr found this on LinkedIn: gist.github.com/masak/401aeda40b6631ed4ae9 23:16
23:16 nyuszika7h joined
masak_grr is this still an issue? 23:16
23:16 spider-mario_ left 23:17 cibs joined, El_Che joined 23:19 rhr joined 23:20 c0m0 left
Mouq masak_grr: I found I can count the number of mazes without keeping track of the state of the walls 23:22
23:23 CAABZU1 joined, JTAABMSD joined
masak_grr Mouq: count, but not enumerate, right? 23:23
Mouq masak_grr: Well sure, enumerating would entail keeping track of them 23:24
masak_grr hm. I guess that's fine by the original problem specification :) 23:25
23:25 Spot___ is now known as Spot__
Mouq available here, no comments though: gist.github.com/Mouq/a2e7dc887a4a3...quicker-p6 23:26
masak_grr me looks
masak_grr looks
23:29 krunen left 23:31 Spot__ left, Spot__ joined, mephinet left, mephinet joined
masak_grr Mouq: you're still getting 192 3x3 mazes? I have 160, and I'm fairly confident about that number now. 23:33
Mouq: thing is, when you're only getting a *number*, we can't compare our mazes :P
Mouq masak_grr: The first file still generates the mazes 23:34
23:35 YUAAFL3J joined, MABRKDD joined
Mouq masak_grr: Oh, actually I forgot to add the code to make it print like yours does, given --numify. Updated 23:36
(for the first file)
masak_grr Mouq: well, here are my 160 mazes: gist.github.com/masak/bdcb97294af42e31a804
(something about looking at those arrays of mazes reminds me of Unicode CJK code pages) 23:37
Mouq masak_grr: What about the 4 maze symmetries here: irclog.perlgeek.de/perl6/2015-01-15#i_9947672
masak_grr oh, I forgot about those. 23:38
masak_grr looks now
...huh. 23:40
yes, well, I clearly don't have that first one. and I should.
ok, you've convinced me that something is wrong somewhere in my code. 23:41
Mouq masak_grr: Still, your approach is an order of magnitude faster than mine :) 23:42
masak_grr I'll congratulate myself on that when it's correct... :) 23:45
23:46 sivoais joined
masak_grr oh, I see what's happening. 23:47
my algorithm doesn't allow two edges to grow out of the same corner. 23:48
that's what all my missing solutions have in common: a 90-degree corner in the middle of the maze.
23:48 sivoais_ joined 23:49 Perl6Fanboy joined
masak_grr oh, it's lovely to be wrong :> 23:49
23:50 Perl6Fanboy left
masak_grr in the case of the "melting" algorithm, as maz3 was, the two walls in a corner end up protecting each other from melting, even though they are both fringe edges. 23:51
dalek ecs: f076396 | hoelzro++ | S05-regex.pod:
Don't use accessor methods in their own implementation

  &name should not be defined in terms of &name with no terminating
condition
23:52
23:55 sivoais left, treehug88 left
hoelzro I would like to add some text describing how Grammar actions' methods work with look[ahead|behind]; where would that go best? 23:56
El_Che ladies and gentlemen, le voila: fosdem.org/2015/schedule/track/perl/ 23:58
masak_grr \o/
El_Che wendy harassing you all == results :)