Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2006-04-30

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:07 cognominal joined perl6
00:16 qmole joined perl6
00:34 rootch1 joined perl6
00:34 rootch1 is there a way to list all methods and attributes of a object...
00:35 rootch1 f.e. @ary.supportedMethods
00:36 rootch1 i.e. doing some sort of introspection/reflection, whatever ;)
00:37 mako132_ joined perl6
00:38 aufrank rootch1: there are methods available under $foo.meta.* for introspection
00:38 aufrank but which ones are there is unspecced right now, I think
00:39 aufrank but I think there will be something like $foo.meta.methods
00:40 rootch1 print @ary.meta.methods;
00:40 rootch1 *** No such method in class Any: "&methods"
00:40 rootch1    at ./test.p6 line 31, column 7-24
00:47 justatheory joined perl6
00:53 hexmode joined perl6
01:34 aufrank rootch1: I think that this .meta stuff is mostly unspecced (they haven't decided what methods are going to be exposed) and mostly unimplemented
01:35 aufrank but /me could be wrong
01:36 rootch1 i see
01:36 rootch1 hmm..
01:36 rootch1 'cause it is hard to know what is implemented and what not..
01:37 rootch1 if i'm able to print these stuff
01:37 rootch1 can be sure what is supported
01:39 aufrank this is the right place to be asking
01:39 aufrank it's just kind of dead in here right now
01:40 aufrank still, if you ask about a particular aspect of the language, someone here migvht be able to answer
02:54 Kattana joined perl6
03:03 frederico joined perl6
03:03 Quell joined perl6
03:05 coumbes_ joined perl6
03:21 rbysamppi joined perl6
03:22 weinig|away is now known as weinig|sleep
03:26 rbysamppi Hello and kudos to all Pugs hackers! I would like to contribute by trying to fix the currently woeful state of the Perl 6 tutorials in docs/Perl6/Tutorial. How can I get a commit bit or something?
03:30 obra rbysamppi: what's your email address?
03:30 rbysamppi It's [email@hidden.address]
03:31 obra Commit bit invitation in your inbox
03:31 rbysamppi 'k, thanks.
03:33 obra be sure to add yourself to the AUTHORS file
03:34 rbysamppi Even before I've done anything?
03:39 obra It's a great first commit. A good way to test the process
03:39 obra and a good way to make you feel guilty enough to commit ;)
03:39 rbysamppi ...I see.
03:40 rbysamppi Forgive me, but this is the first time I've ever contributed to any project like this or anything. Er...how do I do things?
03:40 rbysamppi Like, I'm looking around http://rt.openfoundry.org/Foundry/Project/?Queue=270, but no luck.
03:41 obra Ah. Ok. Asking for a commit bit implied a level of familiarity. ;)
03:41 obra so. do you know subversion at all?
03:41 rbysamppi No, I'm afraid not. :(
03:41 rbysamppi My credentials are...
03:41 obra ok. what platform are you on?
03:41 rbysamppi ...paying attention to p6lang for a year, and #perl6 for a week. :(
03:41 rbysamppi I'm on Ubuntu.
03:43 obra ok. cd ~ ; mkdir pugs-src;cd pugs-src svn co http://svn.openfoundry.org/pugs/
03:43 obra that will get you a working directory
03:43 rbysamppi 'k, thanks. :)
03:43 obra to commit your changes: svn commit filename filename2
03:43 obra to update from the repo: svn up
03:44 PerlJam rbysamppi: read the svn book too (http://svnbook.red-bean.com/)
03:44 PerlJam rbysamppi: and welcome!  :)
03:44 rbysamppi Thanks. I'll look at it. :)
03:51 frederico joined perl6
04:06 svnbot6 r10143 | audreyt++ | * Pugs.cabal.in: Fix the buildsystem so it again builds on 6.4.2.
04:10 svnbot6 r10144 | audreyt++ | * unTODO passing tests.
04:10 svnbot6 r10145 | audreyt++ | * build_pugs.pl: more Cabal fixes.
04:10 svnbot6 r10146 | audreyt++ | * Parser.Literal: Per dconway++'s suggestion, retract the
04:10 svnbot6 r10146 | audreyt++ |     $foo.       :bar()
04:10 svnbot6 r10146 | audreyt++ |   form, allowing only
04:10 svnbot6 r10146 | audreyt++ |     $foo.:bar()
04:10 svnbot6 r10146 | audreyt++ |   at this moment.
04:11 aufrank audreyt: I'm building ghc-6.4.2.  I'll let you know if pugs builds once ghc is updated
04:12 aufrank (regarding my build error pasted in earlier)
04:12 aufrank also, good morning!
04:14 audreyt thanks :)
04:14 audreyt and good localtime too!
04:15 audreyt aufrank: 10148 should make both 6.4.1 and 6.4.2 udilable
04:15 audreyt er, buildable
04:15 aufrank where did you look to fix it?  I looked in build-pugs.pl but I couldn't tell what needed doing
04:16 audreyt it turns out that the two Cabal versions shipped in .1 and .2 is not compatible
04:16 audreyt so I did ./Setup build --verbose
04:16 audreyt copied the actual cmdline arguments
04:17 Alias_ joined perl6
04:17 aufrank gotcha
04:17 aufrank thanks :)
04:17 audreyt np :)
04:17 Alias_ audreyt: Ping?
04:17 Alias_ oh, good
04:17 aufrank did clkao go after the rules for signatures yet?
04:18 audreyt no. want to take a stab?
04:18 Alias_ audreyt: Do you remember that problem I found with your signatures file? Can you recall what the particular problem was?
04:18 audreyt Alias_: CRLF I guess?
04:18 Alias_ audreyt: Was it mixed carriage returns of something?
04:18 Alias_ s/of/or/
04:18 aufrank if you'll remind me which Syn to read and point me at an example I can sort of work from :)
04:19 audreyt Alias_: yeah
04:19 Alias_ goodo
04:19 audreyt aufrank: woot
04:20 Alias_ I just hit the same problem I think, this time with Digest::SHA of all things :)
04:20 audreyt S06
04:21 audreyt aufrank: as for example... look for indented parts in S06 :)
04:22 audreyt t/subroutines/sub_named_params.t etc
04:22 audreyt and other .t
04:22 audreyt a sec, I'll brb
04:27 * aufrank reads S06 again
04:32 Alias_ audreyt: One last thing. Vanilla build 3 is very nearly usable at this point, and now Module::Build 0.28 is out, I think we're just down to the Term::Readline::Perl four-enters bug, and Module::Signature, as blockers for Strawberry build 1.
04:33 shachaf joined perl6
04:33 Alias_ audreyt: Once Ilya gets his bug fixed, if we're still having troubles with Mod-Sig, do you think you might be able to help us get a new version out the door?
04:33 audreyt sure!
04:33 Alias_ Nobody really seems confident how to attack it
04:34 aufrank hate to butt in, but what is strawberry a build of?
04:34 aufrank </pry>
04:34 aufrank =P
04:34 Alias_ aufrank: Strawberry is Perl 5.8.8 built with MinGW and dmake, with BOTH bundled, and additionally has the main Bundle::CPAN and change bundled
04:35 aufrank man, that sounds great
04:35 Alias_ Vanilla is the same, but an experimental build that's as close to the core as we can get it without it being complely unworkable
04:35 aufrank there are a couple of windows boxes I've got to use at work, and I've got mingw on there anyway.  It'd be really nice to have a good perl in that environment.
04:35 Alias_ It's getting there
04:35 Alias_ Hang on a second
04:36 Alias_ http://camelpack.sourceforge.net/index.php/VanillaPerl
04:36 Alias_ That describes Vanilla, and links to Strawberry
04:37 aufrank left perl6
04:37 Alias_ wow, he had a bad reaction to Vanilla
04:37 Alias_ Must be allergic
04:37 aufrank joined perl6
04:37 aufrank whoops, back
04:47 rootch1 i asked before , but nobody was here...so if i can ask again : is there a way to list all methods and attributes of a object...f.e. @ary.supportedMethods ii.e. doing some sort of introspection/reflection, whatever
04:48 aufrank rootch1: hey, be nice.  I was here, I just wasn't useful.  ;)
04:48 rootch1 ;) yeah sorry
04:48 aufrank audreyt will be back soon and is probably the best person to talk to
04:48 rootch1 i see, k
04:48 aufrank I should warn you, though, that you will probably be invited to implement whatever features you wish were already included ;)
04:49 rootch1 if i can...;)
04:49 rootch1 i'm looking at the /lib/perl6 directories
04:49 audreyt hihi
04:50 rootch1 there seems to be similar methods in several modules, but !!
04:50 aufrank audreyt: rootch1 wants my @methods = $foo.meta.methods
04:50 rootch1 can figure out how are used
04:50 audreyt rootch1: it's tested for in t/oo/meta_class.t
04:51 audreyt at this moment, the .getmethods (and .signature for the objects they return) is not yet defined
04:51 audreyt primarily because we have not yet converted builtin functions into methods in builtin classes
04:51 audreyt and as such things like .int and .defined is not listed in the method table
04:52 rootch1 i see
04:52 audreyt please see t/oo/meta_class.t (and other t/oo/*) for the eventual syntax
04:52 aufrank audreyt: if an object is of a class that does multiple roles, can the get methods return a @;array with a different dim for each role the class does?
04:52 audreyt aufrank: I don't think so; when a role becomes mixed-in, they behave asif they are defined in the class
04:52 audreyt at least as currently specced
04:53 audreyt what's the use case of this?
04:53 audreyt instead of iterating thru .meta.roles
04:53 aufrank you'd probably want a hash more than an multidim array, anyway
04:53 audreyt and query them normally
04:53 aufrank I forgot that roles were exposed through .meta
04:53 aufrank my non-problem stands solved
04:55 aufrank audreyt: I'm not sure if this suggestion makes sense either, but it seems like $foo.meta.roles.methods could return a Match object
04:55 aufrank with each role as a key
04:56 avar audreyt: your voice is odd;) (on the interview on the blog)
04:59 Alias_ she vocoded it I believe :)
04:59 avar What's vocoding?
04:59 Alias_ software voice modification
04:59 Alias_ or rather, artificial voice modification
05:00 avar why?
05:00 * Alias_ leaves that to audreyt to answer :)
05:01 rootch1 i'm tring this :
05:02 rootch1 class xxx { method brrr { 1 } }
05:02 rootch1 print xxx.meta.getmethods();
05:02 rootch1 *** No such method in class Any: "&getmethods"
05:02 rootch1    at ./test.p6 line 33, column 7-28
05:02 rootch1 and in the t/meta_class.t
05:02 audreyt avar: I left a comment at perlcast.com; read it :)
05:02 audreyt rootch1: yes, that test is eval'ed, which means it's not yet implemented
05:03 rootch1 it is the same
05:03 rootch1 aha, i see
05:03 rootch1 now i saw ;)
05:03 rootch1 :todo<feature>
05:03 rootch1 sorry
05:04 avar audreyt: Interesting
05:09 ayrnieu joined perl6
05:09 aufrank is there a conceptual connection between prefix<*> to make a sub global, and prefix<*> to put something into the current capture?
05:13 azuroth I don't believe so
05:14 rootch1 i think saw somewhere tutorial for using Test.pm for Perl6, but cant remember ? can u point me to it if there is such ?
05:15 avar rootch1: use Test::More
05:15 audreyt aufrank: no, there is none...
05:15 audreyt bbiab
05:15 avar arg, perl 6..;)
05:15 Alias_ avar: yeah...
05:15 Alias_ avar: I have the whole "Test.pm is old and bad" stuck in my head too
05:16 rootch1 is the Test.pm for perl5 the same ?
05:16 avar Isn't it?
05:16 avar Yeah, I guess
05:16 avar I always use Test::More
05:16 Alias_ Test.pm is indeed old and bad
05:16 Alias_ But it does produce TAP, so it works still
05:16 avar Test::More gives you lots of stuff, like recursively comparing datastructures and displaying diffs
05:17 Alias_ And test comments :)
05:17 Alias_ Which Test.pm doesn't really have
05:17 rootch1 so I should look Test::More
05:17 Alias_ in Perl 5 Test::More is THE testing module of the moment
05:17 Alias_ Everything pretty much uses it
05:18 rootch1 ok.. that is enougth thanx
05:18 avar Test::More should be called Test
05:18 rootch1 i will look ati it
05:18 rootch1 at it
05:18 Alias_ avar: Dunno, it reinforces the testing thing
05:18 Alias_ avar: "Test More! MORE!!!!"
05:18 avar Alias_: arg!!!!
05:18 Alias_ In fact, Test::More::More::MORE :)
05:26 aufrank left perl6
05:33 macroron joined perl6
05:56 rootch1 here is how to see most of the unimplemented features, run inside the test directory
05:56 rootch1 grep -r 'todo<feature>' * | perl -ne 'm!^(.+?/(.+?:))?.+["''](.+?)["''],.+?:todo<feature>!; print "$2 $3\n" if $2 || $3'  | less
05:57 rootch1 ;)
06:05 rootch1 if i try to assign a value when creating the class attribute, it doesnt seem to work, is that correct ? ex : has $.blah = 55;
06:05 rootch1 or it is by design
06:05 Quell joined perl6
06:11 audreyt it's not by design, it's another bug.
06:11 audreyt (it should be specifying a "default value" for instances)
06:11 audreyt workaround: write
06:11 audreyt submethod BUILD ($.blah = 55) {}
06:11 Alias_ audreyt: Do long dots work in the current pugs build?
06:12 audreyt Alias_: sure
06:12 Alias_ audreyt: I heard about it from nothingmuch and I just had to come witness the horror
06:12 SamB joined perl6
06:12 Alias_ Any word if it's going to stick?
06:13 audreyt ?eval 100.     .sqrt
06:13 Alias_ oops
06:14 audreyt restarting it
06:28 zardiz joined perl6
06:29 rootch1 when writing the new() method..is it required to return $self like this :
06:29 rootch1 method new($self: $blah) { ...do something ...; $self }
06:29 rootch1 or there is shortcut
06:30 audreyt you don't usually write "new"
06:30 audreyt just write "BUILD"
06:31 audreyt new just calls BUILD
06:31 * Alias_ whimpers
06:31 Alias_ audreyt: How hard is dealing with the BUILD-type stuff in complex dep structures. Are you finding it scales ?
06:32 audreyt sure
06:32 audreyt because you can freely call to "next in dispatch chain" and back
06:32 audreyt we discussed this in australia :)
06:32 Alias_ I know, and I'm still nervous
06:32 Alias_ Although more about learnability now than actually-working
06:32 audreyt nodnod.
06:33 rootch1 hmm..cute...I made BUILD($fileName){..}
06:33 rootch1 then it told me that .new allows only named arguments
06:34 rootch1 and i done   myclass.new(fileName => 'bruum.txt')
06:34 rootch1 and it worked
06:34 audreyt cool
06:34 audreyt the default for "new" is to be named-only
06:34 audreyt and for good reason, namely uncoordinated subclassing
06:34 rootch1 and if i want to name
06:35 rootch1 the argument some other way ? how do i do it?
06:35 rootch1 but the var is still $fileName
06:35 aufrank joined perl6
06:35 bsb joined perl6
06:36 audreyt BUILD (:file($fileName)) {..} # but unimplemented
06:36 audreyt this allows passing in as .new(file=>'moose')
06:36 audreyt but goes into $fileName
06:37 rootch1 i see, 10x
06:38 aufrank audreyt: in S06, in the quicksort example, the ?$foo form is used
06:38 aufrank is that still valid?
06:39 audreyt thanks, committed.
06:39 audreyt (as in, no, it's invalid, I fixed S06)
06:39 aufrank yeah, I followed :)
06:40 aufrank it should be $foo?    #?
06:40 audreyt yup
06:40 audreyt brb
06:42 evalbot_10153 joined perl6
06:42 audreyt ?eval 100.      .sqrt
06:42 evalbot_10153 10.0
06:42 audreyt ?eval 100.   #(Your Advertisement here)   .sqrt
06:42 evalbot_10153 10.0
06:42 ayrnieu ?eval 100. #(EAT AT JOES) .sqrt
06:42 evalbot_10153 10.0
06:43 aufrank ooh!
06:45 ayrnieu is that an 'ooh!' for Joe's?
06:46 aufrank $foo.#{TT says this looks like a null method call}.hrm
06:48 aufrank ayrnieu: yeah, I'm supposed to meet some people at a diner tomorrow morning and I had forgotten
06:48 aufrank you reminded me
06:49 ayrnieu that's all the thanks that subliminal advertising ever wanted :-(
06:49 aufrank I try to be grateful
06:50 Alias_ I find C<  100. #(EAT AT JOES) .sqrt   > rather scary
06:52 audreyt Alias_: it's not special to long-dot; it's just general inline-comments
06:52 audreyt counting as whitespace
06:52 Alias_ audreyt: oh, I know. But the fact that long dots make that sort of thing even possible is the scary bit
06:52 audreyt ?eval 1 #(that's one) + 2 #(that's two)
06:52 evalbot_10153 3
06:52 audreyt well, point taken, but I for one like inline comments :)
06:53 Alias_ ditto
06:53 Alias_ I think it's more that long dot makes my spidey sense go crazy
06:53 audreyt yeah. it does to everyone
06:53 audreyt but I guess it is the least horrible choice
06:54 Alias_ Does it have a point>?
06:54 Alias_ or purpose?
06:54 audreyt sure.
06:54 audreyt the point is that
06:54 audreyt foo                .bar
06:54 audreyt can mean foo($_.bar) or foo.bar
06:54 audreyt and we probably always want it to mean the first
06:54 audreyt foo.                 bar
06:54 audreyt is visually nonappealing to me
06:55 Alias_ Then move it closer :)
06:55 audreyt and makes line-continuation nonobvious
06:55 drrho joined perl6
06:55 audreyt no, the point is to translate this perl
06:55 audreyt 5
06:55 audreyt $foo->moose
06:55 audreyt    ->blah
06:55 audreyt    ->bleh
06:55 audreyt into perl6
06:55 audreyt and currently the way to do it is
06:55 audreyt $foo.moose.
06:55 audreyt    .blah.
06:56 audreyt    .bleh
06:56 audreyt which, at least to me, reads better than
06:56 audreyt $foo.moose.
06:56 audreyt     blah.
06:56 audreyt    bleh
06:56 audreyt lunch, bbiab
06:56 Alias_ it does?
06:56 Alias_ I agree the latter sucks, but the formers almost worse
06:56 audreyt (to me, yeah.)
06:57 Alias_ Because it's also messy and distracting
06:57 Alias_ Try staring at it and working out where the missing . is
06:57 Alias_ :)
06:58 Alias_ you need \ or something
06:58 Alias_ $foo.moose
06:58 Alias_    \blah
06:58 Alias_ or even pipe
06:58 Alias_ $foo.moose
06:58 Alias_    |blah
06:58 Alias_    |bleh
06:58 Alias_ But I'd be willing to bet people have looked for those already
07:07 rootch1 i cant figure out how to use p6 regexes :
07:07 rootch1 "abc" ~~ m/^(a)/;
07:07 rootch1 $1.say;
07:08 rootch1 gives me
07:08 rootch1 *** Cannot parse PGE: ^(a)
07:08 rootch1 *** Error: does not exist
07:09 rootch1 pugs 6.2.11
07:10 azuroth ?eval "abc" ~~ m/^a/;
07:10 evalbot_10153 *** Cannot parse PGE: ^a *** Error: Cannot find the parrot executable in PATH Match.new(   ok => bool::false,    from => 0,    to => 0,    str => "",    sub_pos => (),    sub_named => {} )
07:11 azuroth ?eval "abc" ~~ m:p5/^a/;
07:11 evalbot_10153 *** Cannot parse PGE: ^a *** Error: Cannot find the parrot executable in PATH Match.new(   ok => bool::false,    from => 0,    to => 0,    str => "",    sub_pos => (),    sub_named => {} )
07:12 rootch1 or whatever regex...just wanted to start tring
07:14 rootch1 "abc" ~~ m:p5/^a/; <----- m:P5
07:14 ayrnieu threading $foo { .moose; .blah; .bleh }
07:14 rootch1 does this mean that still only P5 regex are supported ?!
07:14 azuroth ?eval "abc" ~~ m:rx5/^a/;
07:14 evalbot_10153 *** Cannot parse PGE: ^a *** Error: Cannot find the parrot executable in PATH Match.new(   ok => bool::false,    from => 0,    to => 0,    str => "",    sub_pos => (),    sub_named => {} )
07:15 azuroth both are supported
07:15 elmex joined perl6
07:15 azuroth but for p6 regexes pugs just uses PGE, as far as I know
07:17 azuroth ?eval "abc" ~~ m:perl5/^a/;
07:17 evalbot_10153 Match.new(   ok => bool::true,    from => 0,    to => 1,    str => "a",    sub_pos => (),    sub_named => {} )
07:27 macroron joined perl6
07:45 aufrank sleep 18000 &
07:46 audreyt yay, smoke now takes less than one hour here
07:47 Alias_ :)
07:47 * Alias_ finishes auditing Bundle::CPAN, damn there's some crusty old code
07:48 * audreyt praises Alias_ for keeping the CPAN torch burning bright
07:48 Alias_ It's more the Strawberry Perl light
07:48 Alias_ I really really really want to FINALLY be able to run PPI on my own desktop
07:48 Alias_ BTW, how in place is 6PAN?
07:49 Alias_ I wanted to sit down at YAPC::NA with whatever you have and go through it in depth
07:49 audreyt yes
07:49 audreyt let's do that.
07:49 audreyt you going to be @ hackathon?
07:49 Alias_ FSVO you
07:49 Alias_ yep
07:49 audreyt k
07:49 Alias_ I've put aside the days
07:49 Alias_ And I'm hoping to deal with PITA smoke stuff there
07:49 Alias_ I figure it's probably the best time for it
07:50 Alias_ Get the PITA::Scheme modules out the way
07:51 audreyt how's OOO.ooo going?
07:52 Alias_ Well, it would appear that nobody on the planet can package a Java servlet
07:52 Alias_ So stally
07:52 Alias_ But I've had an email from the State of Mass.
07:52 Alias_ And the NSW Roads and Traffic Authority has a guy working on it full time for a little while
07:52 Alias_ (the packaging)
07:53 Alias_ So hopefully it will move forward a bit more
07:53 Alias_ frustrating
07:53 Alias_ Server written in such a short time, and stalled just on installation
07:53 Alias_ Elaine's Law kicks my ass again
07:54 aufrank audreyt: if you pull now, do you get my changes to t/subroutines/sub_named_params.t ?
07:54 Alias_ But then it's not like I don't have enough things to fill my time when another project is blocking on some task :)
07:55 * aufrank doubts his svk-foo
07:55 aufrank svk-fu, even
07:55 audreyt sure, got it
07:55 aufrank phew
07:57 aufrank it's no big deal-type stuff, but I can definitely add some more tests tomorrow, and will probably go after rules for parsing Signatures
07:57 audreyt yay
07:57 audreyt maybe that will become the first part of Pugs.Parser to be rule-driven
07:58 aufrank something to shoot for :)
07:58 aufrank but sleep for real now :)
07:58 aufrank hey, I aligned that without even using a long dot!
07:59 audreyt lol
08:00 ghenry joined perl6
08:00 aufrank ---------------------> &
08:00 audreyt g'nite, seeya tomorrow :)
08:00 xinming error reading ./.setup-config; run "setup configure" command?
08:00 xinming Build failed: 256 at util/build_pugs.pl line 96.
08:00 xinming make: *** [pugs] Error 2
08:00 xinming ???
08:01 audreyt xinming: this is "Makefile.PL"?
08:01 xinming what I get while trying to rebuild pugs,
08:01 audreyt try "perl Makefile.PL" first
08:01 xinming audreyt: No, in after `perl Makefile.PL.
08:01 xinming audreyt: I tried
08:02 audreyt nopaste the whole log?
08:04 xinming audreyt: I'll try that now, bbl
08:04 xinming lisppaste3:
08:04 xinming lisppaste3: url
08:04 lisppaste3 To use the lisppaste bot, visit http://paste.lisp.org/new/perl6 and enter your paste.
08:05 xinming audreyt: by the way, I can't compile it even on feather...
08:06 audreyt weird, as I did compile it on feather
08:06 audreyt same error?
08:06 audreyt what if you rm -rf dist and third-party/fps/dist/ ?
08:07 xinming audreyt: hold on please
08:11 Aankhen`` joined perl6
08:12 lisppaste3 xinming pasted "Error even after doing `rm -rf dist; third-party/fps/dist`" at http://paste.lisp.org/display/19532
08:13 xinming audreyt: hmm, I tried. :-)
08:14 xinming audreyt: In fact, you can checkout a fresh-copy and try to compile on feather.
08:15 audreyt ok
08:16 Alias_ audreyt: Can I bounce an idea off you? (so I can stop pondering it mostly)
08:16 audreyt try again
08:16 audreyt xinming: sorry I forgot to commit the fix
08:16 Alias_ audreyt: What do you think would be the likelyhood of being able to reasonably require SQLite as a 6CPAN::Client dependency
08:17 xinming audreyt: It's ok, I think you forgot to "push"   :-P
08:17 audreyt :p
08:17 audreyt Alias_: I think it makes a lot of sense as a local cache.
08:17 audreyt I further think it's the sane thing to do in today's environment.
08:17 audreyt however, it should be reconstructable from plain text files
08:17 Alias_ I imagine so
08:17 audreyt that is, it may replace the "Metadata" Storable
08:18 audreyt but not the .gz files
08:18 Alias_ The JSAN approach was to have both
08:18 Alias_ Some sort of YAML thing, and a downloadable SQLite index
08:18 Alias_ I dunno about YAML for the index though :/
08:18 xinming audreyt: It's going fine now.
08:18 xinming audreyt++
08:19 audreyt woot.
08:19 audreyt Alias_: I think the JSON subset of YAML is just fine.
08:19 xinming audreyt: what's the date today? 29 or 30?
08:20 audreyt 30
08:20 Alias_ audreyt: After bad experiences on JSAN I'm still not convinced, but probably could be
08:20 xinming thx
08:20 audreyt ?eval localtime().day
08:21 audreyt Alias_: if you require SQLite, it's not a problem to require Syck.
08:21 evalbot_10153 is now known as evalbot_10156
08:21 evalbot_10156 \30
08:21 Alias_ audreyt: That might be the best
08:21 Alias_ Whatever it is we use, the days of holding the entire dataset in memory have to dissapear
08:21 audreyt yes, amen.
08:22 Alias_ It's a pity a direct port of the JSAN client would be too heavy though
08:22 Alias_ A combination of LWP, SQLite, Class::DBI and Algorithm::Dependency
08:22 audreyt I think Class::DBI is not neccessarily good.
08:23 audreyt if we dependon SQLite for cache
08:23 audreyt we can just use views.
08:23 audreyt (and triggers.)
08:23 audreyt which is very sane
08:23 Alias_ point
08:24 Alias_ what CDBI did very well though was allow dependencies to be integrated in
08:24 Alias_ Although I guess since P6 will have the same code-based installer that won't work so well
08:24 Alias_ (static dependencies)++
08:24 Alias_ Anyways, just wanted to test the waters
08:24 * Alias_ moves on
08:25 nothingmuch btw
08:25 nothingmuch the port of Algorithm::Dependency should really use roles and stuff
08:25 nothingmuch if at all
08:25 nothingmuch (i prefer duck typing, hence my own version)
08:25 Alias_ Oh, Alg:Dep needs to die
08:25 Alias_ I actually have a better design in my head
08:25 Alias_ well, half of it
08:25 nothingmuch it was easier to copy the logic than to write all the base classes =)
08:26 audreyt the design is in the right half of your head?
08:26 Alias_ audreyt: Possibly
08:26 * nothingmuch reminds Alias_ of Algorithm::Dependency::Objects
08:26 Alias_ That's not good enough either
08:26 audreyt bbiab...
08:26 Alias_ It solves an API problem, but not the main algorithmic problem
08:26 kakos joined perl6
08:26 nothingmuch what is the algorithm problem?
08:27 Alias_ Sometimes you have all the data in memory
08:27 Alias_ Sometimes the data is too big to load into memory
08:27 nothingmuch oi vey
08:27 nothingmuch i see where you're going
08:27 nothingmuch ;-)
08:27 Alias_ Sometimes you don't know much about the graph
08:27 Alias_ Sometimes the graph is unknowable
08:27 Alias_ Sometimes the graph is computational :/
08:28 Alias_ It's analageous to Isotope's event-based vs discrete
08:28 Alias_ You need to think graphy
08:28 nothingmuch i suggest Algorithm::Dependency and Algorithm::Dependency::Graph::Iterative
08:28 nothingmuch or just ::Heavy
08:28 Alias_ Well, it's like to be Algorithm::Graph
08:29 nothingmuch adj set graphs, I assume?
08:29 Alias_ Which will represent what is currently AlgDep::Source
08:29 Alias_ adj set ?
08:29 nothingmuch where each node contains the other nodes it has an edge to
08:29 nothingmuch classical lazy representation of graphs
08:29 Alias_ Where graph is a sort of graph not represented in mathematics
08:30 Alias_ (that I know of)
08:30 nothingmuch imagine a table
08:30 nothingmuch and a link table on itself
08:30 Alias_ yes, vaguely
08:30 nothingmuch the link table is directed (or undirected) edges
08:31 nothingmuch the table is vertexes
08:31 nothingmuch the "other" way to do graphs is a set of vertexes and a set of graphs
08:31 nothingmuch they can be stored the same
08:31 Alias_ Except an Alg:Graph needs to be aware of it's knowability
08:31 nothingmuch but they're queried differently
08:31 Alias_ Which is an altogether different issue
08:31 nothingmuch i suggest you look at the haskell stuff
08:31 Alias_ It's needs to be an engineering-friendly graph
08:31 nothingmuch by being lazy it inherently leaves this very very open
08:31 Alias_ yes
08:31 Alias_ I agree
08:32 nothingmuch the resolved dep list and the dep roots must fit into ram, though
08:32 nothingmuch right?
08:32 nothingmuch and then you run the ordering in memory?
08:32 Alias_ But there's other issues, like vertex metadata extensibility, and the ability to wrap an alg-graph around other types of graph
08:32 Alias_ yes
08:32 nothingmuch ducktyping
08:32 nothingmuch $object
08:32 rootch1 does \G modifier works on m:P5 regex'es
08:33 nothingmuch @whatever $object->depends;
08:33 nothingmuch add an assignment there
08:33 Alias_ Well, if it's P6, multi-methods
08:33 nothingmuch keep a collection
08:33 nothingmuch it can do whatever it wants - ORM like on disk
08:33 nothingmuch or totally in memory
08:33 Alias_ right
08:33 nothingmuch as long as they have a map function
08:33 Alias_ But somehow aware enough
08:34 Alias_ And it's THAT that's the tricky bit
08:34 nothingmuch FYI, Alg::Dependency::Objects does exactly that for those reasons =)
08:34 nothingmuch aware enough?
08:34 Alias_ scaling the awareness
08:34 Alias_ Knowing graph scalar, edge costs etc
08:34 Alias_ err scale
08:34 nothingmuch edge costs?
08:34 nothingmuch you don't get choices in a dep graph
08:34 nothingmuch or you mean, what you want to walk first?
08:34 bernhard joined perl6
08:34 Alias_ You can't always assume the cost of an edge is free
08:35 Alias_ in the ORM case for example
08:35 nothingmuch you'll have to walk the edge anyway, even if you reach the same point
08:35 Alias_ So perhaps an alg cares
08:35 Alias_ Anyways, it's a problem space I need to sit down and deal with at some point
08:35 nothingmuch i don't see how a dep algtorithm can benefit frmo edge cost meta data
08:35 nothingmuch without control flow
08:35 nothingmuch (depends on this *OR* that)
08:36 nothingmuch but then it's still the job of the provider
08:36 Alias_ Well, imagine you have a small, cheap graph
08:36 nothingmuch $obj->depends returns a boolean expression
08:36 Alias_ You just rewalk everything
08:36 nothingmuch with left preference
08:36 nothingmuch instead of a list
08:36 Alias_ On an large expensive graph, maybe you cache
08:36 nothingmuch i don't see why 
08:36 Alias_ Where it's pointless duplication on a cheap graph
08:36 nothingmuch you have to walk it all anyway
08:36 Alias_ Imagine every edge was a SQL call
08:36 nothingmuch that's the job for the ORM
08:37 nothingmuch if ->depends map to an ORM
08:37 nothingmuch it's it's concern to have a cache plugin
08:37 nothingmuch if it maps to a generative graph
08:37 Alias_ In the dep algorithm, you want the edges a few times
08:37 Alias_ Anyways, I'll do it at some point
08:37 nothingmuch assume it's cached with a cheap graph
08:37 nothingmuch and simply add that caching on the lower level as necessary
08:37 Alias_ What if the cheap graph IS a cache
08:37 nothingmuch i think you're overengineering
08:38 Alias_ nothingmuch: If I was writing Alg:Dep again, I'd agree
08:38 Alias_ With the number of additional use cases that appeared continue to amaze me
08:38 nothingmuch nevertheless, it's still a ccross cutting concern
08:38 Alias_ And I look a Graph.pm, which is a graph sure but doesn't deal with knowability, and I want more
08:38 nothingmuch caching is not part of dependency computation
08:38 nothingmuch so layer a caching layer
08:38 nothingmuch with the same api as Graph
08:38 nothingmuch over it
08:39 nothingmuch that overrides ->find_adjacent_nodes with a caching version under the hood
08:39 Alias_ Anyways...
08:39 nothingmuch and keeps a $whatever_policy_cache in memory over the conjectural full graph, which is lazily loaded
08:40 Alias_ Bascially, that it's not just deps in the way AlgDep is
08:40 Alias_ There's a larger problem there, and there's a very novel and cool solution, and I want _that_
08:40 Alias_ I just don't see the specifics yet
08:40 nothingmuch what's the larger problem?
08:40 Alias_ graph algorithms
08:40 Alias_ in general
08:40 Alias_ on lazy/expensive graphs
08:40 nothingmuch most are np complete
08:41 Alias_ I know
08:41 Alias_ That's fine
08:41 nothingmuch i don't think there is much essence to capture
08:41 dakkar joined perl6
08:41 nothingmuch there is the algorithm
08:41 nothingmuch and there is the graph
08:41 Alias_ right
08:41 nothingmuch trhe algorithm will always want all walking to be cheap
08:41 nothingmuch the *right* cache will try to make the expensive graph as cheap as possible
08:41 nothingmuch as a middle tier
08:42 Alias_ which algorithm, just the dep one?
08:42 nothingmuch as long as there is no branching logic in the dep algorithm
08:42 nothingmuch in which case the walking is completely different
08:42 Alias_ There's other families and variants of a straight ordered or unorder dep
08:42 nothingmuch since some areas might be walked
08:42 nothingmuch instead of others
08:42 Alias_ Which is what I want
08:42 nothingmuch aha
08:42 nothingmuch i asked earlier
08:42 nothingmuch you didn't specify =)
08:42 Alias_ sorry
08:43 nothingmuch in that case, the data structure returned from the node
08:43 Alias_ Dep isn't a single thing anyway
08:43 nothingmuch is not a simple graph
08:43 Alias_ And I solved it wrong
08:43 Alias_ Anyways, I want a do-over
08:43 nothingmuch instead of returning the list of adjacent nodes
08:43 Alias_ For the problem space I didn't realise I was solving the first time
08:43 nothingmuch it returns the a logical expression
08:43 nothingmuch (theoretically the graph nodes can be of mixed types, nodes, and operators)
08:43 Alias_ We're arguing over something that doesn't exist
08:44 nothingmuch i was just getting to that:
08:44 Alias_ Let;s take this up again when I at least have an API
08:44 nothingmuch i think what you want at this point is Prolog
08:44 Alias_ heh
08:44 Alias_ probably
08:44 Alias_ But then I note I've never seen my dep algorithm in books or logic things
08:44 Alias_ And it's conveniently light and simple
08:45 Alias_ While still working
08:45 nothingmuch dep is a linear walk... there is no way to get it faster by changing the order
08:45 nothingmuch the moment control logic is introduced
08:45 nothingmuch and you get short circuiting
08:45 Alias_ I should have shut up
08:45 Alias_ :)
08:45 nothingmuch then it's no longer a dep algorithm but a program evalutor =)
08:45 Alias_ Wait till I have something... or make something and I'll point out the cases you are missing
08:46 nothingmuch i think in perl 6 ideally you would abuse the regex/rule runtime for this
08:47 Alias_ why of course!
08:47 Alias_ :)
08:47 Alias_ I dislike abuse
08:47 nothingmuch (assuming it's guts have a nice perl-ish interface it's not abuse)
08:47 Alias_ You only get to do it once
08:47 Alias_ And it tends to blow up in Perl 5
08:47 nothingmuch essentially the rule evaluator is simple pattern
08:47 nothingmuch that works like prolog
08:48 nothingmuch there have many discussions
08:48 nothingmuch we won't go into it
08:48 Alias_ indeed
08:48 nothingmuch i'm assuming perl 6 will have internals that are more programmatically accessible
08:48 nothingmuch since the compiler will be in Perl 6 it's only reasonable ;-)
08:48 nothingmuch anyway, the difference in the problem domain is that you don't know the extent of the full program you are matching
08:48 nothingmuch the full "pattern" if you will
08:48 rootch1 i see that $str.length doesnt work, is there other way to get the string length ??
08:49 nothingmuch ?eval "foo".length
08:49 evalbot_10156 is now known as evalbot_10157
08:49 evalbot_10157 Error: No such method in class Str: "&length"
08:49 nothingmuch oh right
08:49 nothingmuch .chars
08:49 nothingmuch ?eval "foo".chars
08:49 Alias_ nothingmuch: And I have some very wonderful operatores to play with
08:49 evalbot_10157 3
08:49 rootch1 thanx
08:49 Alias_ operators
08:49 nothingmuch Alias_: all you really need is NAND
08:49 nothingmuch ;-)
08:49 Alias_ But OH the abstraction layers
08:50 nothingmuch if you write an optimizer for lazily evaluated logic trees
08:50 nothingmuch then make it cool enough that it can be reused for junction optimization
08:50 Alias_ And then compile from English
08:51 nothingmuch not that I see any way to do it generically
08:51 Alias_ nothingmuch: And by the time I'm done, I've got Oracle
08:51 nothingmuch without having knowlege about the desired target
08:51 nothingmuch yes
08:51 nothingmuch oh
08:51 nothingmuch not Oracle the database
08:51 Alias_ yes
08:51 nothingmuch Oracle the theoretical machine
08:51 nothingmuch right?
08:51 Alias_ No, Oracle the database
08:51 nothingmuch oh
08:51 nothingmuch no, i don't like that =)
08:52 Alias_ Alg:Dep is 800meg and implements it's own filesystem format
08:52 nothingmuch see, that's confusing low level details where they shouldn't go
08:52 nothingmuch what you *REALLY* need is this:
08:52 nothingmuch http://en.wikipedia.org/wiki/Oracle_machine
08:52 nothingmuch as soon as you implement it Perl 6 will be the fastest language ever
08:52 Alias_ You're the one that want's to use Alg:Dep to optimize junctions
08:52 nothingmuch there's no fundamental difference
08:52 Alias_ sure
08:53 nothingmuch junctions have an optimizability in folding boolean operators early
08:53 Alias_ Except one is flexible, and in Perl, and made to be useful
08:53 nothingmuch and eliminating subtrees
08:53 Alias_ And the other one is fast
08:53 nothingmuch this is exactly the same problem you have
08:53 Alias_ Except I'm willing to pay a lot of CPU for a lot of flexibility
08:54 nothingmuch uh
08:54 nothingmuch there's no contradiction
08:54 Alias_ SHUT IT
08:54 Alias_ WE TALK AGAIN WHEN THERE'S CODE
08:54 nothingmuch suit yourself =)
08:54 nothingmuch you're choosing to ignore years of knowlege that have already been accumilated by some of the smartest brains in the industry
08:55 Alias_ That never got around to actually writing Alg:Dep
08:55 nothingmuch what you want is not alg dep, we already talked about that
08:55 Alias_ I know
08:55 Alias_ But I still want something workable, and not an ueber-generalised thing
08:56 rootch1 left perl6
08:56 Alias_ And it's my call where I define "workable" to be :)
08:56 Alias_ And now, enough
08:56 Alias_ left perl6
08:56 nothingmuch hahaha
08:57 gaal_ joined perl6
08:57 nothingmuch hola gaal_san
08:59 Alias_ joined perl6
08:59 nothingmuch so as I was saying
08:59 Alias_ And furthermore, I'm not IGNORING them, I'm absorbing their knowledge lazily
08:59 Alias_ I read fundamentals Haskell-style
08:59 Alias_ So there
08:59 Alias_ left perl6
09:01 chris2 joined perl6
09:06 root4o joined perl6
09:06 root4o "qwe,rty,uio" ~~ m:P5/^(.*?),/
09:06 root4o matches
09:07 root4o qwe,
09:07 root4o including the comma ','
09:07 cmarcelo joined perl6
09:07 root4o any way to overcome this ?!
09:07 dakkar ?eval  "qwe,rty,uio" ~~ m:P5/^(.*?),/
09:07 evalbot_10157 is now known as evalbot_10158
09:07 evalbot_10158 Match.new(   ok => bool::true,    from => 0,    to => 4,    str => "qwe,",    sub_pos =>     (Match.new(        ok => bool::true,         from => 0,         to => 3,         str => "qwe",         sub_pos => (),         sub_named => {}      ),),    sub_named => {} )
09:08 dakkar root4o: $0 contains the whole string matched by the m// operator, you might want $<1> (is it spelled this way today?)
09:08 dakkar ?eval  "qwe,rty,uio" ~~ m:P5/^(.*?),/;$<1>
09:08 evalbot_10158 \undef
09:08 dakkar ?eval  "qwe,rty,uio" ~~ m:P5/^(.*?),/;$[1]
09:09 evalbot_10158 Error:  unexpected "[" expecting "::"
09:09 dakkar ?eval  "qwe,rty,uio" ~~ m:P5/^(.*?),/;$/[1]
09:09 evalbot_10158 \undef
09:09 dakkar I'm missing something...
09:09 nothingmuch i need advice
09:09 dakkar ?eval  "qwe,rty,uio" ~~ m:P5/^(.*?),/;$/[0]
09:09 nothingmuch from an OO head
09:09 evalbot_10158 \Match.new(   ok => bool::true,    from => 0,    to => 3,    str => "qwe",    sub_pos => (),    sub_named => {} )
09:09 dakkar root4o: there you are
09:09 root4o i use it like this
09:09 root4o while (($x) = $s ~~ m:P5/^(.*?)$re/) {
09:09 root4o        push @r, $x;
09:09 root4o        $i = $x.chars;
09:09 root4o        say "$s : $x : $i";
09:09 root4o        $s = substr $s,$i;
09:09 root4o    };
09:10 nothingmuch supposing you have 'has $foo handles everything'
09:10 root4o $re is comma ;)
09:10 nothingmuch does that imply that your class is parametetrized over $foo's runtime type?
09:10 nothingmuch or does it require a class
09:10 dakkar root4o: I think that ~~m// in list context doesn't do what it used to do in Perl5... no idea if it is a spec change or an implementation bug
09:10 nothingmuch from which to steal everything
09:10 nothingmuch (ignoring potential subclass methods)
09:10 nothingmuch ?
09:10 root4o i tried w/o
09:10 root4o i.e scalar contect the same
09:11 cmarcelo left perl6
09:11 root4o captures the comma both in scalar and list context
09:11 dakkar root4o: in scalar context it must return the whole match object, no problem there (i.e. you don't need scalar context)
09:11 dakkar root4o: did you look at the output of the evalbot?
09:11 root4o i mean not ($x) but just $x
09:11 dakkar nothingmuch: I'm not sure I follow you...
09:12 dakkar root4o: do you read what I write?
09:12 root4o yes..
09:12 root4o looking
09:12 nothingmuch when you have a 'handles' clause on an attribute
09:12 nothingmuch that implies that it's a delegate
09:12 dakkar nothingmuch: ok
09:12 nothingmuch theoretically you can let it delegate everything
09:12 root4o aha... will try it now
09:13 nothingmuch i'm trhying to think what is more correct - to calculate parametrized classes for all the possible types of the attribute
09:13 nothingmuch or to take all the attributes from the lowest common ancestor of all the possible values of the attribute's value
09:14 dakkar nothingmuch: ok, you're trying to avoid run-time lookups as much as possible
09:14 nothingmuch as in 'has Dog $foo handles everything' # all Dog methods can be called on __PACKAGE__
09:14 root4o yeah using $/[0] work, but why assigning to variable doesnt work 'cause i'm getting the whole match object, is that correct .. instead the captured match
09:14 nothingmuch this is mostly a typing issue, i think
09:14 nothingmuch i am not sure how to try and bend the liskov substitution principal to include possibly parametrized types
09:14 nothingmuch intuitively, it feels as though only Dog methods should be added to __PACKAGE__
09:14 dakkar root4o: in scalar context you get the whole match, and that is correct. in list context I'm not sure what the specced behaviour is
09:15 nothingmuch not all possible Dog subclasses by means of parametrized types
09:15 xerox Is there something specific to do in order to be able to use the preprocessor in a .hs file under the pugs buildsystem?
09:15 root4o ok.. now it does what i want, 10x
09:15 nothingmuch okay, nevermind, i think i streightened it out
09:15 dakkar nothingmuch: so, what's the conclusion? (I'm curious)
09:15 audreyt xerox: which proprocessor?
09:16 xerox audreyt: cpp
09:16 audreyt xerox: normally just slap -cpp to the 0st line
09:16 audreyt 0th, even
09:16 xerox Under OPTIONS_GHC? Okay.
09:16 audreyt {-# OPTIONS_GHC -cpp -fglasgow-exts ... #-}
09:16 xerox I was just trying to fix the Foldable/FunctorM thing warnings.
09:16 audreyt ah. k
09:17 nothingmuch dakkar: only Dog
09:17 xerox How does one comeback from whatever modification has done to a file?
09:18 xerox (Under svn that is)
09:18 nothingmuch svn revert
09:18 xerox Danke.
09:20 xerox Anything like 'darcs whatsnew' ?
09:21 KingDiamond joined perl6
09:21 audreyt svn st
09:21 nothingmuch svn st
09:21 audreyt svn di -u
09:21 nothingmuch for -s
09:21 nothingmuch (darcs's -s
09:21 nothingmuch and svn di otherwise
09:21 audreyt nothingmuch here happens to be bidexterous (and prefers darcs)
09:21 nothingmuch -q for don't look for adds
09:21 xerox (-:
09:22 nothingmuch audreyt here happens to be bidexterous as well, but her preference runs on the code level, not the usage level, as she knows both systems much better than I ;-)
09:23 nothingmuch i don't think you can get whatsnew --look-for-adds with no summary in svn
09:23 nothingmuch without explicitly adding the missing files first
09:24 xerox http://traevoli.com/ has nifty ideas about ambidextrousity et all :-)
09:25 audreyt :)
09:26 nothingmuch huh?
09:27 nothingmuch weird site
09:27 xerox Yay.
09:27 * xerox <- forkIO shower; bbl
09:29 root4o left perl6
09:29 meppl guten morgen
09:29 nothingmuch js/html hackers - i plea for your assistance
09:29 nothingmuch http://dev.catalyst.perl.org/wiki/SmokeServer
09:29 dakkar audreyt: what is the specced behaviour of C< ($x)=($str ~~ m/.../) > ? should $x get the match object, or the various sub-matches?
09:31 Alias_ joined perl6
09:31 Alias_ nothingmuch: GODDAM IT YOU BASTARD NOW THE PROBLEM SPACE IS IN MY HEAD AND I HAVE TO SOLVE IT DAMMIT
09:31 Alias_ left perl6
09:31 * nothingmuch feels omnipotent
09:31 nothingmuch he really should just compile it to prolog though
09:31 nothingmuch or write a prolog system in Perl 6 with Ovid
09:33 audreyt dakkar: I believe it's unspecced.
09:33 dakkar ok. right now it gets the whole match...
09:33 audreyt raise on p6l perhaps?
09:34 audreyt ?eval my $x; ($x) = ('123' ~~ /(1)(2)(3)/); $x
09:34 evalbot_10158 is now known as evalbot_10160
09:34 evalbot_10160 *** Cannot parse PGE: (1)(2)(3) *** Error: Cannot find the parrot executable in PATH \Match.new(   ok => bool::false,    from => 0,    to => 0,    str => "",    sub_pos => (),    sub_named => {} )
09:34 audreyt ?eval my $x; ($x) = ('123' ~~ m:P5/(1)(2)(3)/); $x
09:34 evalbot_10160 \Match.new(   ok => bool::true,    from => 0,    to => 3,    str => "123",    sub_pos =>     (Match.new(        ok => bool::true,         from => 0,         to => 1,         str => "1",         sub_pos => (),         sub_named => {}      ),       Match.new(        ok => bool::true,         from => 1,         to => 2,         str => "2",         sub_pos => (),         sub_named => {}      ),       Match.new(        ok => bool::true,         from =>
09:34 audreyt ?eval my $x; ($x,) = ('123' ~~ m:P5/(1)(2)(3)/); $x
09:34 evalbot_10160 \Match.new(   ok => bool::true,    from => 0,    to => 1,    str => "1",    sub_pos => (),    sub_named => {} )
09:34 audreyt ok. I think that's just a bug at list=
09:34 audreyt for now, write ($x,)=
09:34 audreyt I'll fix soon
09:35 audreyt but I think currently it flattens into its postional captures
09:35 audreyt which is, too, unspecced
09:35 audreyt not sure what makes more sense...
09:35 dakkar like in Perl5, which is what some of us expect
09:35 audreyt right, except when you get named captures
09:35 audreyt and then it becomes muddy
09:35 audreyt I think m:P5 should retain old behaviour for sure.
09:35 dakkar argh...
09:35 audreyt not very sure about m//.
09:36 audreyt raise on p6l?
09:36 audreyt p6l can use a change-of-topic :)
09:36 dakkar ok, I'll ask
09:36 audreyt dakkar++
09:36 audreyt dinner, bbl
09:51 ayrnieu why do people complain about compilation problems on the list instead of here?
09:52 dakkar ayrnieu: personal preference? (WAG)
09:54 ayrnieu it can't possibly be that.
09:55 dakkar I wouldn't say that... some people just dislike IRC
09:57 larsen joined perl6
09:58 bwk joined perl6
09:59 EdLin joined perl6
10:01 EdLin left perl6
10:08 ayrnieu OK: he could have chosen email over IRC because he would have to view IRC through a braille reader, and his experience has shown that IRC moves faster than he tolerates; this problem may have occured to him just prior to a planned task that he doesn't feel comfortable handling as part of IRC's faster-than-email task-switching needs.
10:08 ayrnieu 'this problem', meaning the compilation error.
10:17 iblechbot joined perl6
10:44 jsiracusa joined perl6
11:20 theorb joined perl6
11:27 elmex joined perl6
11:28 coumbes_ joined perl6
11:47 Alias_ joined perl6
11:47 Alias_ (wishing I has l33t haskell skills usable in Perl 5)
11:48 Juerd Inline::Haskell?
11:48 Juerd (You'd have to write that first, though)
11:48 Alias_ And learn Haskell
11:48 ayrnieu Alias - read HOP; it will make you feel better.
11:48 Alias_ And I tried that once
11:48 Alias_ ayrnieu: Well, I read through the contents, and I know most of it already I think
11:48 Alias_ In fact, I'd basically writing HOP::Graph as we speak
11:49 Alias_ I'm
11:49 Alias_ I just wish I had Haskell instead, with all that juicy partial evaluation
11:49 Alias_ Which would mean I needed a lot less anonymous subs and closures
11:50 ayrnieu nah, you'd have just as many of those :-)
11:50 ayrnieu at least as many!
11:51 Alias_ But they'd optimize themselves, and be debuggable!
11:51 Alias_ :)
12:04 gaal_ is now known as gaal
12:07 gaal also see audrey's port of her kwiki parser to p5. not that I remember where it is now...
12:07 Alias_ Sounds scary
12:09 nothingmuch audreyt glued hugs into perl
12:09 gaal I think it demonstrates some interesting feature of haskell in a way that makes it available for Perl programmers.. but I don't remember what it was :)
12:10 Alias_ I AM VERY PRO HUGS
12:10 gaal nothingmuch is very pro glue
12:10 * nothingmuch fondles Alias_
12:10 * Alias_ blinks
12:10 nothingmuch like, in a huggy way
12:10 nothingmuch ;-d
12:11 * gaal wonders if Helium got its name because you talk funny after using it
12:11 jserv-- joined perl6
12:12 ayrnieu you talk funny after linguistically processing anything funny.
12:12 ayrnieu or at least I do.  I talk like anything I read intensely enough.  Which has its downsides :-(
12:13 gaal nm, thanks for the supermarket haskell link, it was nice
12:14 azuroth don't you know it
12:15 gaal shoulnd't we rope tm to commiting here more? :)
12:29 gaal In the pugs interactive shell, a my declaration on its own causes the previous evaluated result to be printed again.
12:29 Alias_ So, I've been here an hour, and no commits
12:30 Alias_ Is that normal? Is it just a slow day?
12:33 * xerox bangs the head on the desk
12:33 xerox The more I try the less I can stand the sigils...
12:41 xerox ?eval 1.5 ~~ 1^..^2
12:41 evalbot_10160 is now known as evalbot_10161
12:41 evalbot_10161 bool::false
12:41 xerox !
12:42 ayrnieu ?eval 1.5 ~~ any(1.0^..^2.0)
12:42 evalbot_10161 *** Language "Perl6" unknown.     at <prelude> line 69, column 13-46
12:42 ayrnieu oh, wait.
12:51 scmc joined perl6
12:54 lichtkind joined perl6
13:13 lumi pugs doesn't seem to build, make says: Build failed: 2816 at util/build_pugs.pl line 96.
13:15 lumi Doth anyone have clue?
13:20 gaal what does it say before that?
13:20 amv joined perl6
13:20 xinming lumi: update the repository
13:22 lumi Before that it's all kosher stuff, it chased the modules, and then compiles Data.ByteString, then that
13:30 azuroth eek. back to TAFE tomorrow!
13:31 gaal Types and... Feature Enhancements?
13:31 lumi Turtle and Five Elephants?
13:31 gaal lumi: then make is being unhelpful. But try what xinming suggested?
13:32 gaal Turtle and Fifteen Elephants?
13:32 lumi I'm trying. My svk broke though, so I'm fixing that firstly
13:32 gaal Technical Annoyances For Engineers
13:32 xinming lumi: If you need to download the bootstrap file...
13:33 xinming here is a link.  :-)
13:33 xinming http://perlcabal.org/~xinming//download.htm
13:34 xinming then, the `svk sync /pugs/mirror/` won't take that long..
13:34 gaal Tangential asymptotic flirty expressions
13:35 lumi xinming: Thanks, I need to get svk running again first (updated perl accidently)
13:35 xerox Too Abstract Functional Environment
13:36 lumi Trite Acronym for Everything
13:37 xerox That Aesthetic Fractalic Escher
13:38 xinming lumi: Yes, But you just need to download bootstrap file if the local repository is broken, sync won't take that much...
13:40 lumi Tiny Ants Fight Evil
13:40 xinming ??
13:41 xinming Tiny Ants Fight Evil reminds me the cartoon <<a bug's life>>
13:41 xinming :-)
13:42 xerox Through Alliance Fight Ends
13:42 lumi Three Audrey Fans Escape!
13:43 xinming why not all perl 6 fans escape? :-/
13:43 audreyt I don't think we need to escape fans
13:43 audreyt they are not metacharacters
13:44 lumi The fans I've met are characters
13:44 audreyt sure, but metacharacter?
13:45 audreyt normal characters needs no escaping...
13:45 lumi But once you've met a character...
13:46 xerox Thee Ancient Frontierswoman Explorer
13:48 lumi Two antlers, fair elk.
13:49 xerox Three Abacus Found Exceptions
13:54 masak joined perl6
14:02 lumi Abaci?
14:04 xerox Right, lumi wins.
14:04 lumi Woo, what do I get?
14:04 xerox A broken abacus.
14:05 lumi I'll stick to my sliderule
14:10 aufrank joined perl6
14:25 svnbot6 joined perl6
14:29 theorbtwo joined perl6
14:31 macroron__ joined perl6
14:36 ghenry joined perl6
14:40 wilx`` joined perl6
14:45 kattana_ joined perl6
14:45 gaal do we have syntax to refer to the container being defined? my %h = ("a" => 42, "b" => HANDWAVE(%h<a>) )
14:46 gaal with laziness it's probably not too bad if we don't, because we can put a map to transform the assignment
14:46 gaal but it's a nifty feature
14:46 gaal lets you e.g. define aliases in a dispatch table
14:47 dakkar gaal: looks like a fixed-point operator
14:48 gaal there's also a workaround if you don't mind thunktitude: a => { something }, b => { %h<a>() }
14:48 gaal dakkar: I'm certainly thinking recursive structures, but this is data, not code
14:50 gaal hmm, a macro couldtake care of this actually.
14:53 xinming audreyt: ping
14:53 audreyt xinming: pong (but I'm about to sleep)
14:54 audreyt gaal: we can refer to the container being defined, yes.
14:54 audreyt that's part of the spec.
14:54 xinming @a.=( reverse ); # @a.postfix:<=>(reverse())
14:54 audreyt my $x = $x + 1; # is actually sane
14:54 xinming for this, what does @a. mean here?
14:54 audreyt $x++
14:54 audreyt $x.++
14:54 audreyt $x.postfix:<++>
14:54 audreyt are all the same thing
14:54 audreyt so it's just a logical extension of this rule
14:54 xinming so, doesn't this mean,  it will reverse the @_ and push it into @a?
14:55 audreyt no, there is no postfix =
14:55 audreyt so I imagine it will result in an error.
14:55 Khisanth joined perl6
14:55 xinming space is "really" important in perl 6
14:56 audreyt yeah. see my new journal entry.
14:56 audreyt I'd say Perl 6 is spaced out.
14:56 xerox @foo.     .{...} = ... ; hehe
14:56 gaal audreyt: is the surface syntax for that defined? in p5, %h = (a=>42, b=>$h{a}) is not an error if %h is declared, but $h{b} is undef.
14:56 xerox I'd call that spooky-effect-at-distance (the two points.)
14:57 audreyt xerox: it's like the cat... without the radio
14:57 audreyt gaal: "my" is just a declarator
14:57 gaal if the same in p6 should yield a defined b, pugs is not there yet
14:57 lumi Maybe you need to lazy that? Or sth?
14:57 audreyt it's hoisted
14:57 xerox Yay.
14:57 audreyt gaal: so right, we need to convert "my" into expression
14:57 audreyt not statement
14:57 audreyt you can give it a try :)
14:57 * xerox shakes his fist at sigils
14:57 audreyt also, "sub" is now an expression too
14:58 audreyt $x = sub moose {... }
14:58 gaal audreyt: ACK on the hoisiting; but the problem isn't just there
14:58 audreyt is now legal
14:58 audreyt ditto
14:58 audreyt $x = my sub moose {...}
14:58 audreyt gaal: if you use it as lvalue at rhs, it's going to be the same container at the lhs
14:58 gaal sub has &?ROUTINE but %h doesn't have %?HASH
14:58 audreyt I know.
14:59 audreyt you need a "fix"
14:59 gaal like dakkar said.
14:59 gaal but there is no such thing (no?)
14:59 gaal for values
14:59 audreyt [ 1, 2, $?EXPR ]
14:59 gaal hmmm
14:59 audreyt (bad idea)
15:00 audreyt TimToady: is this legal?
15:00 audreyt say 1 + do LABEL: 2; goto LABEL
15:00 xinming audreyt: Ok, I think I understand, so, . is always used for "multi & meth",  so, @a.= will fail because, there isn't a method called "=", right? :-)
15:00 audreyt gaal: or maybe introduce yaml-esque anchors :)
15:00 audreyt xinming: right.
15:00 Khisanth xinming: is it really? someone drinking too much of the Python koolaid? :(
15:00 audreyt xinming: "postfix =" that is
15:01 audreyt Khisanth: it's not for indenting, it's for disambiguation :)
15:01 dakkar 'goto' inside a block is illegal in Perl5, AFAIR
15:01 audreyt yes, but that's not a block
15:01 xerox audreyt: don't sigils look like a kind of replacement for typing?
15:01 audreyt xerox: they are actually type annotations
15:02 xerox Mumble.  That seems right.
15:02 audreyt and "context" is just return type polymorphism, evaluated at runtime
15:02 audreyt so we need hinters to annotate the return type
15:02 audreyt you can, more generally, use infix "as"
15:02 audreyt foo() as SomeType
15:02 audreyt which is not unlike ::.
15:03 xerox So I can avoid '$' with as?
15:03 xerox my foo = 1 as bar; or something?
15:03 audreyt for variables without a known context, the "$" sigil is used
15:03 audreyt it's just so that we can introduce keywords without conflicting with variables
15:03 audreyt it is possible to write "Sigilless" macro
15:04 audreyt that just prefixes "$" in any identifier not bound to a function
15:04 audreyt I'd love to chat more, but I really need to sleep
15:04 xerox hehe, again
15:04 audreyt gotta wake up early tomorrow :)
15:04 * audreyt waves &
15:04 xerox Bye!
15:04 xinming audreyt: g'nite
15:04 dakkar g'night, audreyt
15:07 xinming In fact, prefix and postfix can be exchanged...  ;-)
15:10 xerox Thinking of sigils as type annotations makes them reasonable to me... but still syntax looks heavy with them, mumble.
15:15 svnbot6 r10165 | scw++ | Pugs::Grammar::MiniPerl6
15:15 svnbot6 r10165 | scw++ |  * grammar updated
15:15 svnbot6 r10165 | scw++ |  * now translate "return $<a> + 3" to "    return $ a + 3"
15:15 frederico joined perl6
15:16 justatheory joined perl6
15:17 shachaf joined perl6
15:21 xinming scw: so, does this mean, return it will return pure haskell instead a "layer" ?
15:22 Alias_ left perl6
15:22 lumi joined perl6
15:29 f0rth joined perl6
15:31 aufrank joined perl6
15:33 f0rth joined perl6
15:33 scw xinming: err, I'm not quite sure what do you mean
15:34 scw But what i'm translating is, from MiniPerl6 "return $<a> + 3" to a Haskell monad "return"
15:34 scw the expression "a + 3"
15:37 xinming scw: hmm, what about the example in your README?
15:37 xinming rule yadaLiteral {
15:37 xinming        $<sym> := [ <'...'> | <'???'> | <'!!!'> ]
15:37 xinming        { return App(
15:37 xinming            Var( doYada( $<sym> ) ),
15:37 xinming            Nothing,
15:37 xinming            [ Val( VStr( $<sym> ~ ' - not yet implemented') ) ]
15:37 xinming          )
15:37 xinming        }
15:38 xinming since, $<sym>  in rule are the same as the returned thing...
15:39 scw the $<sym> := ... part should become   sym <- ...
15:39 scw the $<sym> used in the production rule can then be translated to simply "sym"
15:40 xinming scw: that's what I mean, hmm, So, does this mean,  App function written in perl 5 will translate $<sym> into haskell?
15:41 xinming or, VStr function will translate $<sym> to string $<sym> . ' - not yet implemented' ?
15:42 ajs_home joined perl6
15:42 xinming hmm, or, I think I can understand what does $<sym> mean, It just a function, which will get the symbol name, and return the symbol name... :-/
15:43 scw The App, Var, doYada, Val, and VStr are all Haskell functions
15:43 scw I'm writing a tool to translate the rule yadaLiteral into a haskell function using Parsec to parse the same thing
15:44 lumi joined perl6
15:44 scw except the rule part, the construction rule part have to be translated to haskell, too
15:44 scw so, we restrict the constraction rule to a subset of perl6.  only function application can be used
15:45 scw s/constraction/production/
15:46 scw then we can extract most constructing stuff to some haskell function and use the same name in the production rule
15:46 scw the advantage is that the rule need not be changed even when perl6 is self hosting
15:46 xinming is { $text } part inside the rule rule_name { } are text? I mean $text... :-)
15:46 scw all we have to do is to re-implement those functions used in production rules in perl6, instead of haskell
15:48 scw xinming: http://dev.perl.org/perl6/doc/design/syn/S05.html and search "$0 < 256 and fail"
15:57 coumbes_ joined perl6
16:00 xinming scw: I know fail will cause the match fail,  But It can also return a string... the part which I don't understand is, you didn't quote the `Var( doYada( $<sym> ) ),`
16:05 wolverian why should he? it's code.
16:06 FurnaceBoy joined perl6
16:06 scw ya, it's applying doYada on $<sym> and take the return value as the argument of function Var
16:06 wolverian it does look like haskell.. :)
16:09 diotalevi joined perl6
16:18 xinming wolverian: I know it is haskell code, but it should return a "string", instead string, that's what I don't understand
16:20 wolverian oh. I thought it's perl6.
16:22 xinming wolverian: I think I understand a bit now... :-)   Var in rule is a perl5(6) function, it will translate it into haskell... and the last result is a string. :-)
16:27 theorbtwo joined perl6
16:45 justatheory joined perl6
16:47 larsen joined perl6
16:57 aufrank joined perl6
17:28 bernhard joined perl6
17:40 macroron__ joined perl6
18:10 ingy anyone know what port(s) gobby uses?
18:10 Ymmv joined perl6
18:13 weinig|sleep is now known as weinig
18:22 mako132_ joined perl6
18:27 KingDiamond joined perl6
18:37 macroron joined perl6
19:04 Arathorn joined perl6
19:21 ayrnieu joined perl6
19:26 justatheory joined perl6
19:27 Arathorn is anyone else getting a 'No instance for (Typeable1 Tree)' at src/Pugs/AST/Internals/Instances.hs:138:0:?
19:28 * Arathorn assumes he has something screwy in his yaml
19:39 dakkar joined perl6
19:41 dakkar is there some magic I should perform to make ghc find the fps package?
19:43 elmex joined perl6
20:01 dakkar ?eval 1
20:01 evalbot_10161 is now known as evalbot_10165
20:01 evalbot_10165 1
20:01 xinming dakkar: I think you have update first...
20:02 dakkar I have v10165, a fresh checkout
20:02 xinming it's a bugs in 10162(maybe),  as she forgot to commit... :-)
20:02 xinming dakkar: hmm, here just compile fine.
20:02 dakkar I suspected as much...
20:02 dakkar ok, rm, checkout, 2nd try ...
20:04 dakkar just a hunch... what version of GHC and Cabal are you running?
20:04 dvorak joined perl6
20:06 dakkar no luck... still can't find Data.ByteString
20:06 dakkar even if it gets compiled
20:06 dakkar and 'ghc-pkg list' shows it
20:12 dakkar I'll ask again tomorrow, with more people awake ;-)
20:15 xinming Glasgow Haskell Compiler, Version 6.4.1, for Haskell 98, compiled by GHC version 6.4.1
20:15 xinming /opt/ghc/lib/ghc-6.4.1/package.conf:
20:15 xinming    rts-1.0, base-1.0, haskell98-1.0, template-haskell-1.0, unix-1.0,
20:15 xinming    Cabal-1.0, parsec-1.0, haskell-src-1.0, network-1.0,
20:15 xinming    QuickCheck-1.0, HUnit-1.1, mtl-1.0, fgl-5.2, X11-1.1, HGL-3.1,
20:15 xinming    OpenGL-2.0, GLUT-2.0, stm-1.0, readline-1.0, (lang-1.0),
20:15 xinming    (concurrent-1.0), (posix-1.0), (util-1.0), (data-1.0), (text-1.0),
20:15 xinming    (net-1.0), (hssource-1.0)
20:15 xinming /home/xinming/.ghc/i386-linux-6.4.1/package.conf:
20:15 xinming    fps-0.6
20:16 dakkar moce or less the same here...
20:31 wilx`` joined perl6
20:43 PseudoPlacebo left perl6
20:46 dvorak joined perl6
20:55 weinig joined perl6
20:55 Ymmv joined perl6
20:58 Quell joined perl6
21:00 Ymmv joined perl6
21:10 mkhl joined perl6
21:19 rbysamppi joined perl6
21:23 weinig is now known as weinig|away
21:23 chris2 joined perl6
21:25 szbalint_ joined perl6
21:29 svnbot6 r10166 | rbysamppi++ | Added 'rbysamppi' to AUTHORS
21:33 hugues23 joined perl6
21:44 amnesiac joined perl6
21:48 Kattana joined perl6
21:50 svnbot6 r10167 | audreyt++ | * "Long dot" is now:
21:50 svnbot6 r10167 | audreyt++ |     $xyxxy\.moose;
21:50 svnbot6 r10167 | audreyt++ |     $xyxx\ .moose;
21:50 svnbot6 r10167 | audreyt++ |     $xyx\  .moose;
21:50 svnbot6 r10167 | audreyt++ |     $xy\   .moose;
21:50 svnbot6 r10167 | audreyt++ |     $x\    .moose;
21:50 svnbot6 r10167 | audreyt++ |   Retire the $x.:moose form.
21:53 szbalint_ is now known as szbalint
21:54 svnbot6 r10168 | audreyt++ | * fix long_dot.t
21:57 rbysamppi Are multiple invocants in the indirect object syntax still allowed? For instance:
21:57 rbysamppi multi foo (Int $x, Int $y: Int $z) { ... }
21:57 rbysamppi ; foo 1, 2: 3;
21:59 audreyt no; you can only have one "invocant" in the calling syntax
21:59 audreyt in the parameter there may be multiple tie-breaking parameters
21:59 audreyt but that has nothing to do with call-side invocant
21:59 audreyt i.e., a call-side invocant indicates a method call (which may fallback to subroutine call)
21:59 audreyt the lack of invocant means a straight subroutine call (and never a method call)
22:00 audreyt so multi-invocant doesn't quite make sense from the call-side
22:00 rbysamppi I see.
22:00 rbysamppi I'm still wrapping my brain around "calls and dispatch are orthogonal".
22:01 audreyt yeah. multi/single vs method/sub
22:01 audreyt are very much orthogonal
22:02 Arathorn how does one install fps-any such that ./Setup can see it, and thence build pugs?
22:03 * Arathorn assumes he needs it in the ghc include path somehow, but significantly lacks haskell-fu :(
22:06 audreyt Arathorn: running "perl Makefile.PL" should do it
22:07 audreyt at least that's the intent
22:07 Arathorn hm, it didn't - but running ./Setup.hs manually in third-party/fps looks promising
22:07 audreyt mmm
22:07 audreyt are you on ghc 6.4.2?
22:08 * Arathorn is dubiously using the ghc-cvs 20050331 snapshot in debian sarge :/
22:08 audreyt ahh. that explains
22:08 Arathorn which in practice has worked okay in the past, but may make my build env rather unrepresentative...
22:09 Arathorn oops - apologies for red herringness, then.
22:09 audreyt run
22:09 audreyt ghc-pkg latest Cabal
22:09 audreyt and tell me the version
22:10 Arathorn Cabal-1.0, says ghc-pkg list
22:10 Arathorn ghc-pkg latest
22:10 Arathorn doesn't seem to be implemented in this version
22:10 audreyt ok
22:10 audreyt how about
22:10 audreyt ghc-pkg list Cabal
22:11 Arathorn nope - list takes no args
22:11 audreyt ok
22:11 * Arathorn will get building a real GHC on this box
22:12 Arathorn ghc-pkg describe Cabal -> 'version: 1.0', fwiw
22:12 Arathorn and manually running its Setup.hs configure/build/install seems to have worked sufficiently that pugs builds, at any rate
22:13 audreyt nono
22:13 audreyt I've just fixed it for you :)
22:13 audreyt can you try uninstall?
22:13 audreyt the fps that is
22:13 Arathorn oh - okay :)
22:13 * Arathorn kills the build, uninstalls the Setup.hs, and tries rerunning pugs' configure
22:14 audreyt you need to sync up to r10169
22:14 svnbot6 r10169 | audreyt++ | * Fix for Cabal-1.0, reported by Arathorn++
22:15 Arathorn hrm, i wonder whether it silently failed because i was trying to build pugs without permissions to create /usr/local/lib/fps-0.6
22:15 * Arathorn svn ups
22:15 audreyt no, it failed because your ghc reported >6.4.1 but does not come with a new  Cabal
22:15 audreyt so I'm now testing cabal version explicitly
22:16 Arathorn right
22:18 Arathorn yup, that seems to be working now :)
22:18 Arathorn woo - thanks
22:18 audreyt yay :)
22:20 szbalint :)
22:20 * audreyt goes back taking a nap... it's still 6:20am here
22:21 audreyt TimToady++ # escaping the long dot problem
22:21 mako132_ joined perl6
22:24 szbalint oh gosh
22:25 szbalint you stayed up again
22:25 szbalint :P
22:25 rbysamppi Does "my" with multiple variables still have to have parentheses? my $a, $b, $c = 1, 2, 3
22:28 azuroth hmm, does = without my?
22:29 rbysamppi I dunno. Ignore the =, then. my $a, $, $c # legal?
22:29 rbysamppi Oops, my $a, $b, $c
22:31 azuroth hmm, I can't find any supporting code examples
22:32 rbysamppi Eh. my takes a signature now, right?
22:32 audreyt rbysamppi: yes, it still does need multiple parens
22:32 rbysamppi Okay, then. Thanks.
22:32 audreyt I mean, parens around multiple args
22:32 audreyt it takes either a one-arg sig
22:32 audreyt or a parens with full Sig
22:32 azuroth "my now take a Signature as their argument. The parentheses around the signature may be omitted for a simple declaration that declares a single variable, along with its associated type and traits. Parentheses must always be used when declaring multiple parameters"
22:33 azuroth oh, too late
22:39 azuroth off to the turtle and five elephants, bye!
22:44 frederico joined perl6
22:47 clkao aufrank: no i haven't, fantastic job. i was to but got lazy today and went out for the day having decent food :)
22:49 aufrank clkao: all I've done so far is read a syn and write a couple of tests
22:49 aufrank I'll race you to the rules ;)
22:49 * aufrank has a big project starting tomorrow
22:49 aufrank lots of prep work, been in the lab all day
22:51 clkao oh well, but let's keep in touch so there's no duplication
22:51 aufrank yeah, good plan
22:52 aufrank sorry about pinging you and then disappearing the other day
22:52 aufrank advisor called me away from my desk
22:53 clkao that's fine, i probably wasn't abvout anyway
23:28 SamB joined perl6
23:33 oylenshpeegul joined perl6
23:39 Arathorn anyone around who knows any Judy?
23:39 * Arathorn is wondering if there's any way to iterate over the keys of a JudyHS..
23:39 Arathorn s/keys/Indexes/
23:44 audreyt hm, seems only JudySL offers that capability
23:44 audreyt (and JudyL)
23:44 audreyt it's probably possible to have a JudyHS + Judy1
23:45 audreyt that slows insert/delete a bit but makes iterate possible and fetch remains fast
23:45 audreyt i.e. use a Judy1 to hold the (iterable) key set
23:45 audreyt this may still be better than JudySL, performance-wise
23:45 audreyt and also allows null bytes in keys
23:45 * Arathorn nods.
23:46 audreyt want to prototype something like that up? :)
23:46 audreyt (I wonder if you can hack Tie::Judy to use that instead of JudySL, and bench)
23:47 * Arathorn may give it a go - will mention if i get anywhere :)
23:47 audreyt (the Judy.xs binding is minimal and should be straightforward to hack with)
23:47 Arathorn thanks for tuits...
23:47 audreyt yay
23:47 audreyt Arathorn++
23:47 audreyt np :)
23:47 audreyt &
23:51 Odin-LAP joined perl6
23:55 Arathorn i guess it ends up being a memory/performance balance
23:56 Arathorn due to the redundant-ish Judy1 key index
23:56 * Arathorn plays

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo