[00:00] *** synth left [00:01] transit gloria [sic] & [00:02] *** nihiliad joined [00:13] Is there a way to concatenate two functions, like Haskell's >> operator? [00:13] wrap ? [00:14] I know sub {&sub1; &sub2} works, but if you do that a lot of times, you get a lot of depth. [00:15] Wrap? Maybe, depending on how it's implemented. But I don't think that's what I'm looking for. [00:15] For one thing, wrap modifies in place [00:15] o [00:16] rakudo: sub foo { say 'hi' }; my @a; @a.push(&foo); say 'omg'; .() for @a; [00:16] rakudo 6c4bab: OUTPUT«omg␤hi␤» [00:16] you could do that. [00:16] quietfanatic: can you give an example? [00:17] Like, I'm writing an event system for my game engine, [00:17] and I want certain events (like collisions) to have a parameter [00:18] but of course I can't check every object for every possible collision, so [00:18] create a global register!! :) [00:18] I'd have the object keep a "collision method" and append the new collision code when I register a new collision event. [00:19] If I explained that sensically enough. :) [00:19] sounds like you create a list property on each object that stores its collision events, and the collision method iterates them like Tene said [00:20] Yes, I could just have a list of subs. And overload postfix:<( )> on the list. [00:20] Yeah. [00:20] with the argument, if .. [00:21] Tene's idea will work fine. [00:22] .Net has an entire member system for events, though I heard someone say they regretted designating them at that level; they shoulda been just normal members whose slot types are treated as events when they're registered as such. [00:23] I gotta read up more on event implementation anyway. [00:23] there are scads of techniques of queuing up events on DOM objects [00:24] The thing is, I need a really robust system, including parametric events. [00:24] so make your event method iterator pass in the events as arguments [00:24] I mean, pass in the event args as args to the subs [00:25] That's not what I mean. [00:25] I mean, the parameter determines when the event gets called. [00:25] you could use the multiple dispatch system for that, or [00:25] If I say the ball object has a collision(Brick) routine, it needs to be called when it collides with a Brick and not when it collides with a Paddle. [00:26] That's also why I wanted to introspect signatures, by the way. [00:26] sounds like Collision is a parametric type [00:27] on two objects [00:27] I mean, are there 3-body collisions? [00:28] They happen, though coding them would be a pain. [00:29] What I'm doing for now is I don't have collisions as events, but as normal checking in other events. [00:29] do you have a Movement event? [00:29] Yes, it's called move. [00:30] is it a sub or a 'data' object [00:30] The collisions would be checked after that event. [00:30] It's a data object, that calls the object's move method. [00:30] Actually, it's onbly kind of a data object. [00:30] *** rhr left [00:31] What happens is, when registering the event, I put the object class into the event's queue, rather than putting the event on the object somewhere. [00:32] *** rhr joined [00:32] do your objects use a discrete 2D grid when detecting collisions and calculating movement, or some kind of relative proximity checking to other objects [00:33] They're effectively rectangles, so it's easy to check their positions against eachother even though the grid is not discrete. [00:33] Doing collisions based on a bitmask will be fun and tricky. (and slow) [00:34] I don't know.. assuming there's no superposition of objects' "centers", seems to me it'd be faster [00:34] No, I mean checking each pixel of the object's image (or mask or something) to see if they overlap. [00:35] oh, rather I'd think each object would register its boundaries into an array of arrays that represents the pixel grid [00:36] Oh. If I used integer positions, that'd be possible. [00:36] and each movement would check whether the movement would cause an overlap.. [00:37] right, integer aka discrete [00:37] In fact, it would even be easier if I was writing my own graphics library. [00:37] Yeah, integer = discrete, but I'm using Nums. [00:38] * diakopter runs. at least they're not bigints or smth :) [00:38] The only thing that bothers me about Nums here is that they have higher accuracy toward the top-right of the screen :) [00:38] I mean top-left [00:39] where's the origin [00:39] If somebody inplements a fast fixed-point data type, I'll use it. [00:39] The origin is in the top-left. [00:39] k [00:39] so each objects' movement is turn-based [00:40] Yes-ish. [00:40] so with 50 moving objects, each contributes toward computing the state that will determine how to draw the next frame? [00:40] I'm thinking that unless a specific turn order is specified, the objects will be moved in parallel. [00:41] Um, yes, I think? [00:41] I think that's what you mean by in parallel [00:41] each object's individual movement doesn't get its own frame redraw [00:41] No. [00:42] All objects move, then all objects are drawn. [00:42] that's what I was saying [00:42] (skipping over after_move events and such) [00:44] Well, I've got to get to class now. Be back this evening. [00:46] *** quietfanatic left [00:54] *** jaldhar joined [01:04] std: my $a = 0; say $a while (++$a < 10) if ($a < 3) [01:04] std 28539: OUTPUT«===SORRY!===␤Missing block (apparently gobbled by undeclared routine?) at /tmp/grRhPqfkh7 line 1 (EOF):␤------> 0; say $a while (++$a < 10) if ($a < 3)⏏␤ expecting any of:␤ parameterized block␤ standard stopper␤ terminator␤ [01:04] .. whitespace␤F… [01:04] rakudo: my $a = 0; say $a while (++$a < 10) if ($a < 3) [01:04] rakudo 6c4bab: OUTPUT«1␤2␤3␤4␤5␤6␤7␤8␤9␤Could not find non-existent sub if␤» [01:11] *** justatheory left [01:12] *** nErVe joined [01:16] *** orafu left [01:16] *** orafu joined [01:17] *** payload left [01:18] *** kst` is now known as kst [01:18] *** cdarroch left [01:19] *** nErVe left [01:21] *** patspam1 joined [01:21] *** patspam1 left [01:24] moritz_: Think I've figured out the sin glitch. I took the "is export" off of Num.sin, erased the sin(Complex) functions, and now things seem to work. More soon. [01:29] "rakudo on rockets" web framework has a nice ring to it. just sayin' [01:40] *** hercynium left [01:41] rakudo: my $a=0;for (;++$a < 1e380;) {} [01:41] rakudo 6c4bab: OUTPUT«undefined identifier 'Inf'␤» [01:41] rakudo: my $a=0;for (;++$a < 1e280;) {} [01:42] rakudo 6c4bab: ( no output ) [01:42] that's fast [01:44] the bug is that it doesnt' complain about not finding for() sub [01:45] *** payload joined [01:58] *** htns joined [01:59] Hi. Never used IRC before. Hope this works... [02:00] Just built Parrot and then Rakudo. [02:00] Ran a simple script (say "hi", count to 10), and `time` tells me it took just under 5 seconds. [02:01] Is that about right right now for Rakudo on Parrot? [02:01] *** htns left [02:06] *** htns_ joined [02:08] r28540 | diakopter++ | [sprixel] implement trailing if/while (actually I'd already done if) [02:08] htns_: what does your script look like [02:08] rakudo: say 'hi'; my $a=0; say $a while ++$a < 10 [02:08] rakudo 6c4bab: OUTPUT«hi␤1␤2␤3␤4␤5␤6␤7␤8␤9␤» [02:08] use v6; [02:08] say "hi"; [02:08] for 1 .. 10 { [02:08] say ">>>$_<<<"; [02:08] } [02:09] That's in a file named `foo.pl`. [02:10] In comparison, a similar file for Perl 6 runs in some crazy small amount of time (0.04 s). [02:10] *** stephenlb left [02:10] htns_: you mean Perl 5? [02:10] diakopter@d5dev01:~/src/pugs/src/perl6$ time rakudo -e 'my $a=0; 1 while ++$a <= 10' [02:10] real 0m1.052s [02:10] user 0m0.732s [02:10] sys 0m0.280s [02:10] [sigh] Yes. Sorry. [02:11] around 1 second here [02:11] *** rfordinal joined [02:12] Wow. Hm. [02:12] Well, I built Parrot from source from svn. [02:12] diakopter@d5dev01:~/src/pugs/src/perl6$ time perl sprixel.pl -e 'my $a=0; 1 while ++$a <= 10' [02:12] real 0m1.682s [02:12] Did a `perl Configure.pl --prefix=/home/john/opt/parrot`. [02:12] user 0m1.508s [02:12] sys 0m0.176s [02:12] there's an --build-optimized or something switch [02:12] Then got Rakudo from svn. [02:13] `perl Configure.pl --parrot-config=/home/john/opt/parrot/bin/parrot_config` [02:13] Built and installed fine. [02:13] Didn't want to have Rakudo get Parrot. Wanted to do my own Parrot installed and all set, *then* get Rakudo. [02:13] sprixel: my $a=0; say $a if ($a < 20) while ++$a < 100 [02:14] sprixel 28539: OUTPUT«1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤11␤12␤13␤14␤15␤16␤17␤18␤19␤» [02:14] sprixel: my $a=0; say $a if ($a < 20) while ++$a < 100; say $a [02:14] sprixel 28539: OUTPUT«1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤11␤12␤13␤14␤15␤16␤17␤18␤19␤100␤» [02:14] Did not use any `--build-optimized` options to anything. [02:14] htns_: ok... my 1s time is in linux in a vmware VM on windows vista [02:15] Sorry, forgot to mention, this is on Ubuntu 9.04. [02:16] (No idea what sprixel is, though maybe you're talking to me... :) ) [02:16] sry, I'm testing it [02:16] it's this Perl 6 interpreter I'm writing in JavaScript [02:16] r28541 | colomon++ | [t/spec] Change generate-tests.pl to generate a test file for each forward trig function. Works at the moment, but is duplicating the atan2 tests in every file. [02:16] Ah. [02:16] it uses TimToady's standard grammar/parser [02:18] s/talking/not talking/ . Wow, having trouble with the english language tonight. :) [02:19] Can you please tell me: what's the `use v6;` for? [02:20] It doesn't seem like I need it (the script behaves the same with or without it). [02:21] sprixel: my $a=7; ($a = $a*$a) while $a < 1e21; say $a; [02:21] sprixel 28541: OUTPUT«33232930569601␤» [02:21] *** TiMBuS joined [02:22] htns_: that's b/c "Perl 5 by default" is not yet implemented in Rakudo [02:22] *** msmatsko joined [02:22] Rakudo on Parrot will, by default, assume code in .pl files is Perl 5? [02:23] if someone implements that, yes.. :) which I assume is the plan since that's part of the Perl 6 spec. maybe not by Rakudo Star though? [02:24] I don't recall hearing any mention of that at all this year. [02:24] *** rhr_ joined [02:24] mention of what [02:24] I had been figuring "use v6;" was so Perl 5 knew not to try to run the file. [02:25] Perl 5 being on by default for Rakudo. [02:25] I'd assumed something like that as well. [02:25] yeah, but Perl5-mode-by-default is still part of the speculatifications [02:26] S01 says "Migration is important. The perl interpreter will assume that it is being fed Perl 5 code unless the code starts with a "class" or "module" keyword, or you specifically tell it you're running Perl 6 code in some other way, such as" [02:26] yeah [02:26] diakopter: not saying you're wrong about that, just that I haven't heard any recent mention of making things work like that. [02:26] s/perl interpreter/perl 6 interpreter/ ? [02:27] well, perl, since it's both 5 & 6 [02:27] so *presumably*, a fully to-spec implementation would be a drop-in replacement [02:28] I'm not presuming that part of the spec won't get de-idealized :) [02:28] Oh, I see. I didn't realize that Rakudo + Parrot was intended to be able to be used as a drop-in replacement for my Perl 5. [02:29] it's really kind of insane, isn't it? I mean, implementing Perl 6 is already hard enough. Asking every implementor to add the entirety of Perl 5 as well seems over the top. [02:30] well, pmichaud (but it applies to every implementor too) was writing somewhere recently that [extremely paraphrased] rakudo (substitute: each implementation)'s spec coverage progress would continue, and if it reached the totality by eternity, then so be it [02:31] and he was also willing to draw a box around a particular set of features and give it names/labels/version numbers [02:32] and even eventually call it "stable", if not "finished" or "fully to spec" [02:33] colomon: well, by doing interop/bindings/linking/hosting with Perl 5, pugs was able to achieve *quite* *a* *lot* toward that goal [02:33] but then again, messiahs advent only a few times per eon. er something [02:34] I'm still trying to fathom totality by eternity. :) [02:34] oh, the unfathomable depths... [02:35] *** rhr left [02:38] Jonathan and a couple of others are working on integrating the Perl 5 interpreter as a language on Parrot. [02:38] The project is called Blizkost. [02:39] I remember reading about it when Rakudo was removed from Parrot proper. Have all the parrot languages been removed? [02:39] Yes. [02:41] colomon: but yeah, it's daunting. :) [02:41] Ah. I see. All the languages listed on the parrot site now link to wherever they are now hosted. [02:42] The Parrot certainly lost a lot of weight there. ;) [02:42] Yes. [02:43] moritz_: I haven't actually tested it yet, but I think the current changes ought to make the named argument trig tests which are currently skipped work... Errr... but I haven't pushed the changes yet, still running spec test to make sure they don't break anything. If I'm up in the middle of the night I'll push them. [02:57] moritz_: Hmmm... actually looks like named argument sin still doesn't work. Puzzling. [02:58] TimToady: I got an Use of uninitialized value in concatenation (.) or string at STD.pm line 11515. mebbe I should svn up; rebuild [03:02] rakudo: sub f($x, $y = 1) { say $x + $y; }; f(:x(3/2)); [03:02] rakudo 6c4bab: OUTPUT«too many named arguments - 'x' not expected␤in sub f (/tmp/N929ueuN2f:1)␤called from Main (/tmp/N929ueuN2f:0)␤» [03:02] TimToady: did you commit everything? make clean ; make # lots of warnings [03:04] *** htns_ left [03:09] rakudo: f52e459 | (Solomon Foster)++ | src/setting/ (3 files): [03:09] rakudo: Make Complex sin and asin work correctly. [03:09] rakudo: This involved taking "is export" off Num.sin, adding Complex.asin, and implementing Any functions which forward the sub version of sin and asin to method versions. [03:09] rakudo: review: http://github.com/rakudo/rakudo/commit/f52e45936087b0ad00b1fb4afc8fcf4f46e415a8 [03:10] *** TiMBuS left [03:10] *** nihiliad left [03:10] *** silug left [03:10] *** Helios- left [03:10] *** kolibrie left [03:10] *** rjh left [03:10] *** avuserow left [03:10] *** ezra left [03:10] *** pugs_svn left [03:10] *** christine left [03:10] *** sjohnson left [03:10] *** zerhash left [03:10] *** pmichaud left [03:10] *** omega left [03:10] *** yves left [03:10] *** PacoLinux left [03:10] *** allbery_b left [03:10] *** phenny left [03:10] *** gbacon left [03:10] *** lambdabot left [03:10] *** rhr_ left [03:10] *** Rint left [03:10] *** araujo left [03:10] *** orafu left [03:10] *** mikehh left [03:10] *** Intensity left [03:10] *** colomon left [03:10] *** fredrecsky left [03:10] *** hudnix left [03:10] *** blaze-x left [03:10] *** garron left [03:10] *** Infinoid left [03:10] *** sri_ left [03:10] *** broquaint left [03:10] *** clkao left [03:10] *** buu left [03:10] *** ewilhelm_ left [03:10] *** dmpk2k left [03:10] *** integral left [03:12] *** pmichaud joined [03:12] *** rhr_ joined [03:12] *** TiMBuS joined [03:12] *** orafu joined [03:12] *** nihiliad joined [03:12] *** mikehh joined [03:12] *** Intensity joined [03:12] *** colomon joined [03:12] *** silug joined [03:12] *** Rint joined [03:12] *** Helios- joined [03:12] *** kolibrie joined [03:12] *** avuserow joined [03:12] *** ezra joined [03:12] *** pugs_svn joined [03:12] *** phenny joined [03:12] *** yves joined [03:12] *** christine joined [03:12] *** allbery_b joined [03:12] *** sjohnson joined [03:12] *** irc.freenode.net sets mode: +ovvo pmichaud pugs_svn phenny sjohnson [03:12] *** zerhash joined [03:12] *** PacoLinux joined [03:12] *** omega joined [03:12] *** gbacon joined [03:12] *** lambdabot joined [03:12] *** araujo joined [03:12] *** rjh joined [03:12] *** fredrecsky joined [03:12] *** hudnix joined [03:12] *** broquaint joined [03:12] *** sri_ joined [03:12] *** dmpk2k joined [03:12] *** Infinoid joined [03:12] *** buu joined [03:12] *** garron joined [03:12] *** blaze-x joined [03:12] *** integral joined [03:12] *** clkao joined [03:12] *** ewilhelm_ joined [03:12] *** kent\n left [03:26] *** Guest13417 left [03:26] *** bigpresh_ joined [03:32] *** bigpresh_ left [03:32] *** bigpresh_ joined [03:35] I only get one warning on failure to remove *.syml.store [03:35] and that's benign [03:36] and there's no files I haven't checked in [03:38] *** msmatsko left [03:40] r28542 | lwall++ | [generate-tests.pl] suppress STD error on \# in regex [03:49] hum [03:50] I think my svn checkout was broken by switching between versions of svn client tools... also switching linux->windows via samba. hrm. :/ [04:00] *** mberends joined [04:00] \o impressive backlog :) [04:01] hi [04:02] sprixel: my $a=0; say $a if ($a < 50) while ($a = ++$a*2) < 1000; say $a [04:02] sprixel 28542: OUTPUT«2␤6␤14␤30␤1022␤» [04:03] funky! nice progress diakopter. today more harness building, and then expanding the test suite. [04:05] *** tak11 left [04:08] first putting in a few more test scripts manually, then try adding something like rakudo/tools/autounfudge.pl [04:11] diakopter: why not spend a moment to toot your trumpet on blogspot? [04:16] mberends: eh.. well, there's not much to write home about... it's 10,000x slower than Perl 5 and 100,000x slower than JS/V8 for a minimal preincrement/while microbenchmark [04:16] once I got loop (;;) {} working, I just had to try some microbenchmarking. [04:17] srsly!? did you remember to subtract the startup time? [04:17] yeah; this was a pretty big N [04:19] rakudo was around 2,000-3,000x slower than Perl 5, which .. isn't ultra encouraging, since (barring analysis/optimization) sprixel will only get slower... [04:20] *** [particle] joined [04:22] I added some simple relative benchmarking to Rakudo's test suite, planning to extend that incrementally as it settles in. I'll also think of that in sprixel's harness, which will be pretty portable anyway. [04:22] cool [04:22] r28543 | lwall++ | [STD] improve errors regarding loops for diakopter++ [04:23] *** [particle]1 left [04:23] rakudo: sub f($x) { say $x + 1; }; f(:x(3/2)) [04:24] rakudo f52e45: OUTPUT«too many named arguments - 'x' not expected␤in sub f (/tmp/DuWWxsEjtR:1)␤called from Main (/tmp/DuWWxsEjtR:0)␤» [04:25] rakudo: sub f(:$x) { say $x + 1; }; f(:x(3/2)) # saw that once somewhere [04:25] rakudo f52e45: OUTPUT«2.5␤» [04:27] moritz_: Hmmm.... also, my Complex.asin implementation is plainly broken, but my tests don't seem to detect that. Clearly more / smarter tests are needed. [04:33] sprixel: my $a=0; 1 while ++$a <= 10000; # 151 JS function calls for each iteration of the 2nd statement. [04:33] sprixel 28542: ( no output ) [04:34] that's a few too many [04:37] on a weeny Intel Atom that took "real 0m17.026s user 0m16.765s sys 0m0.164s" [04:39] ick. [04:39] shower && commute & [04:46] *** kidd left [05:00] *** redicaps joined [05:05] *** mberends left [05:10] *** quietfanatic joined [05:21] *** [particle]1 joined [05:23] *** snearch joined [05:34] *** synth^2 left [05:39] *** [particle] left [05:40] *** snearch left [06:05] *** meppl joined [06:06] *** NorwayGeek joined [06:08] *** nihiliad left [06:09] *** NorwayGeek left [06:32] \o/ [06:34] *** mberends joined [06:34] \/o\ [06:34] ..must..have..coffee.. [06:34] /o\ [06:36] r28544 | lwall++ | [Cursor.pmc] handle stringish enums a bit better [06:36] eegslursh [06:36] mberends: largish refactor committing [06:37] whee! [06:39] r28545 | diakopter++ | [sprixel] refactored CPS technique (no longer returns an array each call) [06:39] r28545 | made AutoIncrement a bit more "native" by having bigint modify in place when it's a *variable* that's being incremented/decremented.. [06:39] r28545 | added in place increment/decrement methods to the bigint lib [06:39] 0.30 speedup, ish [06:39] or so I imagine [06:41] diakopter++: cool. And just when you decided to explain it to me, you also decided to Change Everything ;) [06:41] colomon: most tests so far just check that sin/cos/tan etc are consistent with each other... that's not enough [06:42] colomon: we should just take some lists of values, run them through other program we're confident with, compare the results [06:43] Oops, I've challenged myself to make an automated C library importer for Rakudo. [06:44] quietfanatic++ [06:44] quietfanatic++: I had been (day)dreaming about such a tool. make it come true! [06:44] Except for parsing the header file, I more or less know how to do it. [06:45] I mean, it'll take some grizly Q:PIR-ing, but yeah. [06:45] in the parrot repo there's a tool called cgigen that parses the header-files [06:45] Oh really? [06:46] it might be a bit out of date [06:46] but it basically contains a C parser in PGE [06:46] quietfanatic: could it look like Q:C{ ... } eventually? [06:47] mberends: Then I'd have to include a c compiler, like Inline::C, and I don't want to do that. [06:48] oh, ok [06:48] But it's possible, yeah. [06:48] Especially if someone writes a C compiler in Perl 6. :) [06:49] :) I'll lend you a copy of my GCC [06:49] Let's start with precompiled libraries, shall we? [06:49] *** nicomen left [06:50] *** rfordinal left [06:54] moritz_: Oh, you mean ncigen? [06:55] yes [07:03] *** patspam1 joined [07:03] *** patspam1 left [07:09] *** cognominal left [07:15] o/ [07:21] *** rfordinal joined [07:25] *** payload left [07:29] *** pmichaud left [07:29] *** pmichaud joined [07:30] *** avuserow_ joined [07:30] *** avuserow left [07:40] *** c9s_ is now known as c9s [07:45] rakudo (f52e459) builds on parrot r41610 - make test / make spectest_smolder (up to r28545 -> #28453) PASS - Ubuntu 9.04 amd64 [07:48] *** rfordinal left [07:52] *** NorwayGeek joined [07:53] *** NorwayGeek left [07:53] *** NorwayGeek joined [08:03] *** TiMBuS left [08:05] *** mspauldi1g joined [08:05] *** TiMBuS joined [08:16] *** mspaulding left [08:23] *** iblechbot joined [08:36] *** rgrau joined [08:46] *** dakkar joined [09:44] *** riffraff joined [09:44] *** [particle]1 left [09:46] *** Ctrl-ZZZ left [10:12] *** riffraff left [10:16] *** Whiteknight left [10:21] *** payload joined [10:23] *** araujo left [10:44] *** masak joined [10:44] oh hai, fellow pioneers. [10:45] *** am0c joined [10:45] o/ mighty bug-finder [10:46] moritz_: actually, the sin tests are against a list of known values for sine. the asin tests (this is from running S32=trig.generate-tests.pl and looking in sin.t) are just to see if it consistent with sin. [10:46] nah, I just like to destroy things. :) [10:48] (sorry, half awake one-handed typing not so good this moening.) [10:49] * masak abstains from obvious jokes [10:52] oh wait, this isn't Slashdot. never mind. [10:54] *** NorwayGeek left [10:54] Danke. [10:57] speaking of faux pas, this page seems topical and sensical: http://geekfeminism.wikia.com/wiki/So_you_made_a_mistake [10:59] moritz_: figured out the asin mystery. I was still declaring a version of it in the test file, and wierdly enough, that version + my new version generated correct answers. [11:10] *** patspam1 joined [11:20] diakopter: so, how long before I can run Druid in sprixel? :> [11:32] masak: greetings! After carefully thinking about Date, Time and DateTime, I am sure it's not the effect of having recently written some code that way. They are the data types of the real world, and appear in many computer languages. My MS Basic from 1978 had date() and time() functions. Microsoft has just unbundled DateTime into Date and Time in Transact-SQL 2008. So that's my vote [11:32] thank you for this soul-searching answer. I appreciate it. [11:35] *** lichtkind joined [11:38] *** NorwayGeek joined [11:38] I'm currently pondering if some extra measure needs to be taken to get ranges of DateTime objects to work. [11:39] maybe they'll work out-of-the-box because DateTime does Real or something. [11:39] *** lichtkind left [11:39] I won't add anything to the spec until I know. [11:39] *** lichtkind joined [11:48] *** am0c left [11:49] *** payload left [11:52] *** ssm left [12:09] *** takadonet joined [12:09] morning all [12:13] *** jogla joined [12:14] morning! [12:15] Moin [12:16] \o/ [12:19] Hi moritz_ [12:19] long time no see jogla :-) [12:20] Yeah [12:27] jogla++ # returning customer [12:28] :) [12:32] r28546 | colomon++ | [spec/t] Update trig test generation code -- remove all the faked Complex functions previously included with the test code, and add Complex.asin tests (for all inverted functions). [12:33] Still working on those lovely math function Colomon? :) [12:38] *** nErVe joined [12:44] good morning, #perl6 [12:44] morning sir [12:46] morning, pmichaud. [12:46] pmichaud: those Cursors look very useful! [12:46] yes, they do seem to be useful. [12:47] I'm very happy I have a working implementation of protoregexes. [12:47] Today's focus is on a p6 regex parser [12:47] !! [12:47] \o/ [12:47] *** moritz_ sets mode: +o pmichaud [12:47] (to follow the STD.pm definition of regexes) [12:47] looking forward to that. [12:47] same here [12:48] I had lots of non-coding things I had to do yesterday, so not so much progress there. But I think nearly all of the core pieces are in place [12:50] afk for a bit, kids to school [12:54] \o/ [12:55] * Matt-W likes to hear about progress [12:55] *** iblechbot left [12:55] *** redicaps left [13:04] takadonet: Yup, slowly grinding away at the math. Though I expect that now I have working Complex versions of sin and asin, the end of the trig function work is in sight. All I need to do is clone the framework of those two for all the other trig functions. [13:04] *** rgrau left [13:05] colomon: Sweet [13:05] *** synth^2 joined [13:11] *** [particle] joined [13:13] *** huf left [13:14] *** patspam1 left [13:28] *** Camenix joined [13:29] *** SmokeMachine joined [13:29] *** Camenix left [13:32] rakudo: c4dbb59 | (Solomon Foster)++ | src/setting/ (3 files): [13:32] rakudo: Fix the previous asin checkin so it actually works. [13:32] rakudo: review: http://github.com/rakudo/rakudo/commit/c4dbb591c7cda59847b904f7340532668bed5f5f [13:33] what's the recommended way to run Rakudo on feather nowadays when Parrot and Rakudo should be installed? [13:34] I just tried 'perl6' but got the 'shared libraries' error one gets when things aren't installed all the way. [13:34] masak: build & install one yourself [13:34] and the incantations for installing non-globally...? [13:35] perl Configure.pl --gen-parrot [13:35] make install [13:35] hokay. [13:40] *** KyleHa joined [13:43] *** _Jedai_ joined [13:45] *** |Jedai| left [13:48] masak, what kind of ranges of datetime objects do you ponder? discrete or continuous? something like "18:30 every Tuesday between t1 and t2", or "any time between t1 and t2"? [13:48] the latter. that is, infix:<..> [13:48] the former should fall out automatically from dt/duration addition and infix:<...>. [13:51] * mberends ponders a TimeSpan object that could smartmatch a DateTime [13:55] .oO( DateTimeSpan ) [13:55] * PerlJam wishes google calendar had a way to say "the thursday after the 3rd tuesday of every month" [13:56] mberends: what advantage would such an object confer over just $dt1..$dt2 ? [13:59] *** jaldhar left [14:00] *** huf joined [14:04] *** icwiener joined [14:04] masak: not sure, it was a suggestion to possibly help your "ranges of DateTime objects". It's non essential. Just ignore it :) [14:05] I think I'm heavily biased by generic solutions nowadays, to the point where I prefer existing A[B] solutions to a new AB solution almost all the time. :) [14:09] masak: $t1..$t2 it is then, worksforme :) [14:12] *** snearch joined [14:13] sprixel: use Test; plan 2; is(1,1,"one");is(2,2,"two"); [14:13] sprixel 28546: OUTPUT«1..2␤ok 1 - one␤ok 2 - two␤» [14:13] *** Guest86057 left [14:14] *** Ctrl-ZZZ joined [14:15] *** justatheory joined [14:21] *** Chillance joined [14:22] sprixel: use Test; plan 2; is 1, 1, "one"; is 2, 2, "two"; [14:22] sprixel 28546: OUTPUT«1..2␤ok 1 - one␤ok 2 - two␤» [14:22] \o/ [14:22] sprixel: use Test; plan 2; is 1, "1", "one"; is "2", 2, "two"; [14:22] sprixel 28546: OUTPUT«1..2␤ok 1 - one␤ok 2 - two␤» [14:23] sprixel: use Test; is 1.0, 1, 'a' [14:23] sprixel 28546: OUTPUT«ok NaN - a␤» [14:23] you could still start counting at 1, even without a plan [14:23] sprixel: use Test; is '01', 1, 2; [14:24] sprixel 28546: OUTPUT«not ok NaN - 2␤» [14:25] moritz_, istr the Test.pm.js script uses the plan() call to initialize the test number to 1 [14:25] "feature" ;) [14:26] not for us done_testing fans. [14:28] those call plan *; at the start [14:28] we do? [14:28] I don't. [14:29] if "plan *;" is required, then that means that * (as a term) needs to be in the 01-sanity suite [14:29] *probably needs [14:29] pmichaud: plan *; is an option, not a requirement [14:29] sure, but 01-sanity is intended to be "the minimal features needed to parse most of the tests" [14:30] pmichaud: and for the 01-sanity suite I'd continue using planned tests [14:30] that's not what 01-sanity does [14:30] uhm, it's not been that for ages :/ [14:30] 01-sanity is the tests needed to say "okay, you have enough features to run Test.pm" [14:30] 01-sanity doesn't itself use Test.pm [14:30] *** Psyche^ joined [14:31] s/"parse most of the tests"/"run Test.pm" [14:31] well, that's what you thought in the initial stages of building rakudo - if my memory serves right then it didn't work that way in reality [14:31] right, because nobody kept 01-sanity up to date with Test.pm :) [14:31] and also there's not one Test.pm [14:31] but when we re-implemented Test.pm, I at least made an effort to not use features in Test.pm that weren't tested in 01-sanity [14:32] or to add things to 01-sanity that were needed for Test.pm [14:34] thanks for this explanation pmichaud, it helps the work on sprixel testing while dis-commuting :) [14:34] *** ruoso joined [14:38] is dis-commuting a more chaotic process than de-commuting? :) [14:40] *** ejs joined [14:42] *** Patterner left [14:42] *** Psyche^ is now known as Patterner [14:43] masak: yes, it seems to take far longer ;) [14:44] :) [14:48] *** SmokeMachine left [14:52] *** SmokeMachine joined [14:53] *** nihiliad joined [15:02] *** mberends left [15:03] eew, November symlinks in Test.pm from the Rakudo directory. it's better than almost all other approaches, but it's still pretty icky. [15:03] * masak looks forward to the Central Solution [15:04] make rakudo's 'make install' copy Test.pm to $prefix/lib/perl5/ [15:05] perl5? :) [15:06] erm [15:06] s/5/6/ [15:06] as long as Rakudo finds it in its path _by default_, I'm happy. [15:06] rakudo: say @*INC.perl [15:06] that'll be the nice part of the Central Solution: less fiddling with PERL6LIB. [15:06] rakudo c4dbb5: OUTPUT«["/home/p6eval/.perl6/lib", "/home/p6eval//p1/lib/parrot/1.6.0-devel/languages/perl6/lib", "lib", "."]␤» [15:07] ok, it's $prefix/languages/perl6/lib [15:07] wfm [15:10] *** kidd_ joined [15:12] Tweets: ""Ruby 2.0 will be production stable in 10 years" — Matz" -- "Hmm, sounds like they'll beat Perl 6 by a hefty margin then." [15:12] I find it difficult sometimes to predict whether intervening would be a net win. [15:13] I think if you just submitted a rakudobug every time you were tempted to respond to a tweet like that, it might have better results on the whole. :) [15:14] i guess this is like the french not bathing. 10 milennia from now ignorant people will still claim the french dont bathe and perl is unreadable and perl6 will never be finished... [15:14] (1) rakudobugs don't appear spontaneously. :) (2) I sincerely believe that responding to some tweets have good results. maybe not this one, though. [15:14] *** jan__ joined [15:14] sometimes it's best to simply embrace the insanity :) [15:15] masak: I bet if you gave yourself ten minutes to find a rakudobug, you could do it every time. [15:15] or ignore it ;-) [15:16] It just seems to me that, if we do our jobs well, these guys will be forced to eat crow in about eight months. [15:16] Twitter is a great place to actually spread the word about Perl 6. providing factual, sometimes tongue-in-cheek answer to a selection of taunts or false rumors can, I believe, have results. [15:18] Mmm [15:18] It is a good strategy - if you can come up with a reply of the right kind of tone [15:18] you don't want people to think you're flaming [15:18] exactly. [15:18] I guess I'm thinking about a conversation I had a couple of weeks ago at a bachelor party. [15:18] you were discussing Perl 6 at a bachelor party? :) [15:19] The groom mentioned that one of my Facebook statuses had been about working on Rakudo. [15:19] :) [15:19] And one of the other guys, it turns out, used to be Perl programmer, but has fallen into (I think) PHP. [15:19] * Matt-W adds to the list of ideal items for the perfect fantasy wedding: camels and onions and butterflies [15:20] And he reflexively made a crack about Perl 6 taking forever to come out. [15:20] I always find it amusing when PHP programmers mock Perl 6 [15:20] And also quite saddening [15:20] The poor people [15:20] My response was about how well Rakudo is coming along. [15:20] But if we're honest about it, right now it still isn't production-ready. [15:21] of course not [15:21] It's getting really close, but it's not there yet. [15:21] But we're going to be [15:21] quite possibly in 2010 [15:21] just going to close those bugs first... [15:21] That's what I'm saying. If Rakudo * does its job, Perl 6 will have a reasonably production ready platform. [15:21] It might not be "done", but it will be very useable, I think. [15:22] At that point, responding to the naysayers will be almost effortless, I think. [15:22] and a lot more convincing. [15:24] That's my theory, anyway. I'm not saying we shouldn't try to tell people what is going on now -- but we should be putting our money where our mouths are and making it actually happen. [15:24] * justatheory hugs colomon [15:24] Of course, masak is a champ at the latter! [15:25] for better or worse, I care. [15:25] I care too [15:25] but I also do it because I want to see cool things happen, and the easiest way to do that seems to be to write code, write blog posts and file bugs. [15:25] I just don't have many tuits [15:25] hugme: hug colomon [15:25] * hugme hugs colomon and blushes [15:26] *** nErVe left [15:26] *** rfordinal joined [15:26] I have made a tuit-money trade-off. I'm poor but happy. :) [15:26] actually, it's not even that bad. [15:26] Unfortunately my day job sucks up a lot of tuits [15:26] but I am working half-time because I want to spend large parts of the other half on Perl 6. [15:27] and my other hobbies suck up even more - but if I didn't do hobbies that weren't programming, I'd go mad [15:27] aye, it's important to do something else [15:27] 3x table tennis next week ;-) [15:27] programming for a living can be soul destroying [15:27] yay table tennis [15:28] * masak goes swimming [15:28] I do aikido [15:28] and every time I do, I look at the tiles at the bottom of the pool and think about Druid. :) [15:28] And play the recorder, viola de gamba, lute and sing [15:28] hahaha [15:29] the problem with table tennis is that it requires a lot of concentration [15:29] yes but it's a different kind of concentration [15:29] so it's not such a good way to switch off your brain and let your body work [15:29] no [15:29] swimming's better for that [15:29] you can just swim up and down and up and down [15:29] I used to go swimming and think about writing [15:30] I used to do swing dancing. I still run occasionally. I have a secret urge to do bicycle spinning. [15:30] these days I tend to do that while I'm walking, or I think about composing music - the trouble with the latter being that I tend to forget the tune I was thinking about by the time I get home and can write it down [15:30] bicycle spinning? [15:30] Matt-W: I don't know if that's the term. [15:31] Matt-W: we call it 'spinning' in Sweden. it's a form of exercise. [15:31] Matt-W: for tunes, I have a music player around my neck at all times with a recording ability. [15:31] Matt-W: but unfortunately, I never sit down and compose from those recordings... :/ [15:32] hm, "Indoor cycling" seems to be the term. "Spinning" is a trademark. [15:36] hmm [15:36] my phone now has a sound recorder on it [15:37] but last time I really had a tune I really wanted to record, I was on a very windy hillside [15:37] never did get that one back :( [15:37] masak: heh, good tweet [15:37] directed to everyone and no-one. [15:40] *** snearch left [15:40] I've always figured that if I can't remember a tune by the time I get back home, it probably wasn't worth remembering. :) [15:41] I'm not so sure about that [15:41] I've sometimes carried tunes all the way home by humming them over and over. [15:41] I get distracted a lot [15:41] (But then, once I get back home I try to record it pretty quickly, so maybe that's just an excuse not to get a digital recorder I can always have with me.) [15:41] and I usually do a lot of revision over the base concept anyway [15:41] what usually comes to me when I'm at an inconvenient moment to do anything about it is the first phrase [15:41] so then I have to do any subsequent parts the hard ware [15:41] way* [15:41] but it gets me moving in the right direction [15:43] * Matt-W -> out of the office, anywhere but here [15:43] Ah, the advantage with Irish Traditional Music is that tunes are so simple that not a lot of revision is called for. ;) [15:45] Getting back on subject, I'm finding that working on Rakudo is a powerful reminder that I used to program for fun. [15:48] +1 [15:49] working on rakudo, and working within the Perl 6 community (IMHO) [15:49] (on and with ;-) [15:50] that too! [15:50] using Rakudo. beating on Rakudo. :) [15:51] * moritz_ goes offline for the weekend [15:51] have the appropriate amount of fun! [15:51] likewise, sinjoro! [15:51] I think I've picked out my favorite rakudobug so far: [15:51] rakudo: sub foo( &foo = &foo ) {} [15:51] rakudo c4dbb5: ( no output ) [15:51] rakudo: sub foo( &foo = &foo ) {}; foo [15:52] rakudo c4dbb5: OUTPUT«Null PMC access in isa()␤in sub foo (/tmp/vj9uXI2yhZ:1)␤called from Main (/tmp/vj9uXI2yhZ:0)␤» [15:52] really don't know how I arrived at that one. [15:52] masak: heh [15:52] rakudo: sub bar( &foo = &foo ) {}; bar [15:52] rakudo c4dbb5: OUTPUT«Null PMC access in isa()␤in sub bar (/tmp/3W6nYeH2c3:1)␤called from Main (/tmp/3W6nYeH2c3:0)␤» [15:52] masak: Did it take you more than ten minutes to come up with that one? ;) [15:52] sprixel: sub foo( &foo = &foo ) {}; foo [15:53] sprixel 28546: ( no output ) [15:53] colomon: no, but it's still not as simple as just sitting down and making rakudobugs happen. at least not most of the time. [15:53] sprixel: sub foo( &foo = &foo ) { say 4 }; foo [15:53] sprixel 28546: ( no output ) [15:53] heh [15:53] colomon: they appear as a by-product of actual coding, most of the time. [15:54] masak: I know, I know. Though it sometimes feels like ten minutes of uninhibited Perl 6 programming will produce a Rakudobug for sure... [15:54] not so sure about that. [15:55] it was definitely true by the end of 2008. [15:55] rakudo: sub foo( &foo = 1 ) {}; foo [15:55] I wrote a blog post around New Year about that. [15:55] rakudo c4dbb5: OUTPUT«Parameter type check failed; expected Callable, but got Int for foo in call to foo␤in sub foo (/tmp/IRDOGX8h44:1)␤called from Main (/tmp/IRDOGX8h44:0)␤» [15:55] *** mariuz left [15:55] but today, you'd have to be uninhibited in fairly specific ways for that to happen. [15:57] long bike ride & [15:58] Errr... anyone out there know what is supposed to happen with a "fail"? [15:59] Complex.Num calls fall if the imaginary part of the number is not zero -- but it seems to effectively be returning 0 as well. [16:00] I get the fail message if I call it from the REPL, but just get a normal value isn't correct error in the test file. [16:00] Seems like that could have very bad effects in practice. [16:00] (That is to say, I'd much rather get NaN.) [16:04] *** cdarroch joined [16:04] rakudo: say NaN [16:04] rakudo c4dbb5: OUTPUT«NaN␤» [16:04] rakudo: say NaN + 1 [16:04] rakudo c4dbb5: OUTPUT«NaN␤» [16:04] rakudo: say tan(1i); [16:05] rakudo c4dbb5: OUTPUT«You can only coerce a Complex to Num if the imaginary part is zero␤0␤» [16:05] move 'only' to between 'Num' and 'if' [16:06] Hmmm... I think it reads better as it is. [16:07] * colomon missed hearing the timer go off on the oven, but the bread hasn't burned yet. [16:08] *** iblechbot joined [16:14] *** stephenlb joined [16:21] *** lanny joined [16:23] *** Lorn left [16:23] *** araujo joined [16:23] *** Lorn joined [16:24] Shouldn't infix:<+,-,*> for (Int, Int) produce an Int? They are infinite precision to begin with. [16:24] lanny: in what context? [16:24] (I mean, Rakudo doesn't support infinite precision at the moment, for instance...) [16:25] aha. :) The conversion to Num had fooled me. [16:25] I thought Rakudo was already using GMP for Ints [16:25] alas, no. [16:26] Ok. Well that makes clear a whole class of fuzziness I've been hitting. [16:28] *** drbean_ joined [16:28] *** lumi joined [16:31] *** dakkar left [16:32] *** rfordinal left [16:36] *** ispy_ joined [16:37] *** keeth joined [16:41] *** drbean left [16:48] *** nihiliad left [16:51] *** nihiliad joined [16:52] 'ello [17:12] r28547 | lwall++ | [Cursor] start to setup for moving modules to lib [17:16] *** ewilhelm_ is now known as ewilhelm [17:26] *** TiMBuS left [17:28] r28548 | diakopter++ | [sprixel] implement Conditional Protasis ?? Apodosis !! ElseExpr [17:28] sprixel: say 0 ?? 5 !! 7 [17:28] sprixel 28547: OUTPUT«7␤» [17:29] sprixel: say (say 4)??(say 5)!!(say 6) [17:29] sprixel 28547: OUTPUT«4␤5␤1␤» [17:38] *** discHead joined [17:43] my CPS refactor wasn't complete... [17:45] r28549 | diakopter++ | [sprixel] finish a bit more of the last CPS refactor.. [17:47] *** ejs left [17:47] diakopter: what's this V8.pm required by sprixel.pl? where do I buy it? [17:47] masak: http://www.v8juice.com [17:48] gracias. [17:48] heh [17:48] er. [17:48] "Healthy programming starts with V8" [17:48] sorry, couldn't resist. [17:49] :) [17:50] a healthy masak, is a happy masak [17:50] and productive [17:50] if I run 'make' in src/perl6, and then try to run sprixel on some example program, then it finds no V8 juice for me. [17:55] *** coldboot joined [17:56] ah! http://github.com/fictorial/perl-v8 [17:58] *** quietfanatic left [17:59] *** crythias1 joined [18:02] *** masak left [18:03] *** Chillance_ joined [18:05] *** Chillance_ left [18:07] r28550 | diakopter++ | [sprixel] fix topic assignment in map block [18:08] *** Chillance left [18:13] *** alanhaggai joined [18:15] *** alanhaggai left [18:16] phenny: tell masak there's a file in perl6/sprixel/ that starts with RE and ends with ADME :) [18:16] diakopter: I'll pass that on when masak is around. [18:24] *** ispy_ left [18:37] r28551 | lwall++ | [STD,viv] raise middle args of ternaries [18:39] *** pmurias joined [18:42] r28552 | diakopter++ | [sprixel] align Conditional to use new args from viv/STD. Begin an analysis phase to compute implied signatures for blocks with $^a and such. [18:43] TimToady: in a block with $^a and $^b, is $_ an alias to $a? [18:45] rakudo: $_ = 4; map { $^a + $^b; say $_ }, 1, 2 [18:45] rakudo c4dbb5: OUTPUT«4␤» [18:48] diakopter: no [18:48] k [18:48] not since 7 or 8 years ago anyway :) [18:49] Would a Rat.new(Num $num, Num $eps?) be of any use? [18:49] rakudo: $_ = 4; map { say $^a + $^b; say $_ }, 1, 2, 3, [18:49] rakudo c4dbb5: OUTPUT«No result object␤in Main (src/gen_setting.pm:2813)␤» [18:50] rakudo: $_ = 4; map { say $^a + $^b; say $_ }, 1, 2, 3 [18:50] rakudo c4dbb5: OUTPUT«3␤4␤» [18:51] lanny: taking two floating point numbers? Why? [18:51] Or is $eps some sort of precision thing? [18:51] Well a rational approximation to a real number usually has an epsilon associated. [18:51] Yes. [18:51] ah. [18:52] I certainly think it would be cool to have smart code to convert a Num to a Rat. [18:52] rakudo: map { say $^a + $^b + $^c }, 1, 2; say 8 # TimToady: if there aren't enough to fill the requested slots, it doesn't run? [18:52] rakudo c4dbb5: OUTPUT«8␤» [18:53] Ok. I'll write some tests too. [18:53] Might fit in the system more logically as Num.Rat [18:54] *** meppl left [18:55] diakopter: yes, because we have lots of ways to extend the end of the list [18:55] rakudo: say map { say $^a; if 1 { $^a } else { $^b } }, 1, 2 # something's not right here [18:55] rakudo c4dbb5: OUTPUT«1␤2␤11␤» [18:56] colomon: It's all the same to me. Is there any guidance on making cast subs vs .new of a given argument type? [18:56] placeholders are always scoped to inner {} [18:56] rakudo: say map { say $^a; if 0 { $^a } else { $^b } }, 1, 2 # something's not right here [18:56] rakudo c4dbb5: OUTPUT«1␤2␤00␤» [18:56] that's if 0 -> $a { $a } else -> $b { $b } [18:56] colomon: It will change where I put the tests and was thinking associating that behavior with Rat would make more sense than introducing Rat tests into Num [18:57] shouldn't $b be an undefined error [18:57] oh, nm [18:57] lanny: Not that I know of. I'm just going on my instincts. It seems like generally we have avoiding forcing people to call explicit new on numeric types. [18:57] std: say map { say $^a; if 0 { $^a } else { $^b } }, 1, 2 # something's not right here [18:57] std 28552: OUTPUT«ok 00:02 104m␤» [18:58] colomon: ah. Then I'm behind the spec on auto-conversion. I'll put it in Num [18:58] a runtime error I meant. but I was non-understanding [18:58] lanny: so for instance, if you look at Rat, there is no constructor that takes a single Int. [18:58] lanny: But Int has a Rat function to create a Rat from it. [18:59] colomon: ok. [18:59] lanny: As far as I know, the spec doesn't really cover this very thoroughly. I believe the intention is to write the spec based on how the code works. :) [19:00] ruoso: i'm trying out how the smop model of doing things would map out onto the js runtime, what are the benefits of passing the interpreter around instead of having it in a global? [19:01] you can have more than one? [19:01] std: { say $^a } # TimToady: infinite loop if you exclude this comment. [19:02] std 28552: ( no output ) [19:02] there went half my battery :) [19:03] TimToady: you could what i'm unsure is why would you need more than one as the interpreter does very little [19:04] in smop that is [19:13] rakudo: (1/0).WHAT.say [19:13] rakudo c4dbb5: OUTPUT«Rat()␤» [19:18] *** cdarroch left [19:18] *** jogla left [19:18] *** nihiliad left [19:18] *** lanny left [19:18] *** jan__ left [19:18] *** rjh left [19:18] *** kolibrie left [19:18] *** Helios- left [19:18] *** silug left [19:18] *** omega left [19:18] *** PacoLinux left [19:18] *** zerhash left [19:18] *** sjohnson left [19:18] *** christine left [19:18] *** pugs_svn left [19:18] *** ezra left [19:18] *** phenny left [19:18] *** yves left [19:18] *** gbacon left [19:18] *** lambdabot left [19:18] *** allbery_b left [19:18] *** pmurias left [19:18] *** araujo left [19:18] *** _Jedai_ left [19:18] *** rhr_ left [19:18] *** Rint left [19:18] *** discHead left [19:18] *** Patterner left [19:18] *** KyleHa left [19:18] *** hudnix left [19:18] *** colomon left [19:18] *** mikehh left [19:18] *** orafu left [19:18] *** fredrecsky left [19:18] *** Intensity left [19:18] *** blaze-x left [19:18] *** garron left [19:18] *** Infinoid left [19:18] *** sri_ left [19:18] *** broquaint left [19:18] *** clkao left [19:18] *** buu left [19:18] *** ewilhelm left [19:18] *** dmpk2k left [19:18] *** integral left [19:18] *** sjohnson joined [19:18] *** pmurias joined [19:18] *** discHead joined [19:18] *** nihiliad joined [19:18] *** araujo joined [19:18] *** lanny joined [19:18] *** cdarroch joined [19:18] *** jan__ joined [19:18] *** Patterner joined [19:18] *** _Jedai_ joined [19:18] *** KyleHa joined [19:18] *** jogla joined [19:18] *** rhr_ joined [19:18] *** orafu joined [19:18] *** mikehh joined [19:18] *** Intensity joined [19:18] *** colomon joined [19:18] *** silug joined [19:18] *** Rint joined [19:18] *** Helios- joined [19:18] *** kolibrie joined [19:18] *** ezra joined [19:18] *** pugs_svn joined [19:18] *** phenny joined [19:18] *** yves joined [19:18] *** christine joined [19:18] *** allbery_b joined [19:18] *** zerhash joined [19:18] *** PacoLinux joined [19:18] *** omega joined [19:18] *** gbacon joined [19:18] *** lambdabot joined [19:18] *** rjh joined [19:18] *** fredrecsky joined [19:18] *** hudnix joined [19:18] *** broquaint joined [19:18] *** sri_ joined [19:18] *** dmpk2k joined [19:18] *** Infinoid joined [19:18] *** buu joined [19:18] *** garron joined [19:18] *** blaze-x joined [19:18] *** integral joined [19:18] *** clkao joined [19:18] *** ewilhelm joined [19:18] *** irc.freenode.net sets mode: +ovv sjohnson pugs_svn phenny [19:19] I think it's trying to reply 'Inf' [19:19] *** cookys left [19:19] *** Ryan52 left [19:19] or maybe 'divide by 0' [19:21] *** cookys joined [19:22] I think it is divide by zero, actually; we don't trap for that if I recall correctly. [19:23] We can do "math" on the Rat 0/1, but it is unprintable. [19:23] pmurias, "interpreter" really means "thread" there [19:23] *** keeth left [19:23] pmurias, we're going to have one "interpreter" object for each thread of execution (being it os thread or not) [19:23] 1/0 you mean? I hope we can do math on 0/1 [19:24] *** keeth joined [19:24] lanny: 1/0, yes. [19:25] lanny: the math on the 1/0 is reasonably sensible, I just balk a bit because it allows you to do terrible things. [19:26] colomon: most programming languages live in the real world though where 1/0 is an error to avoid small problems become big ones down the line [19:27] lanny: but it's not a problem that goes away. 1/0 is tracked more or less the same way setting Inf or NaN would be. [19:28] ruoso: thanks [19:28] though... hmmm... [19:28] colomon: then numerator and denominator should probably be set to Inf [19:28] rakudo: say 1 / (1 / 0); [19:28] rakudo c4dbb5: OUTPUT«0␤» [19:29] rakudo: say Inf / Inf [19:29] rakudo c4dbb5: OUTPUT«NaN␤» [19:29] ah. well then Inf / 1 [19:29] rakudo: say 1 (Inf / 1); [19:30] rakudo c4dbb5: OUTPUT«Confused at line 2, near "(Inf / 1);"␤in Main (src/gen_setting.pm:3468)␤» [19:30] rakudo: say 1 / (Inf / 1); [19:30] rakudo c4dbb5: OUTPUT«0␤» [19:30] colomon: or even just fail 'zero denominator' [19:31] ick [19:32] Ok. How do you get the number that a Class Num is from inside a method? self and +self aren't doing what I expect. [19:33] *** DeathAnchor joined [19:33] Which could just be me but the code worked when in Rat [19:33] Question, what do you use for SVN client on a Win32 system? [19:35] Ah. Q:PIR [19:35] *** keeth left [19:36] *** keeth joined [19:36] *** crythias1 left [19:36] lanny: self should work just fine. [19:36] DeathAnchor: I've heard TortoiseSVN mentioned before. [19:36] colomon: is probably me then. [19:37] gah, I hate tortoise. The gui is junk. I guess i could just use the commandline for it. [19:37] *** takadonet left [19:37] lanny: you definitely shouldn't have to go into Q:PIR unless your code is actually in PIR. [19:37] * DeathAnchor was hoping for something better, but alas is disappointed. [19:38] colomon: I'm tempted. One sec while I nopaste it and maybe you can see where I've gone wrong. [19:40] lanny pasted "$num.Rat()" at http://paste.lisp.org/display/88078 [19:42] *** KyleHa left [19:42] rakduo: class Num is also { multi method Rat(Num $epsilon = 1.0e-6) { say self; }; }; 1.0.Rat; [19:43] typo on 'rakudo' [19:43] I wonder about self versus +self, but it sounds like you tried both? [19:43] I did. [19:43] rakudo: class Num is also { multi method Rat(Num $epsilon = 1.0e-6) { say self; }; }; 1.0.Rat; [19:43] rakudo c4dbb5: OUTPUT«1␤» [19:43] Tried 'self' first and then noticed method Str { ~self } so figured to try + [19:44] lanny: unfortunately I've got spectest running, so I can't just pry open Num.pm and insert your code. [19:44] How very odd. What I'm seeing after compiling is (exp(1)).Rat.perl.say gives no output [19:45] colomon: no worries. [19:45] but I don't see any obvious problems with the $num = +self line. [19:45] insert some say statements in there and see where the code gets to? [19:46] pmurias: V8's runtime can thread across cores, but you can't access it from JS with the default build. In the browser, Chrome can thread across cores, but all interthread communication has to be explicit across DOM frames (tabs) :) [19:46] (fyi) [19:46] rakudo: class Num is also { multi method Rat(Num $eps = 4) { my $num = +self; say $num }; }; 3.14.Rat; [19:46] rakudo c4dbb5: OUTPUT«3.14␤» [19:46] colomon: aye [19:47] afternoon friends and perl 6 enthusiasts [19:48] rakudo: say 1 / Inf [19:48] rakudo c4dbb5: OUTPUT«0␤» [19:49] rakudo: say Inf / 1 [19:50] rakudo c4dbb5: OUTPUT«Inf␤» [19:51] rakudo: 1 / ( 0 / 1 ) [19:51] rakudo c4dbb5: ( no output ) [19:51] rakudo: say 1 / ( 0 / 1 ) [19:51] rakudo c4dbb5: ( no output ) [19:52] rakudo: say (1 / ( 0 / 1 )).perl [19:52] rakudo c4dbb5: OUTPUT«1/0␤» [19:52] Ok. it's because infix:( a, b/c ) is implemented as ( a * c / b ) [19:52] *** Ryan52 joined [19:52] Rather than a becoming a / 1 and doing the cross multiplication [19:53] BTW, spectest finished, and I'm compiling your code as we speak. [19:54] colomon: duh. Rat.new(Int, Int) doesn't take named args. [19:55] rakudo: a7d2a98 | (Solomon Foster)++ | src/setting/ (3 files): [19:55] rakudo: Full support for Complex cos and acos. [19:55] rakudo: review: http://github.com/rakudo/rakudo/commit/a7d2a982604df8d4f33896246e5f84e8acd50b9b [19:55] rakudo: 1354976 | (Solomon Foster)++ | src/setting/ (3 files): [19:55] rakudo: Full support for Complex tan and atan. [19:55] rakudo: review: http://github.com/rakudo/rakudo/commit/1354976ccad5ce013194c1e4dddff48da2a223b2 [19:55] rakudo: be44f6a | (Solomon Foster)++ | src/setting/ (5 files): [19:55] rakudo: Full support for Complex sec and asec. [19:55] rakudo: review: http://github.com/rakudo/rakudo/commit/be44f6a97a52d19df63b3d4a66b53c2bb9ac17a2 [19:55] lanny: as far as I know, named args don't work at all at the moment. at least, I've had several fails with them in the last 24 hours. [19:57] I should have noticed, but it seemed like the Rat.new was the safe part of your code. :) [19:57] Yeah. :) [20:00] r28553 | fglock++ | [mp6] Javascript fixes, grammar fix [20:00] *** meppl joined [20:01] *** Ryan52 left [20:02] oooo... when I do pi.Rat.perl, I get 355/113. Shiny! lanny++ [20:03] Yeah. Debating if I want to go the distance for the first best-rat-approx within $epsilon but it's more code so thinking this is good enough [20:04] seems like a heck of a good start, at any rate. [20:05] Well it's using the continued fraction expansion. At some point on my plate is to write a CE class. Got most of the way in haskell and then life got busy. [20:05] A pity I didn't have this when I was working on the Rat trig tests, it would have come in handy to get a highly accurate rational approx of pi. [20:05] The CE expansion is guaranteed to be a best-rat-approx. Just not necessarily the first closest. [20:10] *** kidd_ is now known as rgrau [20:10] *** quietfanatic joined [20:14] *** zloyrusskiy joined [20:18] *** mberends joined [20:29] *** tylerni7 joined [20:29] *** Chillance joined [20:31] *** quietfanatic left [20:31] *** zloyrusskiy left [20:33] *** payload joined [20:36] *** Ryan52 joined [20:38] *** jogla left [20:42] *** Ryan52 left [20:43] r28554 | mberends++ | [sprixel/Test.pm.js] always initialize test counter to 1 for planless testing, moritz++ for noticing [20:44] *** ruoso left [20:45] sprixel: use Test; is 1,"1","one"; [20:45] sprixel 28553: OUTPUT«ok NaN - one␤» [20:45] sec [20:46] k now try [20:46] sprixel: use Test; is 1,"1","one"; [20:46] sprixel 28553: OUTPUT«ok 1 - one␤» [20:47] done_testing should also be easy, will try it now [20:59] r28555 | mberends++ | [sprixel/Test.pm.js] done_testing function for planless testing [20:59] *** Ryan52 joined [21:01] *** Whiteknight joined [21:01] *** fredrecsky left [21:09] *** DeathAnchor left [21:17] *** mikehh left [21:19] *** tak11 joined [21:20] perl6: say 2 == 2 ?? "equal" !! "unequal" [21:20] pugs, rakudo be44f6, sprixel 28555: OUTPUT«equal␤» [21:20] ..elf 28555: OUTPUT«Unknown rule: infix:conditional␤It needs to be added to ast_handlers.␤ at ./elf_h line 2850␤» [21:21] perl6: say "2" eq "2" ?? "equal" !! "unequal" [21:21] pugs, rakudo be44f6, sprixel 28555: OUTPUT«equal␤» [21:21] ..elf 28555: OUTPUT«Unknown rule: infix:conditional␤It needs to be added to ast_handlers.␤ at ./elf_h line 2850␤» [21:22] perl6: say "2" == "2" ?? "equal" !! "unequal" # from t/01-sanity/03-equal.t [21:22] pugs, rakudo be44f6: OUTPUT«equal␤» [21:22] ..elf 28555: OUTPUT«Unknown rule: infix:conditional␤It needs to be added to ast_handlers.␤ at ./elf_h line 2850␤» [21:22] ..sprixel 28555: OUTPUT«execute(): execute error: comparison_op infix__S_EqualEqual not yet implemented; srsly!!?!?? at sprixel.pl line 89.␤» [21:23] can probably fix sprixel there :) [21:25] *** tak11 left [21:25] *** mikehh joined [21:25] *** arnsholt_ joined [21:25] *** leedo_ joined [21:25] *** mberends left [21:25] *** cdarroch left [21:25] *** payload left [21:25] *** Chillance left [21:25] *** rjh left [21:25] *** kolibrie left [21:25] *** Helios- left [21:25] *** lanny left [21:25] *** nihiliad left [21:25] *** jan__ left [21:26] *** silug left [21:26] *** PacoLinux left [21:26] *** zerhash left [21:26] *** sjohnson left [21:26] *** christine left [21:26] *** pugs_svn left [21:26] *** ezra left [21:26] *** phenny left [21:26] *** yves left [21:26] *** gbacon left [21:26] *** lambdabot left [21:26] *** allbery_b left [21:26] *** omega left [21:26] *** rhr_ left [21:26] *** _Jedai_ left [21:26] *** pmurias left [21:26] *** Rint left [21:26] *** araujo left [21:26] *** discHead left [21:26] *** mikehh left [21:26] *** tylerni7 left [21:26] *** hudnix left [21:26] *** colomon left [21:26] *** Patterner left [21:26] *** orafu left [21:26] *** Intensity left [21:26] *** blaze-x left [21:26] *** garron left [21:26] *** Infinoid left [21:26] *** sri_ left [21:26] *** broquaint left [21:26] *** clkao left [21:26] *** buu left [21:26] *** ewilhelm left [21:26] *** dmpk2k left [21:26] *** integral left [21:26] *** cxreg left [21:26] *** jjore left [21:26] *** arnsholt left [21:26] *** cj left [21:26] *** sparc left [21:26] *** sbp left [21:26] *** leedo left [21:26] *** mtve left [21:26] *** diakopter left [21:26] *** nothingmuch left [21:26] *** jql left [21:26] *** mtve joined [21:26] *** sjohnson joined [21:26] *** cxreg2 joined [21:26] *** nothingmuch_ joined [21:26] *** diakopte1 joined [21:26] *** mikehh joined [21:26] *** payload joined [21:26] *** Chillance joined [21:26] *** tylerni7 joined [21:26] *** mberends joined [21:26] *** pmurias joined [21:26] *** discHead joined [21:26] *** nihiliad joined [21:26] *** araujo joined [21:26] *** lanny joined [21:26] *** cdarroch joined [21:26] *** jan__ joined [21:26] *** Patterner joined [21:26] *** _Jedai_ joined [21:26] *** rhr_ joined [21:26] *** orafu joined [21:26] *** Intensity joined [21:26] *** colomon joined [21:26] *** silug joined [21:26] *** Rint joined [21:26] *** Helios- joined [21:26] *** kolibrie joined [21:26] *** ezra joined [21:26] *** pugs_svn joined [21:26] *** phenny joined [21:26] *** yves joined [21:26] *** christine joined [21:26] *** allbery_b joined [21:26] *** zerhash joined [21:26] *** PacoLinux joined [21:26] *** omega joined [21:26] *** gbacon joined [21:26] *** lambdabot joined [21:26] *** rjh joined [21:26] *** hudnix joined [21:26] *** broquaint joined [21:26] *** sri_ joined [21:26] *** dmpk2k joined [21:26] *** Infinoid joined [21:26] *** buu joined [21:26] *** garron joined [21:26] *** blaze-x joined [21:26] *** integral joined [21:26] *** clkao joined [21:26] *** irc.freenode.net sets mode: +ovv sjohnson pugs_svn phenny [21:26] *** ewilhelm joined [21:26] *** nothingmuch_ is now known as nothingmuch [21:26] *** jjore_ joined [21:27] *** sbp joined [21:30] *** cj joined [21:31] *** arnsholt_ is now known as arnsholt [21:32] *** cj left [21:32] *** cj joined [21:45] r28556 | mberends++ | [sprixel] do "2" == "2", 'make -f sprixel.mk test' passes t/01-sanity/03-equal.t [21:47] *** wknight8111 joined [21:51] r28557 | lwall++ | [STD] more lib movement [21:51] r28557 | [STD] don't add @_ or %_ until seen [21:51] r28557 | [STD] fix id collision between file scope and {} at pos 0 (diakopter++) [21:53] mberends: cool.. :D [21:55] moritz_: you around? [21:55] *** diakopte1 is now known as diakopter [21:56] *** lichtkind left [21:58] *** Whiteknight left [22:02] *** iblechbot left [22:14] *** kst left [22:14] *** pmurias left [22:17] diakopter++: sprixel passes 7/16 tests in t/spec/S03-operators/ternary.t [22:18] oh cool [22:18] * diakopter tries it [22:19] Wow, that's pretty cool. I can see Larry Wall working away at Perl6 right now. [22:19] eh [22:19] gotta get this fudging harness more complete... [22:19] coldboot: he's standing in a crowd... :) [22:20] oh, perhaps you mean on the irc channel [22:20] Yeah I can see the pugs_svn bot. [22:20] What do you mean he's standing in a crowd? [22:21] I thought you meant you're one of the people here at this conf who can see him standing in a crowd at the front of the auditorium.. [22:21] *** keeth_ joined [22:22] There's a conference going on right now? [22:22] 4 Infinite Loop [22:22] Cupertino [22:22] perhaps coldboot is referring to commit r28557 [22:22] coldboot: LLVM 2009 at Apple [22:23] *** kst joined [22:23] obviously Larry Wall could not be standing around at a conference *and* checking in code at the same time [22:23] TimToady, have you seen Larry Wall today? [22:24] um, hmm, now that you mention it, I'm at the same conference, so yes [22:24] maybe you saw someone else who saw him [22:24] I met a guy named Matt who saw him [22:25] this is one of TimToady's cute children who learned how to type [22:25] and help us with basic perl questions [22:25] are TimToady's children bots? or butterflies? [22:26] they're cute kids who crawl around on the floor and speak a bit of babytalk and english [22:26] phenny: tell quietfanatic welcome back from your chrysalis [22:26] diakopter: I'll pass that on when quietfanatic is around. [22:27] mberends: ok [22:28] name a node in STD (or a symbol combo - with __S_ in the name) and I'll try to implement it next. [22:28] from ternary.t: circumfix__S_Bra_Ket [22:29] oh, the -t doesn't work with TimToady's last commit [22:29] it can't find Test.pm [22:29] Is Duke Nukem Forever being written in Perl 6? [22:30] sprixel testing works here without -t now [22:30] Duke Nukem Forever's hero's task is to implement Perl 6 [22:31] the enemies are the spectests. [22:31] Duke Nukem Forever will be finished when all the enemies are encoded into the game as adversaries [22:32] then someone will actually have to try and beat the game. [22:32] but fortunately you can play the game before the game is finisehd [22:32] haha [22:32] are you using PERL6LIB envvar? [22:32] oo [22:32] you might need to add ./lib [22:33] oh I know [22:33] sprixel.pl is trying to read Test.pm locally and hack together the syml [22:33] s/hack/fake/ [22:34] *** icwiener left [22:34] coldboot: but obviously you can't beat the game until the game is finished also. [22:36] "on which Perl 6 does your company standardize?" "spectest_pugscode_svn_r4427293755732" [22:37] :) [22:38] *** keeth left [22:38] *** keeth_ is now known as keeth [22:38] Why are there multiple implementations of Perl6, by the way? [22:38] *** quietfanatic joined [22:39] Darwinian competition [22:39] Hi phenny. [22:39] Hi quietfanatic [22:39] quietfanatic: 22:26Z tell quietfanatic welcome back from your chrysalis [22:40] coldboot: we can't agree on the best way to implement Perl 6, so we let the computers fight it out [22:40] mberends: more like, we can't agree on the slowest way to implement.... [22:40] diakopter: That bus is beginning to feel like that yeah. [22:41] Perl 6 on INTERCAL would win hands down [22:41] that bus's bus number needs to stay above 0 [22:47] *** tak11 joined [22:50] *** payload left [22:51] mberends: do you want to make test 4 in ternary.t work by implementing operator div? [22:51] (while I look at test 9) [22:52] ok, lemme take a hack at that [22:54] *** hercynium joined [22:55] r28558 | diakopter++ | [sprixel] non-implement circumfix__S_Bra_Ket and make sprixel.pl work with r-1 [22:55] *** meppl left [22:57] sprixel: say [1,2,3]; [22:57] sprixel 28557: OUTPUT«␤» [22:57] heh [22:57] there's your non-Array [22:58] useful for magicians who need to make things disappear [23:00] *** quietfanatic left [23:03] S03-operators/equality.t blows up on Symbolic_unary prefix__S_Bang NYI, looks like low hanging fruit. let's try just a little bite... [23:07] *** nihiliad left [23:11] *** ruoso joined [23:12] *** payload joined [23:18] r28559 | mberends++ | [sprixel/interp.js] add Symbolic_unary prefix__S_Bang (the logical ! operator) and pass 4/15 in S03-operators/equality.t [23:20] diakopter: svn up your interp.js :) [23:24] *** lanny left [23:26] *** crythias joined [23:31] with better fudging, sprixel passes 8/15 of S03-operators/equality.t [23:50] r28560 | mberends++ | [sprixel] perform the integer div operator in interp.js and builtins.js [23:52] *** quietfanatic joined [23:53] S03-operators/ternary.t passes 12/16 [23:54] *** keeth left