»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
00:01 masak left, dalek left 00:02 pmichaud left, PerlJam left, topo left 00:03 [Coke] left, hugme left, whiteknight left 00:05 Juerd left, sergot left 00:11 Juerd joined, topo joined 00:13 masak joined 00:14 pmichaud joined, [Coke] joined 00:17 lawrmcfa left 00:19 PerlJam joined 00:20 sergot joined 00:22 arlinius left 00:26 p6eval joined, ChanServ sets mode: +v p6eval, hugme joined, ChanServ sets mode: +v hugme 00:29 dayangkun left 00:36 dayangkun joined, dayangkun left
felher TimToady++ # new rosettacode entry :) 00:37
cognominal inifinte lazyness 00:43
*infinite
01:02 FROGGS_ joined 01:03 sivoais left 01:04 anuby joined, flightrecorder left 01:05 stopbit left, FROGGS left 01:06 flightrecorder joined, sivoais joined 01:08 japhb_ left 01:09 hypolin joined 01:12 jerome left 01:15 preflex left 01:21 sergot_ joined 01:24 gootle joined 01:25 sergot left, skids left 01:26 jerome joined, tokuhiro_ left 01:27 ServerSage left 01:32 ServerSage joined 01:33 skids joined 01:52 tadzik joined 01:55 grondilu left 02:11 hypolin left 02:13 hypolin joined 02:23 _jaldhar joined
colomon japhb_: I did that recently as well, see the first line of either source code block here: justrakudoit.wordpress.com/2012/10/...th-powers/ 02:35
It's quite handy.
02:38 orafu left, orafu joined 02:39 _jaldhar left
TimToady not just handy...it also avoids recalculating the sequence each time 02:40
02:41 _jaldhar joined 02:56 lawrmcfa joined 03:02 cibs joined 03:04 x19290 joined 03:05 x19290 left 03:07 xinming left 03:08 newbie joined, newbie is now known as Guest35851 03:11 newbie1 joined 03:12 newbie1 left, Guest35851 left, newbie1 joined
masak it doesn't seem possible to reconcile infinite lazy lists and conc lists/mapreduce. 03:13
there's probably even a proof of that.
03:14 newbie1 left 03:15 x19290 joined
shachaf Does "conc list" mean "binary tree"? 03:15
03:15 xinming joined, x19290 left
masak yeah. 03:16
I think it's Guy Steele's name for it. 03:17
shachaf Have you seen FMList in Haskell?
sorear masak: do you mean cons lists?
shachaf I don't know if it's particularly related to what you're after but it's neat. 03:18
03:18 hypolin left 03:19 hypolin joined
masak sorear: infinite lazy lists can be implemented with cons lists. mapreducible lists can be implemented with conc lists. 03:21
it seems that even Perl 6 to some extent flirts with the duality (or whatever) of these two. 03:22
japhb colomon, hmmm ... that construction in your fourth-powers post is very similar in spirit, but not quite the same construction as TimToady's. He uses a sequence in both places, rather than a mapped range and a clipping sequence. I guess conceptually this generalizes well.
masak some builtins provide laziness. some provide hyperness. you can indicate which of the two you want.
I guess I'm just curious *why* lazy and mapreduce seem irreconcilable. it seems perfectly obvious that they are. 03:24
or rather, here's the thing. with both kinds of lists you can start iterate from the head of the list and nextwards. no problem. but then lazy seems to make one guarantee and mapreduce makes another. and those guarantees are incompatible. 03:28
lazy: "I promise not to disappear in the mists of computation just because the list is potentially infinite" 03:29
hyper: "it doesn't matter which part of the list we do first, 's all good"
shachaf What does "do first" mean? 03:30
As in an associative operation?
masak yes, I think "associative" captures what hyper guarantees here.
very interesting!
hm, but lazy seems to be a guarantee about termination, whereas hyper is a guarantee about ordering... 03:31
shachaf What's hyper? 03:32
masak @values>>.abs
shachaf probably ought to know basic Perl 6.
masak does .abs on each individual value, in an arbitrary order. the returned values are in the original order, though. 03:33
Timbus 'conversational perl 6'
masak shachaf: more generally, hyper does a computation on the elements of a container, in an arbitrary order and possibly in parallel.
think GPU.
shachaf Oh, that doesn't have to do with associativity in particular. I was thinking you meant a fold. 03:34
03:34 skids left
TimToady this incompatibility is precisely why we have both Z* and »*« 03:35
Timbus masak, is there a case where you wouldn't want a hyper operator? in terms of Z+ vs >>+<< and so TimToady beats me to it 03:36
shachaf Z+ is zipped?
Timbus but have you ever wanted a side effecty Z
TimToady it's a zip-with meta-operator
shachaf Right.
TimToady why would anyone ever want side effects? <hides under the FP hat> 03:37
Timbus heh
shachaf So what's »*«? Cartesian product?
TimToady that's simply a parallel operation, not to be confused with mathematical vectors and such 03:38
shachaf Oh.
TimToady which is why we no longer call them "vector ops" :)
03:38 sftp left
TimToady use a different operator for that 03:38
but generally you use X* for normal cross-multiplication 03:39
rn: say 1,2,3 X* 2,3
p6eval rakudo dbf347, niecza v22-7-g7df6137: OUTPUT«2 3 4 6 6 9␤»
Timbus TimToady, well i'm being more specific. have you had to use side effects in a zip or cross op in any of your rosettacode submissions for example? im actually interested in their use
shachaf Are "X" and "Z" part of the language syntax or can users define things like that? 03:40
shachaf should probably read the language syntax.
masak I'm aware that we have both Z* and >>*<<. I'm curious about the incompatibility itself.
TimToady as far as I know I've only ever used internal side effects to track state in a stateful generator
Timbus sub infix:<myop>
masak seems the data structures (lazy list and conc list) are simply geared towards doing different things.
TimToady sure, though people will often misuse them 03:41
masak a lazy list is "self-similar" in a way that allows it to continue indefinitely and thus allow infinite lazy lists.
shachaf masak: You can have a lazy infinite tree but it'll be lazy in a different way from a lazy infinite list.
TimToady and it's not out of all reason to do some parallel ops even on an infinite list
masak trees could potentially be infinite but for our purposes that's the wrong kind of infinite (destroys well-ordering).
TimToady whether by handing out bits to work on, or by dividing by some sequence of sizes that converges on infinity... 03:42
1, 2, 4, 8, 16 elements at a time, and such
masak whereas the strength of trees seems to be divide-and-conquer, something that linked lists don't do well at all.
shachaf masak: You can traverse the tree any way you like. :-)
TimToady or more likely some kind of fibonacci divvying up as the problem scales up
nobody says you can't have an infinite tree :) 03:43
masak TimToady: hm. I see how it can be done but not how the process would know to stop. there's plenty of room at infinity.
TimToady: re infinite trees, see above. they don't give you list indexes. 03:44
TimToady well, sure, but I thought we were talking about doing parallel ops on something infinite
Timbus the infinite tree. feels like ive been pruning this thing forever
shachaf masak: Are you thinking of the "first" element as "the one all the way on the left" or something along those lines?
TimToady or unbounded, anyway
masak "unbounded" is a much nicer word than "infinite". I must remember to use it more.
shachaf: yes. 03:45
shachaf Well, pick the root as the first element instead.
TimToady an arbitrarily long tree can still know how to find any element N, albeit without promising equal efficiency to the early elements
that being said, I think problems naturally fall into one or the other situation most of the time 03:46
masak right.
so maybe incompatible in practice rather than inherently.
TimToady either you're trying to work behind or you're trying to work ahead
masak "work behind"? :) 03:47
TimToady be lazy or be anti-lazy
masak ah, laziness.
oh, that's a rather cute way of viewing it. TimToady++
TimToady Rule 1: don't do it. Rule 2: don't do it now. Rule 3: don't just do one of it now. :) 03:48
masak it also illustrates why "working ahead" and "unbounded" are a bad combination most of the time.
TimToady we do allow for batching though, much like STDIO buffers
masak yeah; every time I've run into batching in Rakudo I've hated it. 03:49
TimToady though we also need to know when not to batch, or we can't generate Hamming numbers recursively
masak thinking "you promised me laziness and now you do this...." :(
right.
things like that.
TimToady if you're programming in the FP idiom it shouldn't be very noticeable
masak seems the guarantee not to work ahead can sometimes be as important as the attempt to work behind. 03:50
TimToady obviously you should only batch where there's an obvious overhead that can be factored out
if we can stall when we notice we're using something self-referentially lazy, it should work out okay 03:51
but that's a big "if"
maybe we just say that batching only works with known values, and never unlazies more than the one value necessary to progress 03:53
TimToady waves hands in a parady of himself
but you could, say, map over all the reified bits of the input, or 1 element if there are no reified elements available 03:55
speaking of Hamming, been thinking more about a putative list merge metaoperator 03:57
for Mop, we could say that if $value Mop $value returns either True or Order::Same, we assume they want duplicates, and otherwise remove duplicates 03:58
so Mleg or Mge would allow duplicates, but Mlt or Mgt would not 03:59
or something like that
we'd have to decide if the default should be Mcmp or Mbefore
(for a bare M op)
by the above rule, Mcmp would include duplicates, but Mbefore would not 04:01
04:01 lawrmcfa left
TimToady assuming M defaults to including duplicates, we get a Hamming rule of: 04:02
constant @hamming = 1, dedup (@hamming X* 2) M (@hamming X* 3) M (@hamming X* 5);
with the dedup necessary
if instead it defaults to deduping semantics, then it'd just be
constant @hamming = 1, ((@hamming X* 2) M (@hamming X* 3) M (@hamming X* 5)); 04:03
or maybe one would write
constant @hamming = 1, do (@hamming X* 2) M (@hamming X* 3) M (@hamming X* 5);
sorear moritz: ping 04:04
04:04 cognominal_ joined 04:06 cognominal left
TimToady masak: another thing you should consider is that some of the things Google uses mapreduce for are essentially open-ended, much like arbitrary lists 04:10
if you search for something very common, you'll never get to the end of that list by clicking in your browser
so you can do mapreduce on an infinite list, as long as you can identify when there's demand for another batch 04:11
masak why 'dedup' and not 'uniq'? what does the former do that the latter doesn't? 04:20
sorear nub! 04:21
masak TimToady: I don't buy the Google analogy. the lazy bit is in sending the result over the wire. the mapreduce has been run long before that as part of all the precomputations they do.
sorear google can't anticipate every posisble search 04:22
masak indeed.
but by the time you search, the algorithmic challenge is combining the right indices and iterating through them. 04:23
that's a lazy task, not a hyper task.
TimToady I'll wager they don't mapreduce the parts of the search they figure you won't get to; the N results is likely a guess 04:24
however, when they give you related searches, they very likely have precalculated your results out as far to however far they think you might go, since obviously someone else has tried those searches earlier 04:27
masak is still very fond of the "work ahead" and "work behind" terms 04:28
TimToady or they otherwise have some knowledge that those new keywords will cut down your search space significantly, which I suppose could be derived from the page contents somehow
diakopter I think they have magic elves 04:31
rn: say e ** (pi * i) 04:38
p6eval niecza v22-7-g7df6137: OUTPUT«-1+1.2246063538223773E-16i␤»
..rakudo dbf347: OUTPUT«-1-7.28641469046904e-10i␤»
diakopter niecza is closer
sorear rn: say sin pi 04:39
p6eval niecza v22-7-g7df6137: OUTPUT«1.2246063538223773E-16␤»
..rakudo dbf347: OUTPUT«-3.52688866664137e-10␤»
sorear rn: say pi.WHAT
p6eval rakudo dbf347, niecza v22-7-g7df6137: OUTPUT«Num()␤» 04:40
masak diakopter: re magic elves: "You confuse a high conditional likelihood from your hypothesis to the evidence with a high posterior probability of the hpothesis given the evidence" :P
sorear rn: say pi
p6eval rakudo dbf347: OUTPUT«3.14159265394248␤»
..niecza v22-7-g7df6137: OUTPUT«3.1415926535897931␤»
sorear interesting 04:41
diakopter one of those seems... off 04:42
sorear yes 04:43
the value in Rakudo's source code agrees with the value that Niecza prints
my constant pi = 3.14159_26535_89793_238e0;
r: say 3.14159_26535_89793_238e0; 04:44
p6eval rakudo dbf347: OUTPUT«3.14159265394248␤»
diakopter r: say 3.14156 + 0.0000026535
p6eval rakudo dbf347: OUTPUT«3.1415626535␤»
sorear r: say 0.00000000001 04:45
p6eval rakudo dbf347: OUTPUT«0.00000000001␤»
sorear r: say 0.0000000000001
p6eval rakudo dbf347: OUTPUT«0.0000000000001␤»
04:45 kaleem joined
sorear r: say 0.0000000000001e0 04:45
p6eval rakudo dbf347: OUTPUT«1e-13␤»
diakopter r: say 3.14156 + 0.0000026535 + 0.000000000089793
p6eval rakudo dbf347: OUTPUT«3.141562653589793␤»
sorear r: say 1.0000000000001e0
p6eval rakudo dbf347: OUTPUT«1.0000000000001␤»
diakopter r: say 3.14156 + 0.0000026535 + 0.000000000089793e0
p6eval rakudo dbf347: OUTPUT«3.14156265358979␤»
diakopter r: say 3.14156 + 0.0000026535e0 + 0.000000000089793e0
p6eval rakudo dbf347: OUTPUT«3.14156265358979␤»
diakopter r: say 3.14156e0 + 0.0000026535e0 + 0.000000000089793e0
p6eval rakudo dbf347: OUTPUT«3.14156265358979␤»
diakopter r: say 3.14156 + 0.0000026535 + 0.000000000089793 + 0.000000000000000238 04:46
p6eval rakudo dbf347: OUTPUT«3.141562653589793238␤»
diakopter well then
TimToady r: say atan2(1,1)*4
p6eval rakudo dbf347: OUTPUT«3.14159265358979␤»
sorear r: say sin atan2(1,1)*4; say sin pi 04:47
p6eval rakudo dbf347: OUTPUT«1.22460635382238e-16␤-3.52688866664137e-10␤»
sorear r: say atan2(1,1)*4 - pi
p6eval rakudo dbf347: OUTPUT«-3.52688989124772e-10␤»
TimToady nr: say 3.14159_26535_89793_238e0.base(10) 04:51
p6eval rakudo dbf347: OUTPUT«3.14159265␤»
..niecza v22-7-g7df6137: OUTPUT«Unhandled exception: Unable to resolve method base in type Num␤ at /tmp/JdkNqY1JmM line 1 (mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4198 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4199 (module-CORE @ 574) ␤ at /home/p6…
diakopter rn: say acos(-1)
p6eval rakudo dbf347: OUTPUT«3.14159265358979␤»
..niecza v22-7-g7df6137: OUTPUT«3.1415926535897931␤»
diakopter rn: say 2*i*log((1-i)/(1+i)) 04:52
p6eval niecza v22-7-g7df6137: OUTPUT«3.1415926535897931+0i␤»
..rakudo dbf347: OUTPUT«3.14159265358979+0i␤»
TimToady sorear's original say 3.14159_26535_89793_238e0; prints a more correct value in my rakudo here. 64-bit processor maybe? 04:53
10 places of accuracy corresponds approximately to the size of a 32-bit integer 04:54
npr: say 1.1111111111111111111111111111111111111 04:55
p6eval niecza v22-7-g7df6137: OUTPUT«1.1111111111111112␤»
..rakudo dbf347: OUTPUT«1.111111111109391735851659177569672465324␤»
..pugs: OUTPUT«1.1111111111111111111111111111111111111␤»
04:56 cognominal_ left
TimToady I get more 1's in my rakudo: 1.111111111111111116045435665000695735216 04:56
diakopter npr: say (1/9).Num 04:57
p6eval rakudo dbf347: OUTPUT«0.111111111111111␤»
..niecza v22-7-g7df6137, pugs: OUTPUT«0.1111111111111111␤»
diakopter whatevs
sorear TimToady: p6eval is a 64 bit machine but the rakudo binary is 32-bit. also, the rakudo binary is dated oct 11 04:59
erm, that's today, nevermind
diakopter hee 05:00
TimToady well, mine was older, so trying a recompile to see if I lose accuracy :D
same answer, so probably 32 vs 64 05:05
Woodi thinks acos(-1) should return π... hovewer replacing calculator with symbolic operation handling can be not optimal for common cases :) 05:07
but it probably depends on π use cases... 05:08
heavy morning # :)
sorear yo Woodi 05:09
masak Woodi: you can always build your own symbolic algebra library on top of Perl 6. 05:11
though I agree that having complex numbers and rationals is already going partway in that direction.
sorear just uses maxima 05:14
sorear thinks it's kind of weird using software that was written when his father was 6
moritz sorear: pong 05:15
sorear PM
masak phenny: en fr "PM"? 05:16
phenny masak: "PM" (en to fr, translate.google.com)
moritz is pretty sure that would be MP or so :-) 05:17
05:17 erkan joined, erkan left, erkan joined
sorear phenny: en fr "MP"? 05:18
phenny sorear: "MP" (en to fr, translate.google.com)
05:18 aharoni joined
Woodi btw. last month there was discusion about Excel sequenes continuation like [1,2] and guesing 3... Shadows in my memory says that finding formula having few sequence numbers was popular tormenting during discret math course... 05:20
diakopter masak: what's the shortest program that can timeout rakudo
Woodi diakopter: :) 05:21
diakopter p6eval
sorear r: redo
p6eval rakudo dbf347: OUTPUT«redo without loop construct␤ in block at src/gen/CORE.setting:378␤ in block at src/gen/CORE.setting:448␤ in block at /tmp/bzQ4Bwbxhf:1␤␤»
Woodi r: sleep $max+1
p6eval rakudo dbf347: OUTPUT«===SORRY!===␤Variable $max is not declared␤at /tmp/v8IsoVE8ya:1␤»
sorear r: loop;
p6eval rakudo dbf347: OUTPUT«===SORRY!===␤Missing block␤at /tmp/oRDSJPzhnT:1␤»
sorear r: loop ;
p6eval rakudo dbf347: OUTPUT«===SORRY!===␤Missing block␤at /tmp/8XFANYLFc0:1␤»
sorear r: loop{}
p6eval rakudo dbf347: OUTPUT«===SORRY!===␤Whitespace required after 'loop' at line 2, near "{}"␤»
sorear r: loop {}
p6eval rakudo dbf347: OUTPUT«(timeout)»
sorear r: +^Inf 05:22
p6eval rakudo dbf347: OUTPUT«Cannot coerce Inf to an Int␤ in method Numeric at src/gen/CORE.setting:9932␤ in sub prefix:<+^> at src/gen/CORE.setting:2652␤ in sub prefix:<+^> at src/gen/CORE.setting:2652␤ in block at /tmp/1tep_kwU91:1␤␤»
sorear r: [^Inf]
p6eval rakudo dbf347: ( no output )
TimToady r: pi xx* 05:23
p6eval rakudo dbf347: ( no output )
sorear n: do redo 05:24
p6eval niecza v22-7-g7df6137: OUTPUT«(timeout)»
05:27 \n is now known as nyuszika7h
sorear TimToady: should loop control s work without braces? 05:27
TimToady well, they certainly shouldn't work without a loop
05:27 hash_table left
sorear do {} is a loop 05:28
masak r: loop{} 05:31
p6eval rakudo dbf347: OUTPUT«===SORRY!===␤Whitespace required after 'loop' at line 2, near "{}"␤»
TimToady wow, that part of the spec is so old I'd forgotten it :)
masak r: loop {}
beat that ;)
p6eval rakudo dbf347: OUTPUT«(timeout)»
masak oh, it's as short as 'do redo' 05:32
how come 'do' is a loop, by the way?
05:33 birdwindupbird joined
TimToady why not? 05:34
diakopter masak: sorear beat you to that one
masak oh. 05:38
TimToady: both the "why" and "why not" questions are motivated, but it seems to me the burden of explanation is on the person who wants it to be a loop. since, well, it isn't. 05:39
neither was it in Perl 5, even though "do" had different semantics there.
TimToady nr: 9**9**9
masak s/was/is/, s/had/has/
p6eval niecza v22-7-g7df6137: OUTPUT«(timeout)»
..rakudo dbf347: ( no output )
sorear masak: it's a loop in niecza because S04-statements/do.t wants it to be one.
masak: it was a cheap way to get lots of spectests. 05:40
diakopter TimToady: I've been trying that one for a while
:D
sorear masak: I recognize this may not be a fully satisfactory answer either
masak sorear: what part of 'do' (as per the spec) indicates that it is a loop?
I just see it as an statement-to-expression converter. 05:41
a*
TimToady the part that also occurs in "redo"?
masak ok, point very well taken.
sorear masak: S04-statements/do.t line 86
masak: also, you don't need a keyword to convert statemtnes to expressions in p6 05:42
masak sorear: sure. though spectests, especially old ones, have disagreed with the synopses before.
sorear n: say (if 1 { 5 } else { 10 })
p6eval niecza v22-7-g7df6137: OUTPUT«5␤»
masak sorear: well, it's nice sometimes because it needs no ending brace.
diakopter n: 9*****9
p6eval niecza v22-7-g7df6137: OUTPUT«Unhandled exception: System.NullReferenceException: Object reference not set to an instance of an object␤ at Niecza.StashCursor.Core (System.String key, Boolean final, Niecza.StashCursor& sc, Niecza.Variable& v, Niecza.Variable bind_to) [0x00000] in <filen… 05:43
diakopter 0_0
I'll stash your core cursor
sorear n: no strict; moo; 05:44
p6eval niecza v22-7-g7df6137: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'moo' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1437 (die @ 5) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 37) ␤ at /home/…
sorear n: no strict; &moo();
p6eval niecza v22-7-g7df6137: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'moo' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1437 (die @ 5) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 37) ␤ at /home/…
sorear n: no strict; $moo();
p6eval niecza v22-7-g7df6137: OUTPUT«Unhandled exception: System.NullReferenceException: Object reference not set to an instance of an object␤ at Niecza.StashCursor.Core (System.String key, Boolean final, Niecza.StashCursor& sc, Niecza.Variable& v, Niecza.Variable bind_to) [0x00000] in <filen…
sorear n: $::('x');
p6eval niecza v22-7-g7df6137: OUTPUT«Unhandled exception: System.NullReferenceException: Object reference not set to an instance of an object␤ at Niecza.StashCursor.Core (System.String key, Boolean final, Niecza.StashCursor& sc, Niecza.Variable& v, Niecza.Variable bind_to) [0x00000] in <filen…
sorear n: $::('pi');
p6eval niecza v22-7-g7df6137: OUTPUT«Unhandled exception: System.NullReferenceException: Object reference not set to an instance of an object␤ at Niecza.StashCursor.Core (System.String key, Boolean final, Niecza.StashCursor& sc, Niecza.Variable& v, Niecza.Variable bind_to) [0x00000] in <filen…
sorear yikes 05:45
TimToady pity we don't have postfix:<!> as a builtin, or it'd be easy to get a shorter timeout 05:49
diakopter rn: say 2^^4&&&9||5~~3 05:50
p6eval niecza v22-7-g7df6137: OUTPUT«===SORRY!===␤␤"^^" and "||" are non-associative and require parens at /tmp/gOIZ58Idw4 line 1:␤------> say 2^^4&&&9||⏏5~~3␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1437 (die …
..rakudo dbf347: OUTPUT«2␤»
masak r: say 1..*
p6eval rakudo dbf347: OUTPUT«1..Inf␤»
masak r: +(1..*) 05:51
p6eval rakudo dbf347: ( no output )
masak r: +(1...*)
p6eval rakudo dbf347: ( no output )
masak r: say +(1...*)
p6eval rakudo dbf347: OUTPUT«Inf␤»
masak r: say +(1,3...*)
p6eval rakudo dbf347: OUTPUT«Inf␤»
05:53 xinming left
TimToady n: + ^Inf 05:53
p6eval niecza v22-7-g7df6137: OUTPUT«(timeout)»
masak new record. 05:55
diakopter shortest program that fills p6eval output buffer
masak n: (^Inf)>>.say
diakopter masak: well, the original was for rakudo
moritz n: say^Inf 05:56
p6eval niecza v22-7-g7df6137: OUTPUT«(timeout)0␤1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤11␤12␤13␤14␤15␤16␤17␤18␤19␤20␤21␤22␤23␤24␤25␤26␤27␤28␤29␤30␤31␤32␤33␤34␤35␤36␤37␤38␤39␤40␤41␤42␤43␤44␤45␤46␤47␤48␤49␤50␤51␤52␤53␤54␤55␤56␤57␤58␤59␤60␤61␤62␤63␤64␤65␤66␤67␤68␤69␤70␤71␤72␤73␤74␤75␤76␤77␤78␤79􏿽xE2
niecza v22-7-g7df6137: OUTPUT«===SORRY!===␤␤Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/ctOiTmQHBU line 1:␤------> say⏏^Inf␤␤Unhandled exception: Check failed␤␤ at /home/p…
moritz n: say ^Inf
p6eval niecza v22-7-g7df6137: OUTPUT«0..^Inf␤»
masak (ranges having a sensible output)++
n: say ~^Inf
p6eval niecza v22-7-g7df6137: OUTPUT«Unhandled exception: Buffer bitops NYI␤ at /home/p6eval/niecza/lib/CORE.setting line 1437 (die @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3345 (prefix:<~^> @ 4) ␤ at /tmp/wUWOFpvH0j line 1 (mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.settin…
masak n: say ~ ^Inf
p6eval niecza v22-7-g7df6137: OUTPUT«(timeout)» 05:57
masak heh.
moritz it tries to stringify the range before printing
n: say @(^Inf)
p6eval niecza v22-7-g7df6137: OUTPUT«(timeout)»
05:59 popl left
Woodi hmm, any idea for ufo for C ? 06:01
tadzik good morning 06:09
masak tadzik! \o/
tadzik masak! \o/
06:10 FROGGS_ left
masak we're discussing matters of the infinite. 06:10
tadzik for how long? 06:11
(Hahahahaha)
japhb awww, ENODALEK 06:14
06:14 flightrecorder left
masak tadzik: all I can tell you is that so far, the discussion has never ended. 06:17
tadzik eye see 06:19
06:24 dalek joined, ChanServ sets mode: +v dalek
diakopter wb 06:24
sorear I wonder why dalek exited
06:24 woosley joined
sorear nothing obvious on the screen 06:24
diakopter EXTERMINATE 06:25
masak moritz: in generalizing nested sets to DAGs, do you want multi-parent subtrees to be visited multiple times during traversal? 06:27
or just once?
which operations do you care about making fast? 06:28
diakopter sorear: maybe some 64-bit counter rolled over on dalek 06:30
06:34 rindolf joined
diakopter get it? 06:36
sorear no. 06:39
yo, rindolf
diakopter a 64-bit counter can't roll over...
sorear it can if the computer is poorly secured on a slope 06:40
diakopter hee
TimToady I want one grain on the first square, two grains on the second square, four on the third, and so on...
rindolf sorear: hi. 06:43
diakopter TimToady I guess I meant counting by 1
TimToady my point is that a chessboard holds a lot of 1s 06:44
06:45 wk joined
TimToady alluding to en.wikipedia.org/wiki/Wheat_and_che...rd_problem 06:45
diakopter and it takes a very long time to count that many by 1s 06:51
06:52 flightrecorder joined
jnthn morning o/ 06:53
diakopter o/
sorear o/
06:59 kurahaupo left
jnthn gee, a lot of backlog 07:05
phenny: tell [Coke] looking at the spectest roast data, I can't help but wonder if your Rakudo is failing to update. 07:07
phenny jnthn: I'll pass that on when [Coke] is around.
jnthn phenny: tell [Coke] all the S02 and S05 failures relate to features recently added to Rakudo.
phenny jnthn: I'll pass that on when [Coke] is around.
jnthn phenny: tell [Coke] Yes, something is wrong because a bunch of the most recent additions to t/spectest.data like S05-modifier/perl5_[2..4].t aren't being run. 07:08
phenny jnthn: I'll pass that on when [Coke] is around.
07:08 wk left
jnthn [Coke]++ # for doing these runs 07:09
07:11 fibo left, xinming joined 07:14 rindolf left 07:15 rindolf joined, Su-Shee joined
Su-Shee good morning. 07:15
07:23 rurban left 07:26 cognominal joined 07:30 zby_home joined 07:31 SamuraiJack joined 07:36 brrt joined, rurban joined 07:48 cognominal left 07:50 cognominal joined 08:01 fgomez left 08:05 fhelmberger joined
masak how much time *does* it take, assuming some achievable counting speed by today's computers, to rol over a 64-bit counter? 08:05
08:07 fhelmberger left
brrt 2^64 ticks? 08:07
frettled If you know it's linear counting, you can probably parallelize it a lot.
brrt simplifying a bit, making a hertz a tick
08:07 fhelmberger joined
brrt 3ghz is 3e12 ticks 08:07
2^64 = 4e6? 08:08
so about 3000 seconds, less than an hour i'd guess
diakopter 4e6?
brrt wait, thats wrong 08:09
08:09 wamba joined
frettled If you run it on a 1e4-core GPU (and you can still count 1/tick), it will take 10 seconds or so, then? 08:09
sorear brrt: g is 1e9
frettled (sounds implausible)
sorear masak: most modern cpus have a 64-bit register that increments on every clock cycle
brrt you get 3 orders of magnitude for every 10 orders of 2 08:10
sorear useful for some timing tasks
masak sorear: sounds highly useful, yes.
brrt so, 2^64 = 2^4 *10^(6*3)
16e18
sorear if, somehow, you got a state-of-2012 Intel CPU to run continuously for 68 years, the timestamp counter would roll over
frettled So use an Nvidia or AMD GPU instead. 08:11
sorear er, actually it would be 136
jnthn has a C program running. Let's find out! :P
Well
Yeah, let's not
brrt was also writing a c program
diakopter hee
jnthn To get 32-bit to roll over is 4s. :)
sorear frettled: parallelism does not help here, because of diakopter's scotsmanning :p
brrt 16e18 / 3e9 = 5e9 seconds
sorear brrt: protip: 2038 - 1970 = 2**31 seconds 08:12
Woodi r: my int @a; push @a, 3;
p6eval rakudo dbf347: OUTPUT«Cannot call 'push'; none of these signatures match:␤:(Any:U \SELF: *@values, Mu *%_)␤␤ in method push at src/gen/CORE.setting:1241␤ in sub push at src/gen/CORE.setting:5869␤ in block at /tmp/Nyh_c3S2Od:1␤␤»
sorear you should have 2038 burned into your mind by now
diakopter sorear: yeah, sorry, you can't count by 2**64 :P
jnthn r: say (1 << 32) * 4
p6eval rakudo dbf347: OUTPUT«===SORRY!===␤Unsupported use of << to do left shift; in Perl 6 please use +< or ~<␤at /tmp/zooxKKq56R:1␤»
jnthn r: say (1 +< 32) * 4
p6eval rakudo dbf347: OUTPUT«17179869184␤»
sorear also, a state of 2012 processor has a clock frequency of 2**31 +- 1
jnthn r: say "{((1 +< 32) * 4) / 3600} hours"
p6eval rakudo dbf347: OUTPUT«4772185.884444 hours␤»
frettled sorear: well, if you increase the counter in parallel on a few thousand cores, you might just increase it a few thousand times per tick instead of just once. 08:13
jnthn r: say "{((1 +< 32) * 4) / (3600 * 24 * 365.5)} years"
p6eval rakudo dbf347: OUTPUT«544.0248386 years␤»
frettled Just saying.
I don't know if that's possible with CUDA programming etc.
brrt can't imagine it takes that long
sorear frettled: if you increase it more than once per tick, diakopter will hate you.
diakopter frettled: you can't increment a memory location in parallel; if you want it incremented, you'd have to use atomic instructions anyway
frettled diakopter: well, it turns out you can, if you know you're going to count _all_ the numbers from 0 to MAXINT_64. 08:14
diakopter: because you know that you will parallelize it, you know you can tell each of e.g. 1000 cores to start at numbers 1 through 1000, and then each increments by 1000. 08:15
brrt well, it takes some time, though 08:16
also, clang is pretty awesome
diakopter heh
frettled: but you're not guaranteed they'll assign in order 08:17
08:17 fgomez joined
brrt r: say (5e9)/(365*24*3600) 08:18
p6eval rakudo dbf347: OUTPUT«158.548959918823␤»
frettled diakopter: that's not very important, the first one to reach MAX_INT_64 may get the privilege of counting from MAX_INT_64-999 to MAX_INT_64-1.
08:18 cognominal left
sorear brrt: told you 08:18
brrt yeah, its true 08:19
08:20 cognominal joined
masak r: class Unit { has $.scale }; constant years = Unit.new(:scale(3600 * 24 * 365.24), :name<years>); class Seconds { has $.seconds; method as(Unit $unit) { "{$.seconds / $unit.scale} $unit.name()" } }; sub postfix:<seconds>($seconds) { Seconds.new(:$seconds) }; say ((1 +< 32) * 4)seconds.as(years) 08:20
p6eval rakudo dbf347: OUTPUT«No such method 'name' for invocant of type 'Unit'␤ in method as at /tmp/x_BAPcrkRJ:1␤ in block at /tmp/x_BAPcrkRJ:1␤␤»
masak r: class Unit { has $.scale; has $.name }; constant years = Unit.new(:scale(3600 * 24 * 365.24), :name<years>); class Seconds { has $.seconds; method as(Unit $unit) { "{$.seconds / $unit.scale} $unit.name()" } }; sub postfix:<seconds>($seconds) { Seconds.new(:$seconds) }; say ((1 +< 32) * 4)seconds.as(years)
p6eval rakudo dbf347: OUTPUT«544.4121085 years␤»
masak \o/ 08:21
brrt nice
diakopter that's a long-running program
08:21 wamba left
diakopter like, longer than computing 08:22
sorear some day computing will be 1000 years old. 08:23
what, then, will the longest-running computation have been?
diakopter quick, start one now 08:24
masak clearly you're not watching enough "ancient aliens" TV shows.
:P
brrt the longest running computation?
the answer to the question of life, the universe, and everything
sorear masak: I watched one once, it was one too many
masak sorear: same. 08:25
jnthn just saw the reviews and was like...nah, not downloading that... 08:26
masak sorear: it made intelligent design seem quite reasonable in comparison.
tadzik :D
masak relatedly, I've never been able to understand how The X Files show could have the tagline "I want to believe" with a straight face. 08:27
brrt different times 08:28
masak not that different. it was after the invention of irony, for sure.
and I remember thinking it at the time. 08:29
diakopter irony breeds rusty
jnthn r: class A { method m() { eval 'say self' } }; A.m 08:30
p6eval rakudo dbf347: OUTPUT«===SORRY!===␤'self' used where no object is available␤at eval_0:1␤»
jnthn r: class A { method m() { $_ = 42; eval 'say $_' } }; A.m
p6eval rakudo dbf347: OUTPUT«Any()␤»
jnthn r: class A { method m() { try { die "in a fire" }; eval 'say $!' } }; A.m 08:31
p6eval rakudo dbf347: OUTPUT«Any()␤»
jnthn Hm
I don't like any of those answers. :)
masak moritz: re DAGs and nested sets: they don't, can't generalize cleanly. cf parsing: dividing a stream of tokens into nested sets/a parse tree. a "parse DAG" could group non-contiguous tokens, and the crucial comparison trick wouldn't work.
moritz: of course, now that I've said that, someone is going to prove me wrong :P 08:32
moritz masak: searching the internets for DAGs in SQL, I didn't find any such generalization either
08:33 hoelzro|away is now known as hoelzro
moritz masak: and the only saneish approach seems to be store the transitive closure of the edges (ie all paths) in the DB. 08:33
which is quite a stretch, that lets nested sets look like a child's toy by comparison
jnthn
.oO( using a graph database may just be saner...if only it were an option... )
moritz jnthn: correct
jnthn: and if only we didn't have ~80kloc of code and how knows how many tens of millions of row that depend on the that f*cking mysql installation+schema 08:34
jnthn (The Neo4j folks are based in Malmo... :))
moritz: It's OK - no, *good* - to use different persistence strategies for different bounded contexts in a system... 08:35
moritz well, but we don't want a context boundary at the place where the DAG comes in :( 08:36
jnthn Hm.
08:41 dakkar joined
Woodi I remember once hearing somone was storing SQL queries in LDAP db becouse it is specialized in searches on mainly readonly, hierarchical data... 08:46
08:47 wamba joined
brrt if you use clang on mac os x, it is going to take a /lot/ longer than 160 hours 08:48
jnthn
.oO( Please say brrt isn't talking about time to compile Rakudo... )
brrt 160 years, and its about the 64-bit counter thing :-) 08:49
jnthn oh! :)
brrt i still have to compile rakudo on this machine
tadzik now roll over an int on Rakudo 08:50
brrt how large is a rakudo int? 08:51
moritz as large as a parrot INTVAL
08:53 Celelibi left 08:57 cognominal left
brrt intval is, afaik, just int 08:57
which will compile into a 32 bit integer even on 64 bit processors 08:58
jnthn Nope 08:59
It's 64-bit here
brrt ok, thats fair
int has been 32 bit on darwin on amd64 and linux on amd64 on two occasions for me now 09:00
with clang and gcc both
sorear brrt: INTVAL is usually intptr_t
jnthn Good news: I've got eval of self and attributes to work if they're in scope
Better news: that means you can inspect attributes in the debugger
Bad news: I've caused some spectest fails ;/
sorear parrot needs a type that will allow it to pretend pointers and integers are the same 09:01
arnsholt First you make it run, then you make it right, no? =)
jnthn It's not in any way clear to me why I've busted it...
arnsholt Yeah, that sucks
jnthn tries one tweak 09:02
09:02 cognominal joined
jnthn ah, that fixes at least one test... 09:02
multiple, actaully 09:03
moritz fwiw I have a local commit that adds \A, \Z and \z to nqp's p5regex 09:05
jnthn \o/ 09:06
moritz I just haven't yet got around to it test
(all the old tests still pass :-)
jnthn There's quite a few in S05
S05-modifier/perl5_(5 or 6 or 7).t iirc
hmmm 09:07
class A61354_1 {
eval('method x { "OH HAI" }')
};
A61354_1.x;
This now actually works locally
We have a test that expects it to die.
It works now because $?PACKAGE is correctly see to A61354_1, whereas before it was set to GLOBAL
So, we passed the test due to a bug really. But...is the test actually valid? 09:09
r: class A { BEGIN eval('method x { "OH HAI" }'); }; A.x 09:10
p6eval rakudo dbf347: OUTPUT«Useless declaration of a has-scoped method in mainline␤No such method 'x' for invocant of type 'A'␤ in block at /tmp/h0H0gtY6Hl:1␤␤»
jnthn The patch I have makes that work, fwiw. Which seems useful.
masak aye.
jnthn I don't have a good way to make the one work at not the other, afaict. 09:11
masak with the BEGIN, it definitely should work.
jnthn *and
masak hm, even without the begin, it should work.
BEGIN*
jnthn So you're arguing that the test is wrong?
masak if the test expects the code to die, I argue it's wrong, yes.
jnthn wfm 09:12
jnthn is happy to hear any other views
oh... 09:13
masak realized during a walk today that he wants to give a talk "In Praise of Views and Models"
jnthn And the other test failure I have is rather interesting too
class One::Two { } 09:14
brrt masak: views as in sql views?
jnthn eval_dies_ok 'class One::Two { }', 'cannot redeclare an existing class';
This used to work because eval always saw the current package as GLOBAL.
Now it is broken because the eval call itself is done in Test, so it's checking you can declare Test::One::Two, which of course is fine. 09:15
sorear sleep& 09:16
brrt sleep well
jnthn night, sorear
masak brrt: SQL views are one specific implementation of the more general concept. the "V" in "MVC" is another. caches and indices are another. read models in a CQRS-esque architecture are another. 09:18
brrt yeah, i see what you mean
masak the general theme is perhaps "derived information".
brrt they are useful 09:19
masak I've come to consider them to be slightly more than useful in recent months. I feel they are verging on necessary for some types of complexity. at least I don't know of any alternative way to keep complexity in check. 09:22
brrt what, object oriented programming is not enough? :-p
masak heh. I used to be more sceptical towards OO then I am now. 09:26
though I still believe we're liking inheritance a little too much. call it our Platonic bias.
brrt is pretty sceptical towards 'conventional wisdom' than to OO in general 09:27
masak I've seen some quite beautifully crafted OO systems. I've seen a lot of crap rendered as OO systems. a mediocre programmer is probably more likely to mess up an OO API than merely a procedural one. but to an experienced designer (and the system's consumers), the OO bits can be a real help. 09:30
moritz in my early days of OO programming, I used to read a lot of books on OO design 09:31
brrt no arguing there
moritz and mostly my designs were crap
over-engineered and impractical 09:32
what worked for me is starting procedural
brrt in my experience, the nicer OO design border on functional
s/design/designs
moritz and then I tended to notice that I passed the same set of parameters to some functions
and then I made objects of those common parameters, and replaced the subroutine calls by method calls 09:33
and while the resulting design wasn't beautiful, it usually worked
09:33 kenjiskywalker left
moritz and slowly I'm getting more experience, and can kinda forsee what kind of objects/classes I'll need 09:33
masak moritz: that's a really nice way to think of it. OOD as "emerging" out of procedural design. 09:35
dalek kudo/nom: 5a92ef1 | jnthn++ | src/Perl6/Grammar.pm:
Improve eval and the REPL.

This makes eval able to see any self that is in scope and also attributes. It also means $?PACKAGE in eval will work. Furtheremore, GLOBAL now is handled properly in the REPL, carried between lines rather than a fresh one per line.
moritz jnthn: are all the enabled p5regex spectests supposed to pass? 09:37
'cause I have a few failures here, and the first I looked at looks pretty much unrelated to anything that I did
jnthn moritz: They've been passing here. 09:38
They all pass in a current spectest run for me
dalek ast: 2267094 | jnthn++ | S (2 files):
Fix some package/eval related issues.

  eval now has a better idea of current package and this can caused
some issues for various tests that assumed that an eval would always start out with the current package being GLOBAL.
moritz weird, the failing tests passes in isolation 09:40
jnthn makes it so you can just write "self" at the debugger prompt to look at self.
moritz no, related to interpolation 09:41
r: use Test; my $bang = "!"; is(("a!" ~~ rx:P5/((((((((((a))))))))))$bang/ && $/), "a!", "re_tests 330/0 (428)"); done;
p6eval rakudo dbf347: OUTPUT«not ok 1 - re_tests 330/0 (428)␤# got: ''␤# expected: 'a!'␤1..1␤# Looks like you failed 1 tests of 1␤»
moritz r: use Test; is(("a!" ~~ rx:P5/((((((((((a))))))))))!/ && $/), "a!", "re_tests 330/0 (428)"); done; 09:43
p6eval rakudo dbf347: OUTPUT«ok 1 - re_tests 330/0 (428)␤1..1␤»
moritz passes without the interpolation
jnthn huh, I thought all the interpolation tests were fudged
You are running the fudged version of the test file, yes? :)
moritz oh, my roast copy was stale
jnthn oh :) 09:44
moritz 'cause I ran 'make localtest' instead of 'make spectest'
sorry for the noise then
jnthn That also explains it :)
moritz The program 'perl6' is currently not installed. You can install it by typing: 09:46
sudo apt-get install rakudo
jnthn Wow! 09:48
masak \o/ 09:51
brrt brew doesn't have it yet 09:52
moritz (that's an off-the-shelf Ubuntu installation)
brrt nice, i thought fedora contained it as well, will have to check 09:53
09:54 wamba left
tadzik ha, I have the same thing here 09:54
09:54 wamba joined
tadzik only in bash though 09:54
09:54 Psyche^ joined 09:57 Patterner left, Psyche^ is now known as Patterner
tadzik well, it'd be a lot nicer if they had something newer than 2011.07 :P 09:57
jnthn oh, ouch! 09:58
masak such small things matter a lot. we'll never get hard numbers of how many people will install Rakudo because of that message... but if we saw it, we'd probably consider it significant.
oh and yes, we should make the Ubuntu people package a newer Rakudo :)
tadzik I'm afraid "hey, how about we package it for you?" would be better received
and I have this Ubuntu machine at work... 09:59
and a PM group friend who used to maintain a PPA with rakudo and star I think
moritz somehow my \Z and \z always seem to match :( 10:00
10:02 cognominal_ joined 10:04 cognominal left
jnthn moritz: Gotta head for a meeting now, but if you're still stuck with it I can look later on 10:08
10:10 anuby left 10:14 cognominal__ joined, cognominal_ left
jnthn back in a few hours & 10:17
10:21 wamba left 10:33 daxim joined 10:57 kaleem_ joined 11:00 kaleem left, gootle left 11:04 wamba joined 11:06 Su-Shee_ joined 11:09 Su-Shee left 11:16 Su-Shee_ is now known as Su-Shee
brrt yay, rakudo installed w/o a hig 11:24
tch
11:29 wamba left 11:41 gerhard2 joined 12:02 mikemol left 12:04 mikemol joined 12:06 flightrecorder left 12:07 mucker joined 12:22 sftp joined 12:28 wamba joined 12:29 flightrecorder joined 12:33 wamba left
[Coke] jnthn: this is not the first time rakudo has failed to update in place. I suspect I need to cut over to doing a fresh checkout each time. 12:36
phenny [Coke]: 07:07Z <jnthn> tell [Coke] looking at the spectest roast data, I can't help but wonder if your Rakudo is failing to update.
[Coke]: 07:07Z <jnthn> tell [Coke] all the S02 and S05 failures relate to features recently added to Rakudo.
[Coke]: 07:08Z <jnthn> tell [Coke] Yes, something is wrong because a bunch of the most recent additions to t/spectest.data like S05-modifier/perl5_[2..4].t aren't being run.
[Coke] jnthn: did a manual rebase, next run should go better. 12:38
12:40 gerhard2 left 13:01 fgomez left, fgomez joined, am0c joined 13:03 hash_table joined 13:19 GlitchMr joined, mikemol left, flightrecorder left 13:31 bluescreen10 joined, marloshouse joined 13:32 hash_table left 13:47 kaleem joined 13:49 kaleem_ left, Bob_ joined 13:50 mikemol joined
arnsholt I'm going on a research stay in Copenhagen in a bit, and it turns out it's in the same area as the Perl 6 CPH hackathon 13:52
13:52 Bob_ left
moritz \o/ 13:53
13:54 flightrecorder joined 13:59 Celelibi joined 14:04 flightrecorder left 14:05 flightrecorder joined 14:07 stopbit joined 14:12 Celelibi left 14:13 zamolxes_ left 14:15 skids joined, fgomez left
dalek p: 56ae4f0 | moritz++ | / (3 files):
[p5regex] implement \A, \z and \Z

also add some basic tests
14:15
14:17 zamolxes joined
dalek ast: 567f3ca | moritz++ | S05-modifier/perl5_8.t:
refudge perl5_8.t for rakudo
14:19
kudo/nom: 547fcb3 | moritz++ | t (2 files):
bump NQP revision to get p5regex \A, \z and \Z

also enable two more test files
14:20
14:29 mikemol left, PacoAir joined 14:33 kaare_ joined 14:34 Celelibi joined 14:36 fgomez joined, sqirrel joined
jnthn back from meeting 14:37
14:37 mikemol joined
brrt \o jnthn 14:38
jnthn arnsholt: If you have time and wanna meet up for dinner and/or beer in Copenhagen some time while you're there, let me know. It's only 45 mins from here by train :) 14:39
14:39 Celelibi left
arnsholt Oooh, that's an excellent idea! 14:40
I'll be there for three weeks, so I'll definitely have to take you up on that offer
jnthn moritz: wow, we got test files 7 and 8! Nice!
arnsholt (I'm there from the 22nd to the 8th)
October 22nd to November 8th, that is 14:41
moritz jnthn: I had to fudge one test though (that uses \G) 14:43
14:44 hash_table joined
jnthn \G...hmm...I even forget what that one is :) 14:46
arnsholt Anchor to end of last match under /g
jnthn ah 14:47
colomon jnthn: I was meaning to ask the European guys around here, there's a decent chance I'll be spending a week or so in Switzerland in the near future for $work. Dunno if anyone is close enough to visit or not, looks like all of Germany is in the way for you... 14:48
moritz colomon: feel free to drop in southern Germany at my place :-) 14:49
jnthn And Denmark!
moritz (though we're planning to move on 2012-11-03, that might be a bit chaotic then)
colomon Mind you, I have no idea where in Switzerland...
moritz it's not that big :-) 14:50
colomon And I don't know if I'll have any free time at all. :)
jnthn Was gonna say, Switzerland is fairly small
Compared to Germany, at least
And it has awesome mountains. \o/
brrt and a fair train system, also 14:51
colomon is very much a flatlander
jnthn brrt: Yes, that's also really quite good.
colomon where I grew up, the next town over had a hill. it's maybe 50 feet high.
arnsholt In USian terms, Wikipedia informs me that Switzerland is somewhere between Maryland and West Virginia in area (closer to Maryland, really)
daxim blinks 14:52
jnthn colomon: Sounds like the bit of Sweden I live in at the moment :)
arnsholt Or Denmark. Switzerland is a bit more hilly, let's say =)
colomon the township I lived in built an artificial hill so kids could go sledding in the winter. :)
come to think of it, so did the city I live in now. ;) 14:53
14:57 att joined
colomon suddenly wonders about the status of his passport. 14:57
found! 15:02
and not yet expird.
*e
15:11 Celelibi joined
colomon jnthn: just parsed a 4.3 meg STEP file in 6m48s (on my Mac, which is a bit faster than the Linux box) 15:14
jnthn OK, with latest Rakudo? 15:15
15:15 flightrecorder left
jnthn colomon: moritz's version bump should also have pulled in some code-gen improvements I did yesterday :) 15:15
jnthn works on teaching the debugger some more things
15:16 Celelibi left
colomon oooo, will try again soon... 15:16
jnthn There's more I can do in the code-gen area but I've switched to debugger work for now because I've got a talk on it on Saturday and want to have moar shiny stuffs :)
colomon :) 15:18
15:20 MayDaniel joined
jnthn I'm *so* glad I built this so I can write most of it in Perl 6 :) 15:20
15:20 ruz joined
TimToady colomon: note that some countries will not honor a passport with less than six months left on it 15:23
colomon TimToady: that's good to know! But I've got several years left, it turns out. 15:24
jnthn has until 2014, and thinks that'll conincide nicely with when he runs out of pages 15:26
colomon Mine is pretty spectacularly unused, though ... I only got it so that I could continue going to Canada post-9/11, and that function is now handled by an enhanced driver's license. 15:27
15:28 lostuser23 joined 15:29 brrt left
moritz sysadm@monitor1:~ > sudo -l 15:29
User sysadm may run the following commands on this host: (root) NOPASSWD: /etc/init.d/nagios3, /usr/sbin/nagios3, /usr/bin/pkill -9 nagios3, /usr/sbin/slay nagios,
(it seems every employer can log in as sysadm on this machine) 15:30
jnthn moritz: mischannel? :)
.oO( I mean, er, what's the IP?! :D )
moritz jnthn: you can't :-)
jnthn: not mischannel; just found it funny that there are several ways to kill nagios, available to everybody at $work :-) 15:31
jnthn moritz: Oh! :)
moritz (and stuff is usually pretty locked down at OS level)
TimToady masak: oh, I didn't answer irclog.perlgeek.de/perl6/2012-10-11#i_6051257 for you. Unlike 'uniq', the putative 'dedup' has the added feature of *not* treasuring up everything in a set, since it only worries about adjacent dups 15:32
15:32 thou joined 15:33 lostuser23 left
TimToady maybe it would be better named 'noruns' or something 15:33
jnthn ...but that sounds like an anti-diarrhea product 15:34
TimToady or a baseball game 15:35
15:35 rindolf left
TimToady well, if we build the functionality into M, then it'll be fairly rare, and we could name it something like remove-adjacent-duplicates :) 15:36
15:38 MikeFair_ left
[Coke] TimToady: (less than six months) That is crazy talk, sir. (but I do not dispute its truthiness) 15:40
15:40 MikeFair_ joined
TimToady [Coke]: the theory being that they don't want to give you a visa that is theoretically longer than your passport is good for 15:44
even if you only plan to stay a week
[Coke] ... they clearly need smarter visa end dating!
(dedup) coalesce? collapse? (suggestions from some of my alums) 15:45
TimToady which is such a joy to deal with--see .ru
[Coke] one said "oh, that's like shell's uniq" :)
TimToady so maybe uniq is misnamed... 15:46
moritz let's just have uniq and unique :-) 15:47
(with different semantic, of course)
[Coke] docs.python.org/library/itertools.html#recipes - "unique_justseen"
meh.
TimToady wait, if we distinguish Mle from Mlt, then dedup is just Mne :) 15:48
well, it's ()Mne to work on one list :) 15:49
am0c To comprehend large sketch of what has been changed during years or months with perl6 and rakduo, where should I look at first? 15:53
[Coke] "non-repeating" ? 15:54
am0c: do you really need to know what changed, or is just "how it is now" sufficient?
daxim blob.perl.org/perlweb/dev/perl6/tal...-Perl6.pdf 15:55
ancient history 15:56
strangelyconsistent.org/blog/happy-...ary-perl-6
am0c now may be sufficient. but I want to know tiny history just for 'months' or so.
daxim recent history, but not very detailed
am0c thank you so much, daxim 15:57
[Coke] GlitchMr is writing up (recently only) a what's changed blog.
am0c I see
daxim then there are of course the changelogs of the softwares themselves
[Coke] I think non-repeating is the best suggestion from the RPI crowd. 15:59
am0c thank you! 16:00
16:03 am0c left 16:05 Celelibi joined 16:10 paul3X joined 16:11 kaleem left
paul3X Hello, who of you use Perl on the Internet as CGI? 16:12
bbkr newest version of JSON::RPC::Server uses PSGI 16:13
moritz paul3X: are you asking about Perl 5 or Perl 6? 16:14
paul3X moritz: Perl 5
moritz paul3X: then you're a bit off-topic here 16:15
paul3X moritz: ohh, I see, sorry then
16:16 paul3X left 16:21 hoelzro is now known as hoelzro|away 16:25 tadzik left 16:27 daxim left 16:29 preflex joined 16:30 Pleiades` left 16:32 Pleiades` joined 16:40 rindolf joined 16:44 tadzik joined 16:46 dakkar left
jnthn Debugger now supports self, attribute introspection, step over a call and step out of the current routine. :) 16:46
ingy jnthn: sounds ossum! 16:47
rindolf jnthn++
jnthn r: say 588 + 406
p6eval rakudo 547fcb: OUTPUT«994␤»
jnthn Total debugger implementation still under 1000 lines of code :) 16:48
(first number is Perl 6, second is NQP)
ingy r: say 867-5309
p6eval rakudo 547fcb: OUTPUT«-4442␤»
16:49 birdwindupbird left 16:53 fgomez left 16:54 fglock joined
jnthn dinner & 16:55
16:58 integral left 17:00 integral joined, integral left, integral joined 17:03 Juerd left 17:04 tadzik left
TimToady is it already a logged bug that niecza doesn't have @*ARGS or %*ENV at BEGIN time? 17:06
dalek rlito: b93e775 | (Flavio S. Glock)++ | / (5 files):
Perlito5 - js - move Array implementation to a separate package
17:07
TimToady tried to define a constant in terms of @*ARGS, anit dint werk
17:12 Chillance joined 17:13 topo left
[Coke] [6~[6~[5~ 17:24
colomon jnthn: 6m48s before "member:moritz's version bump", 6m27s after. 17:38
17:43 tadzik joined
tadzik who killed feather? :( 17:44
17:45 Juerd joined
tadzik savior! 17:45
17:46 fhelmberger left 17:47 tadzik1 joined, topo joined 17:48 kaleem joined, wamba joined, tadzik left 17:49 tadzik1 is now known as tadzik
[Coke] looks like niecza got stuck in the daily run. 17:53
17:58 flightrecorder joined
colomon pulls latest niecza and starts looking at it on Linux. 17:59
[Coke] ah. wonder if someone killed the thing running the tests, but not the niecza tests themselfes, which are now running while rakudo is building. 18:04
jnthn colomon: Another little improvement. Nice :) 18:07
colomon indeed! :) 18:08
18:09 sivoais left
[Coke] me just kills the whole daily run for today. everything was in a weird state. 18:11
18:11 kaleem left
colomon [Coke]: I get two test files failing in my niecza spectest run, but no hangs. 18:12
[Coke] hokay. I'll do individual runs this evening to make sure it isn't likely to explode tomorrow. 18:16
colomon++
18:21 sivoais joined 18:36 kaleem joined 18:39 kaleem left 18:44 wk joined 18:48 kurahaupo joined
dalek ast: 12d03bf | (Solomon Foster)++ | S12-class/basic.t:
Refudge for niecza. (new test added?)
18:51
18:52 SamuraiJack left 18:54 wk left, tokuhiro_ joined, SamuraiJack joined, fgomez joined 19:00 birdwindupbird joined
sorear good * #perl6 19:03
diakopter o/ 19:06
colomon o\
jnthn o/ 19:07
sorear |o 19:08
19:19 popl joined, birdwindupbird left 19:20 SamuraiJack left 19:21 birdwindupbird joined
sergot_ hi o/ 19:23
sorear hey sergot_ 19:24
19:24 sergot_ is now known as sergot
japhb Mmmm, fooood ... 19:26
jnthn Something nice? 19:27
japhb Goan. Chicken Xacuti, Garlic Naan, rice to soak up the Xacuti ... :-)
jnthn Mmmmmm. 19:28
sorear garlic nyaan
japhb Can you get decent Indian-subcontinent food in Sweden?
19:28 kurahaupo left
jnthn Decent, yes. 19:28
Quality varies, but there's some decent stuff to be had. 19:29
Only a few really stand-out places I've found.
japhb I remember as a youngin' having Indian food in London, and it was amazing. I think I would miss moving away from that.
jnthn Yeah, it's much easier to find great Indian-subcontinent food in the UK than here.
Stockholm has some reasonable places. The one I like most is a bit out of the way from where I normally am for teaching. 19:30
In Gothenburg it took me ages to find a place that was any better than average, but I eventually hit on one. 19:31
japhb heh
Probably a fun research project. :-)
jnthn Yes :)
Trouble is, since I found the good one, I didn't have another class in Gothenburg... 19:32
Think I've got one or more in November.
OK, question. 19:35
I'm adding trace points to the Rakudo debugger
They're like breakpoints, but instead of breaking, they evaluate an expression of some kind and log the result.
19:36 fgomez left
jnthn It's a relatively easy feature to add, but I'm not quite sure how adding/working with them wants to look. 19:36
diakopter macro-ish?
jnthn The breakpoint adding syntax is just
bp add SomeFile:42
I can do something like
tp add SomeFile:42 $some_var 19:37
But I'm figuring most useful is if you can do things like, say you want it logged to a file.
japhb Oh, that reminds me jnthn, why do you use 'step out' instead of 'return' to mean "continue until leaving the current routine"? (I ask because 'return' is the term I'm used to, and the one the perl5 debugger uses.)
diakopter visual studio uses "step out"; eclipse uses "step return" 19:38
japhb Do you have conditional breakpoints?
jnthn japhb: Probably because that's (a) the term the VS debugger uses, which I'm far more used to than the perl5 one, and (b) I already used 'r' to mean "run"
japhb: No, not yet. It's another "easy feature", but I can think of a good syntax for that. 19:39
japhb diakopter, weird. Maybe it's Windows v. *nix convention
jnthn japhb: I'm not strongly attached to "step out".
japhb jnthn, the perl5 debugger just adds it as a boolean expression after the location. In your syntax:
bp add Somefile:42 $some_var > 12
jnthn japhb: I was going to for for a "if" or "unless" before the condition 19:40
japhb: Maybe that's just noise though
japhb jnthn, I'm not attached to 'return' either, it was just curiosity. In perl5db, 'r' is 'return', and 'c' is continue (what you seem to mean by 'run')
diakopter jnthn: will the evaluation of the expression modify some global hash of counters? %*tp{'my_tp'}++ 19:41
japhb perl5db is a little *too* huffmanized, really. I can't remember a debugging session in which I haven't had to use the builtin cheat sheet.
diakopter if you wanted to count multiple things
jnthn diakopter: No, it'll just push that evaluation onto the list of seen results
diakopter: They aren't for counting 19:42
They're for seeing how something changes over time.
sorear japhb: gdb uses 'finish' to mean 'step until end of routine', and 'return' to mean 'inject a return statement *now* and don't run the rest of the routine'
japhb 'b' for set breakpoint, 'B' for delete, for instance
diakopter or, a logging watch expression
*oh
sorear japhb: the WebKit Javascript debugger uses 'Step In', 'Step Out', and 'Step Over'
jnthn It's like print statement debugging without adding anything to the program and being able to add them dynamically 19:43
japhb: Yeah, that's a little too huffmanized for me.
japhb Huh. I guess this is an opportunity for us to decide what linguistically makes the most sense for us, since there isn't a really clear precedent.
jnthn japhb: That also.
Mostly I want to strike a balance between not having to type too much when you learn it and learnability. 19:44
japhb I like your syntax a bit better. "bp add"-style syntax is easier to remember
sorear japhb: ever play with DEBUG.COM and/or the Macintosh ROM debugger?
japhb Man, I'd almost forgotten the DEBUG.COM days. Actually, I don't think I used that one much. More of Turbo Debugger, once I started DOS programming. Before that I was using EDTASM+ on the Color Computer, and before that ... well, I didn't really know how to use a debugger in my CP/M days. :-) 19:46
colomon CP/M! 19:51
19:54 raiph joined
sjohnson ahh. debug.com 19:54
19:59 Patterner left 20:03 grondilu joined 20:06 GlitchMr left, mucker left
flussence it seems absurd now, but the first "programming" I ever did was on one of those game console add-on cartridges with a built in hex editor... 1kB of user code! Over 4 opcodes to choose from! 20:06
(fortunately I got an actual computer not long after that :) 20:07
moritz it took me a while to realize that "debug.com" isn't a domain, but a DOS executable :-) 20:08
20:08 am0c joined
jnthn :D 20:08
Conversely, when I first saw a foo.com I momentarily wondered if websites were executables... :) 20:09
flussence I've come across a few that use .exe CGIs...
20:16 kaare_ left, zby_home left 20:20 arlinius joined 20:22 wamba left
popl You people are old. ;P My first programmable computer was a Color Computer 2. 20:22
tadzik mine was 386, but I'm the youngest one here ;) 20:23
sorear mine may also have been a 386? all I know for sure is that it was running Windows for Workgroups 3.11 and had 8 MB of RAM 20:24
grondilu my API to openssl digests (github.com/grondilu/openssl) do not work with binary numbers (charactrs above 128). I can't figure out why. If someone has an idea, feel free to leave a comment, tell me later or something.
tadzik mine had 3.1, later upgraded to 3.11
also, Norton Commander
grondilu s/binary numbers/binary strings/ 20:25
moritz define "does not work" 20:26
does give wrong results? or segfault?
popl sorear: Windows 3.1 only required a 286 so it could have been a 286.
oh wait
3.11
20:27 hoelzro|away is now known as hoelzro
popl sorear: 386 then 20:27
hoelzro hi guys
moritz started with 684
grondilu moritz: it does not return the expected digest.
20:28 wamba joined
popl s/with/in/ ? 20:28
I am joking, I do not even know you moritz. Please do not take offense. :P
hoelzro so I'm trying to build a rakudo * package on Arch Linux, and during make install, nqp is complaining that it can't find Perl6/Grammar.pbc. That's probably because the PBC file has been written to a staging directory for now; is there an environment variable I can set to get nqp/parrot/whatever to look in that location?
moritz erm, 486
popl: no offense taken
[Coke] my earliest programmable computer was the atari400. (followed sooner after by the C64, the C128, and the Atari500) 20:29
popl atari!
[Coke] er, Amiga500. ETOOMUCHATARI
sorear also, I was approximately 7 when I started playing with said 386
moritz grondilu: that's because Str.chars returns number of codepoints
grondilu: but openssl wants the number of bytes 20:30
sorear surely openssl bindings should use Buf, not Str ?
popl Haha: 'also known as the A500 (or its code name "Rock Lobster")' 20:31
[Coke]: ^
moritz sorear: there's no easy way to use Buf and NativeCall together atm
hoelzro is anyone able to help me with my issue building a rakudo * package? 20:34
grondilu modifies code to avoid using chars for buffers 20:35
dalek ecza: bbf7bbd | (Solomon Foster)++ | lib/ (3 files):
Pull in John D. Cook's Special Functions C# module and use it to implement Real versions of gamma and expm1.
20:38
[Coke] hoelzro: I don't understand what you mean by staging directory - how is this different from a normal build? 20:40
sorear [Coke]: when you're building a .rpm or .deb, you don't want the build to affect the build system 20:41
[Coke]: so you do somethinkg like --prefix=$PWD/tmp
[Coke]: but, if the software compiles in paths (like Rakudo does), they need to be correct for a _final_ install location of /usr 20:42
hoelzro right 20:43
so make install is trying to compile the debugger
sorear moritz: uh oh
hoelzro but Perl6/Grammar.pbc is still in $pkgdir/...
20:46 kurahaupo joined 20:48 zpmorgan joined
grondilu even if I explicitely use $buf.elems for the length of the string made out of $buf, it still does not give the expected digest: paste.siduction.org/20121011204932 20:50
[Coke] so you install it where you know it doesn't go and then fixup paths later?
sorear [Coke]: sounds about right 20:53
hoelzro is there a way to tell NQP additional directories to search? 20:56
like PERL6LIB
flussence r: say +$*IN.lines 20:57
p6eval rakudo 547fcb: OUTPUT«1␤»
flussence if I do "say +open('/usr/share/dict/words').lines", niecza takes 6 seconds and rakudo takes 51. 20:58
20:59 sqirrel left 21:01 hash_table left 21:02 skids left
hoelzro does anyone have a Rakudo * 2012.09 RPM/DEB spec file I could look at? 21:02
I'd really like to make a package for Arch.
21:03 birdwindupbird left
dalek rl6-bench: b8957ae | (Geoffrey Broadwell)++ | bench:
Detect compiler versions at start of benchmark run
21:12
jnthn Debugger has some basic tracepoint support now 21:14
jnthn thinks he probably has almost enough stuff to show in his talk on it now :)
21:14 flightrecorder left
japhb jnthn++ 21:16
21:16 hoelzro is now known as hoelzro|away
japhb jnthn, have you hooked up the debugger repo to feed dalek? 21:17
jnthn no 21:18
Is it interesting/worthwhile?
japhb I think so, yes
I like the warm fuzzies I get from seeing commit messages on cool projects. :-) 21:19
Plus I learn a lot by clicking on diff links for interesting-sounding commits.
dalek kudo-debugger: 9bec898 | jnthn++ | lib/Debugger/UI/CommandLine.pm:
Implement step over.

