»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
raiph m: pir::foo__bar() 00:03
camelia rakudo-moar 315ec6: OUTPUT«===SORRY!===␤To compile on the MoarVM backend, QAST::VM must have an alternative 'moar' or 'moarop'␤»
raiph m: pir::foo_bar() 00:04
camelia rakudo-moar 315ec6: OUTPUT«===SORRY!===␤pir::foo_bar missing a signature␤»
00:06 pat_js left
raiph sjn: ^^ seems to be from trying to run on moar code with calls to pir: (parrot) ops with __ in the name ? 00:07
s/on moar/(on moar)/ 00:09
sjn raiph: yeah, that may be it 00:10
my $client = mysql_init( pir::null__P() );
is there a way around that?
psch r: $*VM.config.keys.grep("moar").say 00:11
camelia rakudo-moar 315ec6: OUTPUT«moar␤»
..rakudo-parrot 315ec6: OUTPUT«␤»
psch ISTR there was something about parrot that'd get fixed soonish, but i have no idea if your problem is related 00:12
sjn ok 00:13
00:14 grondilu left
psch sjn: although, in the end your problem is a pir op appearing to moar, which actually shouldn't happen 00:16
i'd still lean towards "the module doesn't seem well maintained", although i'm not completely sure what you're working with there 00:17
sjn psch looking at the examples in zavolaj 00:20
raiph sjn: was there a message of the form "Error while compiling op xxx: " just prior to the "To compile on..."? 00:21
sjn raiph: no, this was when actually trying to *run* the mysql example in zavolaj 00:22
under moar
hm, the postgresql example seems to work 00:23
good enough for me 00:24
raiph k
dalek rl6-roast-data: 8226dcd | coke++ | / (5 files):
today (automated commit)
00:27
[Coke] 3 failures on moar-jit, 97 on moar-nojit, 7 on jvm. parrot is clean 00:28
00:28 bcode left 00:29 bcode joined 00:31 Ven left
timotimo someone get us out of this mess! 00:46
psch: yeah, unbase is a regular sub call under the hood 00:48
if we want it to curry into WhateverCode, we'd have to special-case it
00:52 Ben_Goldberg joined, BenGoldberg left, Ben_Goldberg is now known as BenGoldberg
psch i remember that there was a discussion about auto priming min, but i can't find it anymore 00:53
although i supposed "methods and operator-looking-sub auto prime" is a decent guideline
timotimo: i don't particularly want colon-pair unbase to be autoprimed. Whatever just looked more generally applicable in my mental model 00:54
but blocks with placeholders are the general case, and Whatever is sugar for some cases, which i'm ok with 00:55
psch .oO( although i think that's also not *quite* correct...)
m: my @a = <1 2 3>; @a[{$^a} - 1].say
camelia rakudo-moar 315ec6: OUTPUT«Cannot call 'Numeric'; none of these signatures match:␤:(Mu:U \v: *%_)␤ in sub infix:<-> at src/gen/m-CORE.setting:4476␤ in block <unit> at /tmp/vBMu5s87pl:1␤␤»
psch m: my @a = <1 2 3>; @a[* - 1].say 00:56
camelia rakudo-moar 315ec6: OUTPUT«3␤»
psch shrugs.
m: my @a = <1 2 3>; @a[+@a - 1].say
camelia rakudo-moar 315ec6: OUTPUT«3␤»
psch .oO( superstitious plus )
vendethiel whoops, time to sleep 01:00
g'night, #perl6 :-)
psch 'night vendethiel 01:01
raiph \o ven 01:05
01:05 kjs_ joined 01:12 leont left 01:47 raiph left 01:48 pecastro left 01:53 kjs_ left
psch sleep & 01:59
01:59 psch left 02:05 pecastro joined 02:34 chenryn joined 02:36 chenryn left 02:39 chenryn joined 02:48 Mso150_e left 02:52 chenryn left 02:56 Mso150_e joined 03:21 erkan left 03:22 erkan joined, erkan left, erkan joined
raydiak we need more 6ers in like new zealand and eastern russia to fill this daily lull in my entertainment^W^W#perl6 :) 03:23
03:37 thou joined 03:38 Mso150_e left 03:39 Mso150_e joined 03:44 tinyblak joined 03:47 thou left 03:49 tinyblak left 03:54 raiph joined 03:59 rmgk is now known as Guest21073, rmgk_ joined, Guest21073 left, rmgk_ is now known as rmgk 04:09 BenGoldberg left 04:20 Mso150_e_i joined, Mso150_e left 04:27 tinyblak joined 04:35 raiph left
j4janicej raydiak: Will Western Canada work?! 04:43
-!
fuck
raydiak heh why not? 04:47
j4janicej: puts you in the same time zone as me, if I'm not mistaken 04:48
j4janicej raydiak: you're mistaken but you're real close :)
i'm not a perler, but i wish i was :P 04:49
my focus has been on resolving gender identity issues
raydiak perl is a good hobby to have 04:50
j4janicej not really
05:04 xenoterracide_ left 05:20 Mso150_e_i left 05:21 Mso150_e_i joined 05:39 jfredett joined 05:52 Mso150_e_i left 05:53 Mso150 joined 06:13 anaeem1 joined 06:31 tinyblak_ joined 06:32 anaeem1 left 06:35 tinyblak left 06:38 tinyblak_ left 06:39 tinyblak joined 06:41 tinyblak_ joined 06:44 tinyblak left 06:47 chenryn joined 06:56 jfredett left 06:57 bjz left 07:08 Mso150 left 07:09 Mso150 joined 07:18 molaf_ joined 07:19 molaf__ left 07:28 Mso150 left 07:29 Mso150 joined 07:30 chenryn left 07:36 [Sno] left, [Sno] joined 07:38 kaare_ joined 07:50 gfldex joined 07:58 lasse joined
moritz \o 08:00
08:10 notfix is now known as xfix 08:15 darutoko joined 08:19 kurahaupo joined 08:20 Isp-sec joined 08:25 FROGGS joined 08:28 chenryn joined 08:29 salv0 left 08:35 datums_nb joined 08:37 bjz joined
vendethiel .u doughnut 08:42
yoleaux U+1F369 DOUGHNUT [So] (🍩)
vendethiel ...
08:42 molaf_ left 08:43 molaf_ joined 08:46 salv0 joined 08:54 [Sno] left 08:56 [Sno] joined 08:59 yaketyyak joined, yaketyyak left 09:22 chenryn left 09:27 kjs_ joined, tinyblak joined 09:29 tinyblak_ left 09:32 bjz left 09:33 bjz joined, Mso150 left, Mso150_a joined 09:42 tinyblak left 09:43 tinyblak joined 09:45 Alina-malina left 09:47 Alina-malina joined 10:10 virtualsue joined 10:15 datums_nb left 10:17 rindolf joined 10:20 spider-mario joined 10:24 sqirrel_ joined 10:26 xfix is now known as notfix 10:29 oetiker_ left, oetiker left 10:42 Mso150_a left
masak vendethiel: I feel like there's something awesome I'm not quite getting about the metacircularity I just implemented. 10:46
vendethiel: it's like, ok, now I have the interpreter implemented using only a few primitives that the interpreter defines. I get that part. in a sense, it's beautiful, and... economical. 10:47
vendethiel: but I'm not getting the religious experience conveyed in weblog.raganwald.com/2006/11/signif...ar_22.html , for example.
"This is the other half of the power of Lisp: if you want to change deeper fundamental language features like whether you have a Lisp-1 or a Lisp-n, or whether all evaluation is lazy, or…, or…, or… you can, because Lisp interprets Lisp and Lisp compiles Lisp." 10:48
feels like the only thing I've managed so far is to make my original Perl 6 `eval` run slower, by implementing a Lisp `eval` on top of it ;) 10:49
I *suspect*, but cannot prove, that this is because I need to "close the circularity" in more places than I have so far. 10:50
10:58 oetiker joined 10:59 Guest1419 left
masak thinks 11:03
basically, any newfound power/flexibility needs to rely on the fact that there's now an `eval` function in the language, which can do dynamic interpretation.
11:13 ghostlines joined
vendethiel masak: I'm not the one saying "wow, lisp is easy to implement in lisp" :) 11:21
(ftr, that quote put dijkstra away from lisp for a long time :P)
dalek nda/reporter: 5094916 | (Tobias Leich)++ | bin/panda:
implement panda option "smoke"
vendethiel and, I said it before I think, lisps made some sacrifices to remove some meta-circularity for performance reasons 11:22
masak: did you push? 11:23
.oO( a meta-circular dougt-nut 🍩 )
11:36
11:37 virtualsue left
masak vendethiel: I'm just trying to understand the details of the charm of metacircularity. 11:40
vendethiel charm's not my biggest asset :P 11:41
masak: why do you like operators being able to be written in perl6
both for the implementor and for the user?
masak I like two things about that. 11:42
(a) I can define an operator, and it's instantly available in my scope. that's me, the user, *extending the language*. 11:43
(b) I also think it's way cool that Perl 6 takes seriously the idea that operators are just funnily-spelled subroutines.
vendethiel for me, I add (c) I like the fact that the *language* uses the same constructs as the *user*
masak: maybe relating those points to metacircularity can help :) 11:44
masak why is (c) a practical benefit, as opposed to a "wow, that's neat" thing?
but yes, I see your point about all this relating to metacircularity. 11:45
interestingly, though, Perl 6 (as implemented in Rakudo) isn't metacircular.
NQP is, in the sense that C is. (but not in the sense that Lisp is, I think)
vendethiel because that means (a) it's not magical and faery thingie (b) it obeys rules I know (c) I'm familiar to and able better comprehend/relate/understand it
11:46 denis_boyun_ joined
vendethiel nothing can be crazy, or at least not crazier than what I can do myself 11:46
to me, this kind of power means "not much language magic"
masak got it.
vendethiel I don't have any answers, btw. I only have pointers. I'm interested in answers as well 11:47
python as a language is saner than ruby. In "theory", it's a safer option with less corner cases. But interestingly, ruby's craziness (perlness?) has it with a lot of good APIs (imho) 11:49
.oO( it's easy with EVAL )
11:50
11:53 erkan left
masak *nod* 11:56
awww. I found a really cute use for an introspective macro in some piece of code I was writing. it would genuinely eliminate boilerplate from my code.
but when I try it, I run into some well-known lexical macro bugs. 11:57
masak makes a note to try this again later after fixing said bug
vendethiel ha! :) 11:58
(what was it?)
11:58 sqirrel_ left
masak the bug, or the macro? 11:59
vendethiel I think I know the bug 12:00
so, the macro
masak mind if I keep it to myself until I can write it up properly? ;)
it would be so much cooler to show if it actually worked.
vendethiel alrighty.
masak even though the introspection it does is textual -- no Qtrees yet. 12:01
vendethiel m: say quasi{1} eqv quasi{1}
camelia rakudo-moar 315ec6: OUTPUT«False␤»
vendethiel masak: ^ how do I introspect?
masak m: macro foo($expr) { say $expr.Str; Nil }; foo "OH HAI" 12:02
camelia rakudo-moar 315ec6: OUTPUT« "OH HAI"␤»
masak m: macro foo($expr) { say ~$expr; Nil }; foo "OH HAI"
camelia rakudo-moar 315ec6: OUTPUT« "OH HAI"␤»
vendethiel I guess :-)
it's *not really* what I'm looking for, but close enough
masak cf "purely textual" above.
I agree it's not optimal :) 12:03
but it... opens up certain doors.
vendethiel the question being... 12:04
do you want to open these doors?
.oO( macros are more of an ethical and philophical issue, or so it seems )
12:05
12:07 leont joined
masak I want to open these doors. in the long run, I want to open them with Qtrees, not with text. 12:08
and yes, there is ethics in there. but the same could be said about giving users access to subroutines. very dangerous tech!
12:13 wollmers joined
wollmers .tell timotimo thx for %target.push: %(<a b a b>.pairs).invert; I will use it in my port port of Algorithm::Diff. 12:17
yoleaux 1 Nov 2014 08:59Z <FROGGS_> wollmers: It looks like /:P5\X/ is post NFG... because right now "E\c[COMBINING GRAVE ACCENT]" ~~ /./ only matches 'E'
12:17 chenryn joined
yoleaux wollmers: I'll pass your message to timotimo. 12:17
12:20 chenryn left 12:21 chenryn joined
dalek rlito: af53198 | (Shlomi Fish)++ | / (3 files):
Made the error messages better.