It takes care to try and do the right thing in the case of recursion, and recognizes when you step to a stack frame below the one you were doing a step over in, so it will pause just outside of it.
21:20
kudo-debugger: e2daca3 | jnthn++ | lib/Debugger/UI/CommandLine.pm:
Factor out file/line pos parsing.
kudo-debugger: 93a4325 | jnthn++ | lib/Debugger/UI/CommandLine.pm:
Implement basic tracepoints.
21:20 wamba left
jnthn japhb: be happy :) 21:20
japhb I already am. ;-) 21:21
21:22 fgomez joined, sisar joined
flussence ooh, it does colour! 21:22
21:23 wamba joined 21:29 tokuhiro_ left 21:32 fgomez left, Chillance left
flussence that code's a lot easier to understand than I would've imagined a debugger to be :) jnthn++ 21:36
21:38 thou left
tadzik self.complain_about_being_dying() 21:43
so existentional... ;)
21:46 MayDaniel left
jnthn :) 21:47
21:47 cognominal_ joined
jnthn sleep & 21:47
21:48 cognominal__ left 21:50 whiteknight joined 21:51 thou joined 21:53 thou left 21:59 aharoni left, hash_table joined 22:02 bluescreen10 left 22:03 fgomez joined 22:09 wamba left 22:15 cognominal__ joined 22:17 cognominal_ left 22:18 am0c left 22:24 stopbit left 22:31 flightrecorder joined 22:38 cognominal__ left 22:40 cognominal__ joined 22:44 flightrecorder left
japhb Opinions requested: perl6-bench is currently a monolithic 'bench' script written in Perl 5 (to minimize timing effects from Perl 6 compilers), along with a few test files and mini-docs. However, the 'bench' script now has enough functionality in it, and more to come, that I'd like to split it into two: one script to do the core timing function, and another to do all the other things: formatting summaries, comparing multiple benchmarking r 22:45
uns, etc.
So here's the part where I'd like the opinions:
That core timing script pretty much has to remain Perl 5, as perl5 is the only thing that can do timings efficiently and with low enough variance. 22:46
But the second script could be converted to Perl 6, which would of course -Ofun considerably.
*However*, I hesitate a bit to do this because some of the Perl 6 compilers that perl6-bench can test (Perlito6 and I hope soon Pugs) could not compile/run modern Perl 6 code of that complexity. So even though I can benchmark them, they wouldn't be able to run the formatting program to see the results. 22:48
22:48 cognominal__ left
japhb My question is: Is this an important enough consideration that I should leave the second script in Perl 5? 22:48
diakopter why not use only one compiler for the results
japhb I'm leaning towards no, since I personally want to do the results script in Perl 6, but I'm not sure. 22:49
diakopter, What exactly do you mean?
22:49 cognominal__ joined
diakopter eh 22:51
I'm not sure how else to put it
why not use only one compiler to run the script that formats the results?
japhb Meaning, insist that e.g. Rakudo is the compiler I will assume when writing the formatting script? 22:52
And anything else is Not Supported (tm)?
diakopter sure 22:54
japhb Fairy nuff.
diakopter or write in the rakudo/niecza subset intersection 22:55
and support two
japhb I was probably going to lean that way (supporting the intersection of the two) anyway, though I'm not above filing a bug for a feature I really want to use that's missing from one of them. ;-) 22:56
22:57 DeltaZ joined 23:05 DeltaZ left 23:11 grondilu left, cognominal__ left 23:21 cognominal__ joined 23:26 grondilu joined
grondilu rn: my $m = module {}; say $m.WHAT; 23:26
p6eval niecza v22-7-g7df6137: OUTPUT«(timeout)[auto-compiling setting]␤»
..rakudo 547fcb: OUTPUT«<anon>()␤»
grondilu weird 23:27
grondilu had the idea of trying that while reading S11
« A named module declaration can occur as part of an expression, just like named subroutine declarations 23:28
»
23:32 cognominal__ left 23:35 rindolf left 23:37 thou joined 23:48 skids joined 23:53 rhr left 23:55 rhr joined