Now /usr/bin/node displays the message's text and a backtrace. Thanks to Havvy from #Node.js on Freenode for some insights.
12:23
12:25 wollmers left 12:26 kurahaupo left 12:30 kjs_ left, [Sno] left 12:31 danaj joined 12:41 cognominal joined 12:42 PZt left 12:51 isBEKaml joined 12:59 virtualsue joined 13:05 ab5tract joined, [Sno] joined 13:12 denis_boyun_ left 13:13 chenryn left
ab5tract hmmm... i baggified (<=) before noticing that (<+) seems to be conceptually exactly the same 13:14
13:14 chenryn joined
ab5tract as a baggified (<=), at least as far as i reasoned it 13:15
13:16 isBEKaml left
ab5tract does it make sense to have a separate baggy-specific operator here? 13:18
13:19 ghostlines left 13:22 isBEKaml joined
ab5tract it almost feels as if it is a holdout from before MMD was implemented? 13:23
timotimo unlikely, we must have had MMD for a very long time 13:29
yoleaux 12:17Z <wollmers> timotimo: thx for %target.push: %(<a b a b>.pairs).invert; I will use it in my port port of Algorithm::Diff.
13:29 chenryn left 13:30 chenryn joined
ab5tract timotimo: hmmm.. do you have any thoughts on the overlap? should (<=) be left set only? what about (<)? because there is not a strict Baggy subset operator currently 13:34
timotimo hm, good question
i don't have a good intuition on that yet; have mostly been concerning myself with sets rather than bags 13:35
and then there's Mixes as well
are they called mixes still?
ab5tract haven't heard anything about mixes
timotimo basically bags with Num values
rather than Int
ab5tract that's a pretty confusing name 13:36
ab5tract just notices them for the first time on: doc.perl6.org/language/Sets_Bags_an...#class_Mix 13:37
here is the only mention in set_operators.pm: sub mix(*@args --> Mix) { Mix.new(@args) } 13:38
timotimo hmm
13:39 chenryn left
ab5tract and i don't see a test file for mixes in S03-operators 13:39
whereas set and bag both have files 13:40
timotimo m: say Mix
camelia rakudo-moar 315ec6: OUTPUT«(Mix)␤»
13:41 chenryn joined 13:42 pecastro_ joined 13:43 pecastro left 13:44 cognominal left, raiph joined
ab5tract m: my $m = mix( %( 1 => 2.3, 2 => 0.7 ) ); my $n = mix( %( 1 => 3.3, 2 => 1.7 ) ); say $m (<+) $n 13:49
camelia rakudo-moar 315ec6: OUTPUT«False␤»
ab5tract m: my $m = mix( %( 1 => 2.3, 2 => 0.7 ) ); my $n = mix( %( 1 => 3.3, 2 => 1.7 ) ); say $m (<) $n
camelia rakudo-moar 315ec6: OUTPUT«False␤»
ab5tract m: my $m = mix( %( 1 => 2.3, 2 => 0.7 ) ); my $n = mix( %( 1 => 3.3, 2 => 1.7 ) ); say $m (<=) $n
camelia rakudo-moar 315ec6: OUTPUT«False␤»
ab5tract all of which should return true 13:50
at least, in my opinion
masak agrees 13:51
timotimo yup 13:52
ab5tract i'm willing to code that in :)
however, i'd argue that (<+) doesn't add anything 13:53
if (<=) is meant to DWIM for bags and mixes
timotimo what is the supposed role of <+? 13:54
ab5tract "Returns True if $a is a Baggy subset of $b, i.e., if all the elements of $a are in $b and each argument of $a is weighed at least as heavily as the element is in $b." 13:55
timotimo huh.
ab5tract sorry, that is for (>+)
timotimo: hence my suspicion about MMD being missing... otherwise it's existence barely makes sense 13:56
maybe masak has a clue?
masak the only thing I can think of is that they maybe somehow differ in their coercion behavior. 13:59
but I struggle to see how that'd matter for comparison ops. 14:00
we have something similar going on, for example, between && and ?&
m: say 42 && "OH HAI"
camelia rakudo-moar 315ec6: OUTPUT«OH HAI␤»
masak m: say 42 ?& "OH HAI"
camelia rakudo-moar 315ec6: OUTPUT«True␤»
masak so (x ?& y) is the same as ?(x && y) 14:01
except that I think that ?& also doesn't short-circuit.
m: sub bar { say "no short-circuit!"; True }; say ?(0 && bar)
camelia rakudo-moar 315ec6: OUTPUT«False␤»
masak m: sub bar { say "no short-circuit!"; True }; say 0 ?& bar
camelia rakudo-moar 315ec6: OUTPUT«no short-circuit!␤False␤»
masak right.
ab5tract masak: as far as i can tell, there is no coercion in the comparison ops 14:02
masak I could see coercion from Bag to Set being relevant sometimes.
there are some bags one which would be smaller than the other (because different element counts) 14:03
ab5tract erm, sorry. that's not a true statement. we coerce from Any to Set
masak but projected down as sets they could be equal (because same elements)
ab5tract right
masak actually, the same thing might happen when projecting from mixes to bags
so *if* all the ops would survive, I'd say they'd have to survive based on a difference in coercion like that. 14:04
otherwise -- if it can be shown there is no such difference -- then yeah, we probably have too many right now :)
ab5tract but wouldn't it be better to lift any coercion out of the ops themselves?
so if you want to check the bag as a set with (<), you would call $bag.Set (<) $other.Set 14:05
masak there's an argument can be made for that, yes.
and maybe it should be.
ab5tract of course Any -> Set coercion would still make sense as a default
masak if that road is taken, it makes sense for the comparison ops we have left to use as much information in the operands as possible -- that is, always perform the moral equivalent of a mix comparison. 14:06
but I hasten to add that the default in Perl tends to be to place the coercion in the operator.
14:06 telex joined
ab5tract i'm not sure i see another approach that doesn't involve creating two new ops for bags ( we are missing strict subbag and strict superbag ) and four new ops for mixes 14:06
masak *nod*
timotimo coercing "Any" as a general rule could only ever result in Bag, not Mix 14:07
if you have a Hash, though, that could result in a Mix
ab5tract timotimo: well, currently all Any's coerce to Set for the comparison (excluding for now (<+) in the discussion) 14:08
i would put it like this
(Any, Any) -> Set behavior
(Set, Any) -> Set behavior
14:09 spider-mario left
ab5tract sorry, that should be (Set, Any) || (Any, Set) 14:09
(Bag, Any) || (Any, Bag) -> Bag behavior
etc
that way we still have sensible coercion
within the op itself, without blowing up the number of ops 14:13
btw, is it possible that parameter values can be an infinite list?
because coercion for LoLs in a set operator like (^) is also very complicated.. should it only ever coerce based on it's first argument? 14:14
[(^)] $a.Set, $b.Bag, $c.Bag # should that coerce all the bags to sets or the set to bags? 14:15
if the list is finite, you could give precedence to bags over sets
but if not...
14:17 chenryn left
ab5tract the whole lazy list thing is new ground for me, so i might not be thinking about it correctly 14:17
14:18 chenryn joined
masak it doesn't make sense to me that the coercion happen based on knowledge of all the elements of the list. 14:20
it should happen pairwise, for each application of (^)
or not at all
I guess because I consider (^) to be a binary op, not a chaining op. rightly or wrongly. 14:21
ab5tract that makes sense to me 14:22
i should have chosen a different op for the example :) 14:23
masak no, it's very interesting that you choose this one. 14:27
because I'm kinda changing my mind :)
ab5tract heh
masak m: say True ^ True 14:28
camelia rakudo-moar 315ec6: OUTPUT«one(True, True)␤»
masak m: say ?(True ^ True)
camelia rakudo-moar 315ec6: OUTPUT«False␤»
masak m: say ?(True ^ True ^ True)
camelia rakudo-moar 315ec6: OUTPUT«False␤»
masak yeah.
m: say True ^^ True
camelia rakudo-moar 315ec6: OUTPUT«Nil␤»
ab5tract i poked at it before, and then got to this exact question and wasn't able to progress further
masak m: say True ^^ True ^^ True
camelia rakudo-moar 315ec6: OUTPUT«Nil␤»
masak ^ and ^^ are clearly chaining in nature.
so maybe for consistency, (^) should be, too. 14:29
14:31 raiph left
ab5tract okay, so the precedence would be: mix > bag > set ? 14:32
masak not sure which way you mean that. 14:35
but it would make sense to me if it always used the simplest type it could for the result.
14:36 guru joined, guru is now known as Guest76075, Guest76075 is now known as ajr_
ab5tract in terms of precedence: Mix (<) Bag # coerce Bag to Mix 14:36
Set (<) Bag # coerce Set to Bag 14:37
but actually when i am thinking about it, using the simplest if the arguments are not homogeneous also makes sense 14:40
and perhaps more so :)
masak no, I think we mean the same thing. 14:42
I meant the simplest it *can*, without losing data.
ab5tract oh :)
masak so I agree with your two concrete examples.
14:44 ilbot3 left
ab5tract \o/ 14:44
14:45 ilbot3 joined
ab5tract so then, should i take the approach of adding multi signatures for each combination, or should i take the approach of coercion within a single Any,Any sub based on inspecting the types of the operator? 14:46
considering that the logic for computing all of them will look the same, ie: so [&&] $a.keys.map({ $a{$_} > $b{$_} }) 14:47
14:48 isBEKaml left
masak (a) whatever makes the tests pass (b) that looks nice 14:48
ab5tract i was wondering if there were performance implications in either approach 14:49
masak that's not a question that we can/should try to answer without measuring anyway
the JIT is already more clever than we are
ab5tract hehe
it's a shame, junctions would really make the single sub approach a lot more comfortable 14:50
gist.github.com/ab5tract/7b8d2a82a2674f4d41be 14:54
14:58 raiph joined
ab5tract masak: i updated the gist with two potential approaches. one is more human intensive, the other i can only imagine is more computer intensive. but maybe there is a cheaper way to approach what i am using th junction + given/when for 15:05
masak have you run either variant against the spectests? 15:06
ab5tract i haven't met spectests yet
ab5tract goes for a look 15:07
vendethiel oh, fosdem is in bruxelles? 15:09
masak always in Bruxelles, AFAIK. 15:19
vendethiel I was worried I couldn't be back to france on that because of traveling stuff. But I can do france->bruxelles in like an hour 15:20
15:22 grondilu joined
grondilu will there be P6-related stuff in FOSDEM? 15:22
masak yes.
vendethiel yep
moritz when implementing a game with several phases (where each phase has different rules), how do I best do that? 15:36
15:36 gtodd left
moritz have different rulesets for each phase, and a state machine? 15:36
vendethiel moritz: a state machine of a class Rule?
moritz vendethiel: currently I tend to think that the state (machine) lives inside the Game, and the Game object has a ruleset for each phase 15:38
and maybe a Ruleset also returns the next phase 15:39
vendethiel you have to make sure you won't lose the game *g*
yes, it makes sense to me as well
moritz in sovjet russia, the game loses me :-)
masak states as objects makes sense to me. 15:40
all states implementing some common interface.
vendethiel y u state? :p 15:41
15:45 gtodd joined 15:52 padllepop joined
masak ...because a state machine has states? 15:53
if it makes you feel all warm and fuzzy inside to think of it as a graph of labeled nodes with purely functional transitions, then you have my blessing. :P 15:54
15:55 padllepop left
vendethiel I'm kidding, I'm kidding. 15:57
masak .oO( it was a referentially transparent joke! ) 16:08
16:13 anaeem1 joined 16:15 ghostlines joined 16:24 colomon left 16:25 colomon joined 16:27 jfredett joined
raydiak \o 16:27
vendethiel o 16:30
raydiak omg ven where did your arm go!?
16:30 molaf_ left
vendethiel I don't know :(. And damn, it was already painful with only one, but now... 16:31
raydiak haha...working on anything interesting? 16:32
vendethiel nope. php. 16:33
raydiak guess it can't all be fun and games :) 16:34
16:36 kuimacro joined 16:37 chenryn left 16:44 Alina-malina left 16:45 Alina-malina joined, molaf_ joined, tinyblak left 16:46 tinyblak joined 16:51 adu joined
[Coke] tries to fix his daughter's linux laptop and tries not to just throw it in the garbage. :P 16:51
16:52 zakharyas joined 16:55 rindolf left 16:57 Alina-malina left
grondilu [Coke]: which distrib? (just curious) 16:58
ab5tract does 'make spectest' give benchmark data? 17:00
timotimo "time make spectest" would 17:01
ab5tract ok
timotimo it'd not be terribly precise, mind you
17:02 Alina-malina joined
ab5tract i'm just curious how to satisfy my curiousity for which approach is better: gist.github.com/ab5tract/7b8d2a82a2674f4d41be 17:03
erm, yes, that's me, curious^2 17:04
timotimo i don't think the junction approach will work particularly well :(
17:05 ptc_p6 joined
timotimo but i'm first afk 17:05
[Coke] grondilu: ubuntu- the self update to 14.1 froze the machine, now it's unbootable. tryingt o make a usb key to boot from, but that also is unbootable. I can see my kid's home dir if I drop into recovery mode, but have no way to get the stuff off. Will bring it into work tomorrow and see if I can get someone with more experience to help me out.
17:05 erkan joined
ab5tract [Coke]: my suggestion would be to try a different distro on the usb key. if that boots you can mount the home directory and transfer off whatever you want 17:08
something like crunchbang
17:09 tinyblak_ joined, tinyblak_ left, tinyblak_ joined
itz I can recommend "Recovery is Possible" (RIP) linux distro for repair 17:10
ab5tract timotimo: that can also be unravelled out of using a junction to ` if $a ~~ Mix or $b ~~ Mix {} `
17:11 tinyblak left
ab5tract but yeah, it seems to me that the better way will be individual multi definitions which cover all the combinations 17:11
[Coke] itz, ab5tract, thanks. 17:12
(part of my issue is that the other machine I have to make the keys is an os x box, which makes me question some of the directions I'm trying. I -think- I'm using the mac to create a pc bootable key, but Iunno. :)
itz depending on distro dd(1) may work for USB key install 17:14
although not always :
:)
17:16 raiph left, oetiker left, Isp-sec left, araujo left, exixt left, cosimo left, aindilis` left, Alula left 17:20 raiph joined, oetiker joined, Isp-sec joined, araujo joined, exixt joined, cosimo joined, aindilis` joined 17:21 tinyblak joined 17:23 virtualsue left 17:24 virtualsue joined 17:25 tinyblak left, tinyblak_ left, virtualsue left, tinyblak joined
timotimo ab5tract: the optimizer can only unravel these junctions syntactically 17:26
the given/when will not allow it to do that
17:27 virtualsue joined 17:29 khisanth_ is now known as Khisanth
ab5tract timotimo: i meant i could manually unravel them :) 17:31
timotimo you can manually write "if $a | $b ~~ Bag" 17:32
that could work, but i'm not sure if the optimizer does that for ~~, because ~~ directly translates to .ACCEPTS
in fact, i don't think it does work
ab5tract right
then i will go the long-hand route
timotimo quite sadly, having elegant code in the setting is not always an option ;( 17:33
vendethiel yeah, you have to leave timo write some code as well!
the guy wants to participate
17:34 jepeway joined
timotimo wow, sick burn 17:34
vendethiel i k r m 7
timotimo u wot m8
vendethiel hugs his timo 17:35
.oO( yer a timo, timo )
17:36 tinyblak_ joined
jepeway ola, #p6 17:37
m: $*TZ = 0 # worky?
camelia rakudo-moar 315ec6: OUTPUT«Cannot modify an immutable Int␤ in block <unit> at /tmp/YCPQZ_Oe9u:1␤␤»
vendethiel m: my $*TZ = 1;
camelia ( no output )
jepeway aha! tyvm, ven. 17:38
um...why worky?
vendethiel m: my $a ::= 1; $a = 2; 17:39
camelia rakudo-moar 315ec6: OUTPUT«Cannot assign to an immutable value␤ in block <unit> at /tmp/evZKDyfYyt:1␤␤»
vendethiel oh, that's implemented?
17:40 tinyblak left
jepeway just notices that clogs auto-update, no more button-mashing 17:41
moritz jepeway: not intentionally; I think that using the space bar for scolling also triggers the button, or something 17:44
ab5tract timotimo: it was hard to imagine that having a code block with conditional logic would somehow work better than leveraging multi method dispatch
17:45 raiph left
ab5tract if so, it would indicate to me that MMD would need optimizing 17:45
timotimo very much depends
ab5tract go on :)
timotimo sometimes we can do the dispatch at compile time, sometimes we can do it at spesh time, we can always have a little cache at spesh time to give a little boost if it happens to be right the next time 17:46
17:46 tinyblak_ left
timotimo er, we *will* always have a little cache 17:46
ab5tract ok
17:47 tinyblak joined
ab5tract but is that VM-independent? 17:47
timotimo no
spesh is only on moarvm
jvm does what it wants :P
17:47 aindilis` left
vendethiel jvm does stuff. Might be what it wants, might be what you want, might be what the universe wants :P 17:47
17:47 ugator joined
ab5tract right 17:47
17:50 FROGGS_ joined
jepeway moritz: could be browser-based behavior, i s'pose (safari, fwiw) 17:50
moritz jepeway: I've observed the same on firefox, so it's likely my sloppy js+DOM knowledge 17:51
ab5tract then it seems to me that i shouldn't be coding to the optimizer but rather to a baseline "less costy" approach, no?
timotimo "the optimizer" is cross-backend, but only works on the AST 17:52
17:53 tinyblak_ joined
ab5tract i see! that's good news. to the JIT then 17:53
timotimo mhm
17:53 Sqirrel left
timotimo well, at least having natives variables is very good for all backends 17:53
17:53 FROGGS left
timotimo of course the jit on moarvm and jvm's code-gen both get very happy when they see native variables 17:54
17:56 tinyblak left
timotimo well, to be fair, parrot is also happy about native vars 17:56
moritz timotimo: did you manage to fix your GC+nativecall issue? 17:58
from yesterday or Friday or so 17:59
timotimo yes, it turned out i modelled the CStructs from SDL with completely wrong sizes and SDL wrote some data over the boundaries of these structs 18:01
so it was my fault, really
moritz timotimo: still, cookies were promised. /msg me your snail mail address :-)
18:02 anaeem1 left
timotimo omygosh! cookies! 18:04
18:06 ghostlines left 18:11 kjs_ joined 18:14 vendethiel- joined 18:16 vendethiel left 18:22 kernel joined, kernel is now known as Guest97255 18:23 Guest33617 left
timotimo hum 18:25
generating an enum at compile time is giving me trouble of the "cannot invoke null object" kind
oh, i think i know what i did wrong
jepeway m: $*TZ.say 18:33
camelia rakudo-moar 315ec6: OUTPUT«3600␤»
jepeway m: $*TZ.say ; my $*TZ=0; $*TZ.say # hrm? 18:34
camelia rakudo-moar 315ec6: OUTPUT«(Any)␤0␤»
18:34 ajr_ left
jepeway why that first (Any)? 18:34
FROGGS_ because you (re)declared $*TZ in that block 18:35
m: $*TZ.say; { my $*TZ=0; $*TZ.say }
camelia rakudo-moar 315ec6: OUTPUT«3600␤0␤»
jepeway so, "my" was compile-time; setting to 0 was runtime; printing before set meant (Any)? 18:36
FROGGS_ m: my $foo = 42; { say $foo; my $foo = 21 }
camelia rakudo-moar 315ec6: OUTPUT«===SORRY!=== Error while compiling /tmp/t5kh__Vxu2␤Lexical symbol '$foo' is already bound to an outer symbol;␤the implicit outer binding must be rewritten as OUTER::<$foo>␤before you can unambiguously declare a new '$foo' in this sc…»
FROGGS_ that explains it better perhaps
jepeway: but yes, your explanation is correct 18:37
jepeway and "my" affects entire block, not just subsequent statements within block? 18:38
FROGGS_ correct 18:39
jepeway ok. tad surprised, but grokking will come, I s'pose. 18:40
jepeway well, hopes, anyways 18:41
18:43 Sqirrel joined 18:44 SevenWolf joined, raiph joined 18:46 Guest97255 left, thilp left 18:48 Guest97255 joined 18:50 kurahaupo joined 18:52 raiph left
timotimo so ... how do i create an enum at compile-time without going through the MOP? 18:56
or through EXPORT
18:57 tinyblak_ left, tinyblak joined
vendethiel- m: say ('Prefix' andthen "$_ * ") ~ 'topic name' 18:59
camelia rakudo-moar 315ec6: OUTPUT« * topic name␤»
vendethiel- m: say ('Prefix' andthen { "$_ * " }) ~ 'topic name' 19:00
camelia rakudo-moar 315ec6: OUTPUT«Prefix * topic name␤»
19:00 davido__ joined 19:02 davido_ left 19:06 rindolf joined 19:07 tinyblak left 19:10 thou joined 19:17 araujo left 19:21 araujo joined 19:24 cognominal joined, xenoterracide_ joined 19:28 kaare_ left 19:30 Sqirrel left, kaare_ joined 19:31 Sqirrel joined, Sqirrel left 19:32 Sqirrel joined 19:33 denis_boyun_ joined 19:38 ptc_p61 joined 19:40 ptc_p6 left, panchiniak joined 19:49 labster joined 19:50 cognominal left 19:54 Mso150_a joined 19:57 colomon left
jepeway m: class I { has int $.i; method p(Int $ii) returns I { I.new(i => $.i + $ii) } } ; class J is I {}; my $j = J.new().p(2) ; say $j # what's a good way to keep $j a (J)? 19:58
camelia rakudo-moar 315ec6: OUTPUT«I.new(i => 2)␤»
timotimo you want to keep $j an undefined instance of J?
19:59 colomon joined
jepeway sorry, no, too loose with the notation, i guess. i meant "what do i do to make $j be an instance of class J." override method p(), of course, but anything smarter? 20:00
timotimo you can use "self.new" instead of I.new 20:02
that should give you a new J if you call J.p
moritz replace I.new by self.WHAT.new
jepeway oh, derp.
moritz m: class I { has int $.i; method p(Int $ii) returns I { self.WHAT.new(i => $.i + $ii) }}; class J is I {}; my $j = J.new().p(2) ; say $j
camelia rakudo-moar 315ec6: OUTPUT«J.new(i => 2)␤»
jepeway m: class I { has int $.i; method p(Int $ii) returns I { self.new(i => $.i + $ii) } } ; class J is I {}; my $j = J.new().p(2) ; say $j # what's a good way to keep $j a (J)? 20:03
camelia rakudo-moar 315ec6: OUTPUT«J.new(i => 2)␤»
jepeway do i need the .WHAT? 20:04
and...what if I couldn't (easily) modify class I? 20:07
moritz then you override method p in the subclass 20:10
jepeway ayup. i guess i could grovel through all methods in I to find those returning an I and override them to return J's if I first implement J.new(I $i) 20:14
20:14 bjz left
moritz in general, inheriting from a class only makes sense if that class was designed with inheritance in mind 20:18
if not, a has-a relation is often more useful and less surprising
jepeway what's p6 to call I.p() from within J.p()? a la Java's super.p()? 20:20
20:20 bjz joined
moritz nextsame/nextwith 20:21
FROGGS_ or self.I::p, right? 20:22
moritz yes
jepeway sure, prefer composition over inheritance. trying to implement a replacement class that overrides a few choice methods, so reached for inheritance first. 20:23
20:23 zakharyas left 20:26 sqirrel_ joined
jepeway found perl6advent.wordpress.com/2010/12/1...s-cousins/ 20:29
dalek nda/reporter: cca058d | (Tobias Leich)++ | bin/panda:
initialize exclude param in target smoke
20:31 FROGGS_ is now known as FROGGS 20:36 darutoko left
jepeway m: class DT is DateTime {} ; my DT $x .= new().later(seconds => 2) 20:36
camelia rakudo-moar 315ec6: OUTPUT«===SORRY!=== Error while compiling /tmp/CHKKZ0VTw1␤Two terms in a row␤at /tmp/CHKKZ0VTw1:1␤------> ss DT is DateTime {} ; my DT $x .= new()⏏.later(seconds => 2)␤ expecting any of:␤ method arguments…»
20:36 bjz left
jepeway m: class DT is DateTime {} ; my DT $x = DT.new().later(seconds => 2) 20:37
camelia rakudo-moar 315ec6: OUTPUT«Must provide arguments to DateTime.new()␤ in method <anon> at src/gen/m-CORE.setting:13676␤ in any find_method_fallback at src/gen/m-Metamodel.nqp:2725␤ in any find_method at src/gen/m-Metamodel.nqp:988␤ in block <unit> at /tmp/8cmOXFOS33:1␤␤»
synopsebot Link: perlcabal.org/syn/S33.html#line_1
jepeway m: class DT is DateTime {} ; my DT $x = DT.new(now).later(seconds => 2)
camelia rakudo-moar 315ec6: OUTPUT«Type check failed in assignment to '$x'; expected 'DT' but got 'DateTime'␤ in block <unit> at /tmp/limvZMkFE2:1␤␤»
jepeway m: class DT is DateTime {} ; my DT $x = DT.new(now).later(hours => 2)
camelia ( no output )
jepeway cf src/core/Temporal.pm:340 or so. 20:38
bug? 20:40
moritz dunno if bug, but "less than awesome" for sure
I have a local patch that makes it more subclass-friendly 20:41
spectesting now
jepeway coolio. 20:44
well, need to run, but will backlog (& watch commits). ty, moritz++, timotimo++, FROGGS++ 20:49
moritz std: my $a = [1, 2]; 'abc' ~~ /$a[0]/ 20:54
camelia std 14ad63b: OUTPUT«Potential difficulties:␤ Apparent subscript will be treated as regex at /tmp/rk8o2TRNe_ line 1:␤------> my $a = [1, 2]; 'abc' ~~ /$a⏏[0]/␤ [0] appears to be an old-school character class; please use <[0]> if you␤ mean a character…» 20:55
timotimo have fun :)
dalek kudo/nom: 0a3c954 | moritz++ | src/core/Temporal.pm:
Make DateTime and Date more friendly to subclassing

  jepeway++
moritz it looks like tests 4 to 7 in S05-metasyntax/litvar.t all assume something other than STD.pm6 does 20:56
dalek href="https://cpandatesters.perl6.org:">cpandatesters.perl6.org: 12a8179 | (Tobias Leich)++ | TODO.md:
added TODO.md
21:03
21:05 Mso150_a left 21:07 Mso150_a joined
dalek rl6-roast-data: 6b2a7c3 | coke++ | / (5 files):
today (automated commit)
21:07
21:08 lasse left
timotimo scrolling starfield \o/ 21:09
FROGGS \o/ 21:11
lol: 21:13
Unsupported use of /i; in Perl 6 please use :i
at lib\Cache\Memcached.pm:479
------> $ip ~~ s:g [ \[ | \] ] = '' i⏏f $ip.defined;
timotimo hah, ouch
FROGGS did I mention already that I love my cpandatesters thingy? :D 21:14
21:14 ghostlines joined
FROGGS though, I really start to hate the peeps that are meant to supply my virtual server 21:15
thay guarantee that the server is set up within 24 hours, and, well, that would have been Thursday morning
21:15 sqirrel_ left
raydiak wow 24 hours alone is bad enough...do they build each instance by hand or something? :) 21:17
timotimo FROGGS: if a shared host is enough for you, check out uberspace 21:19
they allow you to install and your own postgres, too
and run* 21:21
FROGGS timotimo: well, I also need cpu and run to some degree
which means that I ordered a six-core with 6 to 12 gig RAM or so 21:22
timotimo oh wow
so you're running your own tests
rather than just receiving panda reports?
FROGGS raydiak: normally it is done in minutes, but their order form is broken, so I've got a Schroedinger's Account 21:23
21:23 xenoterracide_ left
raydiak haha 21:23
21:23 xenoterracide_ joined
FROGGS timotimo: I know that the cpantesters servers are quite huge, and I want to be prepared :D 21:23
colomon :)
FROGGS and yes, being able to smoke all commits would be sweet! 21:24
dalek kudo/nom: 8739ee4 | usev6++ | src/Perl6/Grammar.nqp:
Add method to throw typed exception X::Syntax::Regex::SolitaryQuantifier
kudo/nom: 2bef929 | lizmat++ | src/Perl6/Grammar.nqp:
Merge pull request #328 from usev6/nom

Add method to throw typed exception X::Syntax::Regex::SolitaryQuantifier
FROGGS right now my windows 7 box is smoking all ecosystem dists, before my ubuntu laptop did that 21:25
but I'd like to receive reports from real users
moritz does it report automatically? 21:29
FROGGS one of the next steps is his:
dalek href="https://cpandatesters.perl6.org:">cpandatesters.perl6.org: fe83cfa | (Tobias Leich)++ | TODO.md:
added TODO: implement Etags to allow caching of css, js and fonts
FROGGS moritz: yes, with panda (branch reporter) and the env var PANDA_SUBMIT_TESTREPORTS 21:30
moritz puts it into the bashrc 21:33
raydiak reading "cpandatesters" makes my brain thrash around like it expects a single result but gets a junction of "C panda testers|cpan da testers|cpan datesters|cpanda testers" 21:36
moritz ==> Successfully installed NativeCall
Could not submit test report: Failed to connect: connection refused
FROGGS: first piece of feedback: failing to submit a test report should not make panda die 21:38
FROGGS moritz: true, very true
moritz I did a 'panda install NativeCall Pod::To::HTML URI' but it died after installing NativeCall
21:39 kurahaupo left
dalek href="https://cpandatesters.perl6.org:">cpandatesters.perl6.org: bc77a9a | (Tobias Leich)++ | TODO.md:
added todo
21:40
timotimo the profiler isn't terribly useful for nativecall-heavy stuff
FROGGS err, moritz++
raydiak: my current plan is to set up cpandatesters.org on my own server, and then perhaps make it also available as testers.perl6.org 21:41
moritz and if you are looking for more ideas: integration into modules.perl6.org 21:42
FROGGS and github issues if possible
raydiak FROGGS: awesome...I think it's clever, was just being amused by how a person's mind can make up its own interpretation separate from the known facts in other parts of the same mind 21:45
21:45 xenoterracide_ left
raydiak but really what I opened this window for was to ask about .perl 21:45
how much to de care about how fast it is?
or as a more direct question, is there any reason we haven't made it handle non-trivial reference structures yet? 21:46
^^how much do we
FROGGS I think moritz has mused about making that work, right?
moritz FROGGS: not me. I think it was lizmat++ 21:47
FROGGS ohh
hmm, quite possible :o)
21:47 kaare_ left
raydiak I keep running in to it, b/c I sometimes tend to use network structures other than trees 21:47
FROGGS would be awesome to see that one fixed of course 21:49
raydiak it doesn't seem hard, but if we're worried about how many .perls we can do per second, I am probably not the one to write it :) 21:50
21:50 xenoterracide_ joined
raydiak thus the "how much do we care how slow .perl is" question 21:50
moritz raydiak: well, correct is more important first 21:51
FROGGS it has always been "correct is better that fast"
aye
than*
raydiak hm...I may take a stab at it then 21:53
FROGGS ++raydiak
lizmat my main reason for not pursuing self referential structures in .perl
was that I didn't have a solution for representing them 21:54
thoughts on that are very welcome
moritz my idea would be a dynamic var
raydiak iirc, p5 Data::Dumper literally puts them in separate vars
moritz with obj => $str
and $str is the string which can be used to access stuff 21:55
lizmat my @a; @a[0] = @a # how would you represent that ?
timotimo 89.89% time spent in postcircumfix:<( )> 21:56
21:57 adu left, Mso150_a left
moritz lizmat: I fear it must be printed out exactly like that 21:57
21:58 Mso150_a_y joined
moritz lizmat: probably wrapped in a do { } block 21:58
though it'll probably more look like do { my \PERL1 = Array.new(); PERL1[0] = PERL1; PERL1 } 21:59
raydiak data::dumper gives "$VAR1 = [ $VAR1 ]" :P
moritz raydiak: my perl 5.20 Data::Dumper hangs 22:00
sleep&
raydiak moritz: works on 5.18 here..."my @a; $a[0] = \@a; say Dumper(\@a);"
'night moritz
lizmat good night moritz!
moritz good night everybody 22:01
colomon o/. 22:02
22:02 Alula joined
raydiak \o you dropped something :) 22:03
colomon ;)
22:04 ptc_p61 left
raydiak but honestly, even if there are cases that turn out to be a real pain, compared to going in to an infinite loop, even some bizarre internal error is better imo 22:05
22:06 ugator left
raydiak I wasted more hours than I'll admit to the first time I ran into this :) 22:06
22:09 denis_boyun_ left, orfjackal joined 22:10 xenoterracide_ left, xenoterracide_ joined, orfjackal left
raydiak lizmat: so what do you think of moritz's do block approach? 22:13
lizmat looks good in principle... atm I'm busy with some other stuff, so I can't help right now 22:14
raydiak np I'll leave you to it...I'll kick the idea around later when more people are around, perhaps 22:17
22:18 xenoterracide_ left
dalek nda: 3ed91f4 | Mouq++ | bin/panda:
Fix `panda -h`

  `#=` was connecting the comments to the wrong MAIN candidates
22:20
nda: 45675dc | (Tobias Leich)++ | bin/panda:
Merge pull request #110 from Mouq/master

Fix `panda -h`
22:21 telex left 22:22 telex joined 22:28 xenoterracide_ joined 22:29 Isp-sec left
tadzik #| :( 22:35
22:35 ghostlines left 22:36 ghostlines joined
FROGGS :#( 22:38
22:43 rindolf left 22:44 xenoterracide_ left, xenoterracide_ joined 22:49 ab5tract left 22:53 xenoterracide_ left 22:57 kjs_ left 23:11 thou left 23:16 thou joined 23:19 SevenWolf left, SevenWolf joined 23:21 BenGoldberg joined 23:24 FROGGS left 23:27 molaf_ left 23:29 Mso150_a_y left, Alina-malina left 23:30 Alina-malina joined 23:39 gfldex left
timotimo now i run into a null pointer somewhere 23:40
strange
BenGoldberg . o O (In soviet russia, null pointer runs into you!) 23:41
timotimo the null pointer dereference happens during compilation of the module 23:42
i can't reproduce it outside of panda >:( 23:50