Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2006-08-07

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:05 vel joined perl6
00:08 bsb joined perl6
00:17 weinig joined perl6
00:25 hikozaemon joined perl6
00:31 dduncan fyi, I noticed yesterday that a bunch of Pugs documentation and tests (and impl) seemed to be out of date compared to the synopsis regarding comparison operators and the like, such as === vs eqv, so I will now proceed to update the first 2 as I can
00:35 svnbot6 r11956 | fglock++ | pX/Pugs-Compiler-Rule - added Parsec.pm, 11-parsec-t
00:36 weinig joined perl6
00:46 toku_away is now known as tokuhirom
00:46 svnbot6 r11957 | fglock++ | pX/Pugs-Compiler-Rule - merged Pugs::Runtime::Common
00:52 dolmans joined perl6
00:59 gaal joined perl6
01:11 svnbot6 r11958 | fglock++ | pX/Pugs-Compiler-Rule - merged Makefile.PL
01:15 mjk joined perl6
01:42 bsb joined perl6
01:45 meppl gute nacht
01:54 tup joined perl6
02:04 xdg joined perl6
02:07 svnbot6 r11959 | Darren_Duncan++ | docs/Perl6/Overview/ : updated Data.pod and Operator.pod to bring them up to date in some respects, make fixes, etc ... please review
02:25 aufrank joined perl6
02:26 Schmooster joined perl6
02:27 audreyt the fact that ruby allows "x".chop! is very disturbing to me.
02:28 wolverian and somewhere a small star is quickly estinguished
02:29 wolverian s,es,ex,
02:29 audreyt :D
02:29 audreyt wolverian++
02:32 wolverian I'm actually not sure if that's weird, if you think of "" as a constructor.
02:33 audreyt a constructor for mutable arrays?
02:34 wolverian right
02:34 audreyt but a string is very far from a mutable array :)
02:34 wolverian a mutable string then
02:34 * audreyt then remembers that ruby still doesn't have a coherent unicode view for strings
02:34 audreyt *nod*
02:35 wolverian it's probably a bad thing to allow, as it's probably always a user error, but the planes do align in my head when thinking aobut it
02:35 wolverian and my fingers aren't working this early
02:36 audreyt > strings = %w[foo bar baz]
02:36 lambdabot Parse error
02:36 audreyt irb> strings = %w[foo bar baz]
02:36 audreyt irb> strings.freeze
02:36 audreyt irb> strings[0] << 'oo' # still works
02:36 audreyt I guess that's why there needs to be a symbol type where .chop! is not allowed
02:37 audreyt but it still seems strange to confuse strings with buffers
02:37 christopher joined perl6
02:38 wolverian hm, .freeze documentation: "There is no way to unfreeze an object." Array#frozen: "Return true if this array is frozen (or temporarily frozen while being sorted)."
02:38 * wolverian throws a tantrum
02:38 audreyt lies! lies!
02:38 audreyt "There is no way for _you_ to unfreeze an object"
02:38 wolverian ah.
02:41 * wolverian greps ruby source for 'melt'
02:41 audreyt its UNSET FL_FREEZE
02:41 wolverian I wish .frozen was called .cool
02:41 * audreyt has been deep in YARV internals for a while now :)
02:41 wolverian it fits ruby so much better
02:41 wolverian ah, thanks
02:42 audreyt sub f ($x) { variable($x).type.say };    f(3); f($_=3);
02:42 audreyt I wonder if both should say "Int", or if both should say "Scalar", or if only the latter should say "Scalar", or something.
02:43 wolverian is $_ special here, or could it be my $y in the assignment?
02:43 audreyt s/type/meta.name/
02:43 audreyt could be my$y
02:43 audreyt this question is whether
02:43 audreyt "$x is readonly"
02:43 audreyt actually makes a Pure from a Mut
02:44 audreyt ie. pass in as if it's a value
02:44 audreyt or if it just slaps SvREADONLY (aka FL_FREEZE)
02:44 wolverian Val[Int]
02:44 audreyt on a container and send it in
02:44 wolverian I'm not wizard enough for this :)
02:44 dduncan wouldn't "x".chop return a new string, and so the original is not mutating?
02:45 wolverian dduncan, but .chop! is mutating
02:45 audreyt i.e. if it's ByVal or ByRefButLocked
02:46 audreyt I think I like ByVal better (i.e. there's no Scalar involved in the body of &f in either case)
02:46 audreyt that also means if $y is tied
02:46 audreyt f($y) will FETCH and pass in that
02:46 audreyt instead of calling FETCH whenever it's demanded in body of &f
02:46 audreyt which methinks is more consistent...
02:46 dduncan now, I'm still in the progress of updating some docs and tests, but it would be helpful to me if things like !=== and eqv and !eqv would parse ... as well as "sub foo of bar ..."
02:47 dduncan they didn't yesterday
02:47 wolverian yeah, byval seems purer (cough)
02:47 audreyt I'm very biased *cough*
02:48 obra morning, audreyt
02:48 dduncan and also, maybe its just the examples not showing the generalities, but I don't see any practical difference between "sub foo of bar (...) {...}" and "sub foo (...) returns bar {...}"
02:48 wolverian I'm beginning to be too
02:49 dduncan aka, they just look like alternate syntax for the same thing
02:49 dduncan I would like to use the former but it doesn't parse yet ... even if they have different meanings, I would appreciate an interim implementation where "of bar" parses into the same thing as "returns bar"
02:50 dduncan biab
02:55 audreyt obra: hi
03:04 audreyt TimToady: !ne is fine right?
03:05 wolverian huh, operator negations? that's new.
03:06 amnesiac joined perl6
03:08 audreyt yeah. !~ is now !~~
03:09 audreyt all infix chainassoc is now !able
03:09 wolverian nice
03:10 dduncan I'm inclined that !ne should fail the same as !!eq does
03:10 audreyt why?
03:10 audreyt is eq "better" than ne?
03:10 audreyt is lt "better" than ge? :)
03:11 dduncan as if that old shortcut was pre-converted from ne to !eq before the other rules were evaluated
03:11 dduncan on the other hand ...
03:11 dduncan we could allow !ne for syntax consistency, but it would just look weird if it was used
03:11 dduncan simpler to implement
03:11 dduncan !ne would become eq
03:12 audreyt syntax consistency I think is good
03:12 dduncan but people are already allowed to say "not not cond" anyway
03:12 dduncan s/but/and/
03:12 audreyt because if user defines "like" and "unlike"
03:13 audreyt as infix chain comparison ops
03:13 audreyt it's hard to disallow !unlike
03:13 audreyt without going thru very weird contortions
03:13 audreyt fully implemented, btw.
03:14 audreyt committing
03:18 audreyt r11960
03:20 dduncan making that rev now ...
03:20 svnbot6 r11960 | audreyt++ | * Implement "chain infix autonegation" rule:
03:20 svnbot6 r11960 | audreyt++ |     1 !== 2
03:20 svnbot6 r11960 | audreyt++ |     1 !~~ 2
03:20 svnbot6 r11960 | audreyt++ |     1 !eqv 2
03:20 svnbot6 r11960 | audreyt++ |   all works now. "eqv" is new too.
03:23 dduncan audreyt, thank you for that
03:24 dduncan (still have to test ...)
03:24 audreyt thank you for prodding :)
03:24 audreyt yeah, tests would be sweet
03:24 dduncan when I say "test" in this case, I uncomment the Relation.pm lines that use some of those and check that they compile this time
03:25 dduncan on a related note, could you do that seemingly quick "sub|method foo of bar" as well?
03:26 dduncan even if the spec semantics are different, having it just parse and alias to "returns bar" for now will meet my short term needs
03:26 dduncan s/needs/wants/
03:27 dduncan make done ...
03:28 audreyt coding
03:34 audreyt done
03:35 svnbot6 r11961 | audreyt++ | * Implement "sub x of Int { ... }" as promte by dduncan.
03:37 dduncan thank you ... making that
03:37 dduncan I also have a question ... given the rules of subs vs methods, ...
03:38 dduncan for a subroutine that implements === for my own object ...
03:39 dduncan I have said: multi sub infix:<===> of Bool (Foo $x, Foo $y) { ...
03:39 dduncan now if I want to do that as a method instead ...
03:39 dduncan and change 'sub' to 'method', and remove the first parameter
03:39 dduncan can I still invoke a method using infix notation, or do I call it some other way?
03:40 dduncan eg, can I say $foo === $bar and have it call my method then?
03:41 dduncan will try ...
03:41 [particle] joined perl6
03:42 audreyt you probably can't
03:42 audreyt unless there's a multi infix:<===> () in place
03:42 audreyt that can redispatch with a method call
03:43 audreyt otherwise it's a sub call only and never a method call
03:43 justatheory joined perl6
03:44 audreyt hm, there's a Mono counterpart to ActivePerl.NET
03:44 audreyt http://razor.occams.info/code/perlsharp/
03:44 lambdabot Title: PerlSharp
03:48 dduncan okay, so everything I wanted to write yesterday now actually compiles
03:48 dduncan but I get a warning: You probably don't want to export an operator name; instead  define a new variant on the new operator (eg. multi sub *infix:<+>): "&infix:==="
03:48 audreyt that's... quite bogus
03:48 audreyt it's luqui's warning
03:48 dduncan this is in regards to: multi sub infix:<===> of Bool
03:48 dduncan        (Set::Relation::H $lhs, Set::Relation::H $rhs) is export {
03:48 dduncan    return $lhs.is_equal( $rhs );
03:48 dduncan }
03:48 audreyt that's before export can handle multis
03:49 dduncan I was looking to see if I can reliably say $myobj1 === $myobj2 now, or if only $myobj1.is_equal( $myobj2 ) can work for now
03:50 audreyt let me look. a sec?
03:50 dduncan yes
03:50 dduncan no pressure
03:56 svnbot6 r11962 | Darren_Duncan++ | ext/Set-Relation/ : updated Set::Relation::H.is_equal() to use the less verbose \!=:= and \!eqv, which now parse thanks to r11960 ; updated all routines to 'sub|method foo of bar' from 'sub|method foo returns bar', thanks to r11961 ; audreyt++
03:58 dduncan now for me to test its execution ...
04:11 jikanter joined perl6
04:21 agentzh joined perl6
04:22 * agentzh is preparing the patch for S06
04:36 weinig is now known as weinig|sleep
04:44 svnbot6 r11963 | audreyt++ | * infix "leg" operator -- what "cmp" was.
04:45 audreyt what would "$*ERR eqv $*OUT" mean, I wonder.
04:45 audreyt i.e. does it make sense to compare two external objects for equality
04:49 dduncan question ... what is the syntax for iterating the values of a Junction? ...
04:49 dduncan eg, I want to designate in a for loop that there is no coupling between iterations
04:50 dduncan I tried "for all(@ary) ->" but that didn't work, and saying "for =all(@ary) ->" didn't either
04:50 audreyt for all(@ary).values
04:50 dduncan thank you
04:50 audreyt np :)
05:07 agentzh S06 explains the difference between the "of" type return values and the "inner" type over and over again, which is rather verbose and annoying IMHO. :(
05:08 agentzh on the other hand, i think the Tree Unpacking section in S06 deserves more explaination. :=)
05:10 * agentzh thinks S06 nearly killed him in the past few days.
05:10 audreyt any java people around?
05:10 audreyt I wonder how .equals works with not-in-memory objects
05:10 audreyt like handles, processes, etc
05:12 * audreyt further ponders perl6's lback of private methods and how that may be a win overall
05:12 audreyt s/lback/lack/
05:12 gaal good morning
05:13 audreyt hey!
05:13 gaal hello :) how many equality tests do we have now? == eq === eqv
05:13 gaal anythign else? ISTR someone saying lisp had five?
05:14 audreyt == and eq are built upon ===
05:14 * gaal wants a summary of these. which one of them is $^a.valid == $^b.valid ?
05:15 agentzh gaal: === is
05:15 gaal agentzh: thanks
05:15 agentzh np :)
05:15 gaal so how are == and eq built on it, and what's left for eqv?
05:16 agentzh gaal, autreyt: what do you think of the idea of having "is(foo, bar, :todo<6.28.0>)" in pugs test suit?
05:17 agentzh by doing this, this test will expire automatically once we are at 6.28.0
05:17 audreyt just 6.28 would do
05:17 gaal nah, other implementations use out tests but not our numbering system
05:17 audreyt but then that is pugs specific
05:17 agentzh audreyt: nod
05:17 audreyt :pugs<6.28>
05:17 audreyt :)
05:18 agentzh nice!
05:18 dduncan this is a minor nit, but upon launching pugs at the command line, I get what looks like 2 versions of the same message:
05:18 dduncan Loading Prelude... Reloading Prelude from source...done.
05:18 gaal :todo<:pugs<6.28>>
05:18 agentzh :pugs_todo<6.28>
05:18 dduncan is there another option that can display instead of the second instance?
05:18 kane-xs joined perl6
05:18 audreyt :todo(:pugs<6.28>)
05:18 audreyt dduncan: rm blib6/lib/Prelude.yml
05:18 gaal todo => pugs => 6.28
05:19 audreyt and "make" again
05:19 audreyt that typically means your .yml is somehow broken
05:19 agentzh audreyt: but i think :todo<6.2.13> will still be important if we are todoing tests before the release.
05:19 dduncan either way, it loaded almost in an instant
05:19 audreyt agentzh: I agree but it shouldn't be pugs specific...
05:20 gaal audreyt: read 1/2 the open types paper last night, very nice!
05:20 audreyt maybe just change :todo<feature> to :pugs<6.28>
05:20 agentzh audreyt: okay
05:20 agentzh i will add that to Test.pm later
05:20 agentzh and also the test suit
05:20 audreyt danke
05:21 audreyt gaal: the class-based one?
05:21 dduncan that file didn't exist, and running pugs again produced just the normal message
05:21 dduncan maybe it is automatically removed now?
05:21 audreyt dduncan: "make" should rebuild that file
05:21 xinming joined perl6
05:21 audreyt weird
05:21 audreyt unless I somehow broke prelude generation
05:22 audreyt can someone confirm? it works here (rm blib6/lib/Prelude.pm and "make")
05:23 gaal audreyt: yes, ralf
05:23 dduncan I have a Prelude.pm.yml, but no Prelude.pm
05:24 gaal you may need to rm pugs too
05:24 dduncan and Pugs still seems to work normally regardless
05:24 vsoni joined perl6
05:24 dduncan that extra message didn't happen again
05:24 gaal ah, maybe you did make install sometime and it's being loaded from @INC?
05:24 gaal plus you have a fast computer :)
05:25 gaal dduncan: could you strace and see where you're loading the prelude from?
05:25 dduncan my computer is slow compared to many of yours ... about 4 years old and takes 2 hours to run the pugs smoke
05:25 dduncan maybe the yml prelude is just fast
05:28 dduncan I have never installed pugs on my system afaik, and I don't think I have strace anyway
05:28 dduncan probably a transient ... nothing to worry about now
05:28 vsoni left perl6
05:29 gaal huh weird, I'm running make and in building pugs-fps everything is being chansed twice
05:29 gaal *chased
05:29 audreyt er, yes, I build profiling now
05:29 dduncan I have also never built Pugs in any way but the default way
05:29 gaal ah, good
05:30 * agentzh thinks that with :pugs<x.x.x>, there will be no TODO tests for v6.pm and other non-pugs implementations then (unless they define their own TODO named options)
05:31 agentzh it's obviously a good thing
05:31 dduncan if I understand you right, that would seem to work in a system where my %FEATURES suggestion isn't implemented
05:31 agentzh for both pugs and v6.pm
05:32 dduncan eg, there are no todos except those tied to specific impls by those tags
05:32 agentzh dduncan: that will be even trickier.
05:32 dduncan that is, your tags seem to be a good solution for short term
05:33 gaal oh, audreyt, I forgot to say ++ on the micro-make in build_pugs :)
05:33 agentzh and your solution is good for long term
05:33 dduncan I wouldn't say so with the tags for long term, since ideally the test suite shouldn't know any identifying details of any implementations
05:33 svnbot6 r11964 | audreyt++ | * --enable-library-profiling doesn't work on cabal 1.0...
05:34 agentzh dduncan: i prefer the easiest way of doing things. :)
05:34 gaal anyway, regenning of Prelude.pm.yml worksforme
05:35 dduncan on a different matter, right now I'm troubleshooting why a for-loop seems to be only iterating once rather than twice ... that is, debug messages only print out once
05:35 agentzh dduncan: defining proper feature sets is a lot of work
05:35 dduncan sure, and it may be easier to do with a framework written in a language, like mine, rather than for a whole language
05:36 agentzh aye
05:36 dduncan eg, at the very least, I would expect something like DBI to include a features() driver-handle function that lets you query what database/api features a particular DBI driver supports
05:36 dduncan or that would also be a connection-handle function
05:36 dduncan an order of magnitude simpler, but same principle
05:37 agentzh yes
05:38 * agentzh goes back to creating patches for S06
05:41 kanru joined perl6
05:44 lumi audreyt: Java's .equals concept is defined by the individual classes
05:48 audreyt lumi: right, I wonder what does external-entity objects define
05:48 gaal lumi: does java take care of ensuring Elk a and Moose b are always unequal or does the equals method need to test instanceof manually?
05:49 lumi gaal: It takes care of nuffin. It says ".equals should be symmetric", but that's totally your job
05:49 agentzh pugs still installs pugs.exe.bat on Win32. :(
05:49 gaal oh, so not only is it poor mmd, it's also a lot of work :(
05:50 gaal gotta go... &
06:02 agentzh ?eval my $pair = :when<now>; (%$pair).say
06:03 evalbot_11936 is now known as evalbot_11964
06:03 evalbot_11964 OUTPUT[] Error: Cannot cast into Pair: VRef <Pair>
06:03 agentzh is it a pugs bug?
06:03 agentzh if no, then it's a synopsis error. :)
06:04 audreyt bug :)
06:04 agentzh whose bug?
06:05 agentzh i'm not sure $pair should be a Hash object or a Pair object here.
06:06 audreyt %$pair is correct
06:06 agentzh audreyt: okay
06:06 agentzh so a Pair will converts to a Hash automatically?
06:06 agentzh *convert
06:07 gaal a pair is a hash already, of one elem. (isn't it?)
06:07 agentzh gaal: (!)
06:07 marmic joined perl6
06:07 agentzh i thought they're two different kinds of objects
06:08 gaal they are, but i think the synopses mention that a pair can be viewed that way.
06:08 agentzh gaal: oh?
06:08 agentzh gaal: S0?
06:09 gaal L<S06/Immutable Types>: "Seq of two elements that serves as an one-element Mapping"
06:09 svnbot6 r11965 | audreyt++ | * Pugs.Val: More interface work
06:09 agentzh gaal: thanks
06:10 agentzh looking now
06:10 gaal you'll note that it's an immutable type, so it's indeed on a different level of thinginess than Hash is
06:10 * gaal goes now for real &
06:11 agentzh gaal: thx
06:14 dduncan ?eval [1,2]
06:14 agentzh i'm currently introducing a new kind of magic L<..> syntax to pugs test suit: L<S06/Immutable types/Pair "a one-element mapping">.
06:14 evalbot_11964 is now known as evalbot_11965
06:14 evalbot_11965 [1, 2]
06:14 dduncan ?eval (1,2)
06:14 evalbot_11965 (1, 2)
06:15 dduncan oh right ...
06:15 dduncan ?eval [1,2].ref
06:15 evalbot_11965 ::Array
06:15 dduncan ?eval (1,2).ref
06:15 evalbot_11965 ::Array
06:15 agentzh that is, using keywords in a POD paragraph instead of perl regex: L<S06/Immutable types /.../>
06:15 dduncan that one should be a Seq
06:15 dduncan ?eval [1,2] === [1,2]
06:15 evalbot_11965 Bool::True
06:16 dduncan should be false
06:16 dduncan the current impl seems to alias === to eqv and treat both of the above as arrays
06:16 audreyt yes. I'm working on that :)
06:16 agentzh add a test?
06:16 dduncan probably an early shortcut
06:16 audreyt (in Pugs.val)
06:17 dduncan first things first ... see if someone already wrote that test ...
06:17 dduncan I will look now ...
06:17 agentzh yeah
06:18 agentzh ?eval [1,2].ref.say
06:18 evalbot_11965 OUTPUT[Array ] Bool::True
06:19 agentzh ?eval (:when<now>).ref.say
06:20 evalbot_11965 OUTPUT[Pair ] Bool::True
06:20 agentzh ?eval (:when<now> :who<audrey>).ref.say
06:20 evalbot_11965 Error:  unexpected ":" expecting comment, operator or ")"
06:20 agentzh ?eval (:when<now>, :who<audrey>).ref.say
06:20 evalbot_11965 OUTPUT[Array ] Bool::True
06:22 audreyt agentzh: fixed
06:22 svnbot6 r11966 | audreyt++ | * allow single-pair hash and pair to be used interchangeably. agentzh++
06:22 mindbob joined perl6
06:23 agentzh audreyt: thx. i'm adding a test for that
06:23 audreyt yay
06:25 * agentzh is glad to see audreyt is in the same time-zone as his now.
06:30 * audreyt too
06:31 dolmans `say $_ for 1,2,3;' worked as expect but `say for 1,2,3;' did not, is this normal or not?
06:31 svnbot6 r11967 | Darren_Duncan++ | ext/Set-Relation/ : added new test script t/20_Heading.t with 12 line items ; updated Relation.pm so it executes correctly (this is the first time any part of Relation.pm has executed)
06:32 TreyHarris audreyt: the powers-that-be at $job supposedly are ready to approve my open-source-contribution application, so hopefully i'll be able to start actually using that commit bit soon :-)
06:32 dolmans ?eval say $_ for 1,2;
06:32 evalbot_11965 is now known as evalbot_11966
06:32 evalbot_11966 OUTPUT[1 2 ] undef
06:32 dolmans ?eval say for 1,2;
06:32 evalbot_11966 OUTPUT[  ] undef
06:33 dduncan of the 12 added tests, 4 fail ... it is possible that they will just work when the pending Pugs update(s) regarding types and equality tests have been done, but I'll revisit then
06:33 TimToady ?eval .say for 1,2;
06:34 evalbot_11966 is now known as evalbot_11967
06:34 evalbot_11967 OUTPUT[1 2 ] undef
06:34 dduncan ?eval {1=>2,3=>4} eqv {1=>2,3=>4}
06:34 gaal agentzh: I believe that magic syntax exists already.
06:34 evalbot_11967 Bool::False
06:34 dduncan when that returns true, the 4 tests will probably work
06:34 gaal nothingmuch and theorbtwo are responsible.
06:35 agentzh gaal: the existing L<...> uses regex
06:35 gaal ...and?
06:35 agentzh gaal: and i think we should switch to keywords instead
06:35 agentzh for example, L<S05/blah blah/key "key word" "another one">
06:36 agentzh by doing this, we can make the links more reliable and more explainatory
06:36 gaal and what does it mean? \b\Qword\E\b ?
06:36 gaal I mean, waht does having several keyords mean there?
06:36 agentzh it means that all the keywords given should be appear in the same paragraph
06:37 gaal and the locator is to where? the paragraph start?
06:37 agentzh the keywords identify a paragraph in POD
06:37 agentzh gaal: the paragraph itslef
06:37 agentzh *itself
06:37 gaal the current way is a kludge, but at least it allows arbitrary locators inside a paragrapgh
06:37 gaal see eg the test-to-spec thingie
06:38 gaal it puts a footnote inside a sentence.
06:38 agentzh gaal: we can also locate at the level of sentences if needed
06:38 agentzh i think the idea is exactly the same, but different syntax and different matching approach
06:38 gaal of course there's fragility when it comes to wrapping, you need to use the same source
06:39 agentzh yes, wrapping should be handled properly
06:39 gaal well, L<Snn/Para/key1 key2 key3> -- anchors at the first occurence of key1?
06:40 agentzh gaal: currently i'm thinking in terms of paragraphs instead of sentences right now.
06:41 agentzh i'm thinking about something like expandable "labels" in HTML instead of "T" hyperlinks.
06:42 agentzh err, following the current "T" mechanism, i think anchors should be put at the end of the sentence with "key1", "key2", and "key3" in it.
06:43 gaal brb
06:43 agentzh that's a natural way from my point of view: read this synopsis sentence, and then look at some test cases...
06:44 iblechbot joined perl6
06:54 gaal in lit classes for humans the locator is usually "the paragraph starting with..."
06:54 gaal sorry, must go again :(
06:55 agentzh joined perl6
06:56 agentzh ?eval foo(*%opt, *@list) { %opts.say; } foo(:a<3>,'b','c',:d<2>)
06:56 evalbot_11967 Error:  unexpected "{" expecting comment, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input
06:56 agentzh ?eval sub foo(*%opt, *@list) { %opt.say; } foo(:a<3>,'b','c',:d<2>)
06:56 evalbot_11967 OUTPUT[a3d2 ] Bool::True
06:57 agentzh TimToady: i think this behavior is not defined in S06.
06:57 dolmans how can write test case to validate the block's output? - `say for 1,2;', it is possible capturing output of a code snippet?
06:57 agentzh (IIRC)
06:57 agentzh dolmans: redirect $*OUT?
06:58 agentzh i've been pondering that as well
06:59 agentzh ?eval my $val; $*OUT := $val; say "Hello, wolrd!";
06:59 evalbot_11967 OUTPUT[Hello, wolrd! ] Bool::True
06:59 dolmans cool, try that
06:59 agentzh dolmans: not sure if it works in pugs
07:00 agentzh it seems not.
07:01 dolmans it a pity, not worked.
07:01 dolmans *it's
07:02 gaal say in evalbot is always hardcoded to "real" stdout
07:03 dolmans also in pugs.
07:03 gaal that said, I doubt scalar-does-IO is implemented in pugs
07:03 dolmans see
07:05 dolmans gaal: have another solution to capture outputs currently?
07:07 gaal only via file, for now :(
07:08 dolmans oh, see. patch expecting.
07:12 agentzh joined perl6
07:12 agentzh ?eval my $pair = :when<now>; (%$pair).ref.say
07:12 evalbot_11967 OUTPUT[Pair ] Bool::True
07:14 agentzh audreyt, gaal: is it correct? shouldn't %$pair be a Hash now?
07:20 dolmans typecasting dosn't change an object's nature?
07:22 froh-doh joined perl6
07:25 agentzh dolmans: hmm, i believe %$pair.ref eq 'Hash.
07:26 agentzh an English-related question: "a C<.assuming> method" or "an C<.assuming> method"?
07:26 agentzh i'm not sure whether "." should pronounce here.
07:27 agentzh Synopses give inconsistent answers.
07:27 TreyHarris i think "a".  i'd pronounce it "a dot-asuming"
07:27 agentzh TreyHarris: thx. will add that to my S06 patch.
07:29 buetow joined perl6
07:30 TreyHarris agentzh: did you already catch two instances of "positonal", and "Other sigils binds only"
07:31 TreyHarris unfortunately, until $job's lawyers get their act together, i can't submit diffs :-(
07:31 TreyHarris so i've been accumulating them :-)
07:31 agentzh TreyHarris: looking
07:34 agentzh TreyHarris: i've found the latter. thank you for pointing it out. i apparently missed that one.
07:35 agentzh TreyHarris: but i can't locate the former.
07:35 agentzh is it in S06?
07:35 TreyHarris um, maybe it's been corrected, i haven't read diffs in a few days
07:35 TreyHarris search for "always a positional arg"
07:36 agentzh okay.
07:36 TreyHarris it used to by if it's now "always a positonal arg"
07:36 agentzh TreyHarris: there're a lot of "always a postional arg" in S06. ;-)
07:37 TreyHarris right, but just search for "positonal", which is a mispelling.  there are three of them on the current version
07:37 agentzh okay!
07:38 agentzh TreyHarris: got them!
07:38 agentzh i'm tooooooo careless.
07:38 TreyHarris good
07:38 agentzh thx
07:40 xinming_ joined perl6
07:40 dduncan ?eval {1=>2,3=>4}.ref
07:40 evalbot_11967 ::Hash
07:40 dduncan eval (1=>2,3=>4).ref
07:41 dduncan ?eval (1=>2,3=>4).ref
07:41 evalbot_11967 ::Array
07:42 gaal fwiw I disagree, if it's the .assuming _method_, the dot is silent. So I'd say "an".
07:45 nothingmuch joined perl6
07:47 agentzh gaal: S09 uses a .assuming while S06 uses an .assuming.
07:49 agentzh should it be "is assoc('chain')" or "is assoc('chaining')"?
07:49 byte joined perl6
07:49 TreyHarris gaal: then how do you distinguish between ".assuming" and "assuming" in spoken speech?
07:49 agentzh S06 is contradictory on that tag
07:52 xinming_ is now known as xinming
07:53 neoesque joined perl6
07:55 pasteling "agentzh" at 210.22.200.67 pasted "My patch to S06 (also including fixes from TreyHarris++). it will be sent to p6-l later. comments are very welcome. :)" (541 lines, 19.5K) at http://sial.org/pbot/18820
08:02 svnbot6 r11968 | agentz++ | [t/data_types/pair.t]
08:02 svnbot6 r11968 | agentz++ | added two tests for "%$pair" (one of them is still failing, audreyt?)
08:11 svnbot6 r11969 | Darren_Duncan++ | updated t/operators/value_equivalence.t to double up the line items, where 1 version uses === and the other eqv, and updated docs in the file ... further updates still required
08:15 dduncan left perl6
08:20 xinming_ joined perl6
08:21 drrho joined perl6
08:24 spinclad agentzh: '-Marks a subroutine as being memoized.
08:25 agentzh spinclad: (?)
08:25 spinclad ' is better than 'memorized' i think
08:25 agentzh spinclad: is "memoized" correct?
08:25 agentzh spinclad: really? i was thinking it is a typo. ;-)
08:26 audreyt it's not :)
08:26 spinclad 'made into a memo' -- a computer hackers' neologism
08:26 agentzh ah, thank you all!
08:27 agentzh i've already removed that fix from my patch. :=)
08:28 audreyt agentzh++
08:28 audreyt bbiab
08:31 spinclad agentzh++  # excellent grasp of technical English style
08:36 spinclad # rare to find even in anglophone lands
08:37 nothingmuch joined perl6
08:37 nothingmuch clkao: tea arrived!
08:38 spinclad ,oO { this is the Abstract Syntax Tea, with functors ? }
08:38 xinming joined perl6
08:38 Astinus- joined perl6
08:39 nothingmuch spinclad: it's fairly concrete
08:39 agentzh joined perl6
08:40 spinclad .oO { Tea sets, captures spoon }
08:41 nothingmuch i don't know how to retort to that
08:41 agentzh spinclad: thanks. :=)
08:41 Astinus- left perl6
08:41 audreyt gaal: I think "Val" and then "MOP" and then "Exp"
08:41 audreyt is three distinct modular steps
08:42 audreyt so I'll switch Pugs.AST.Internals.Val to Pugs.Val first
08:42 audreyt and then MOP
08:42 audreyt all the while retaining the old Eval
08:42 audreyt and then switch to new Exp
08:42 audreyt should be easier for my brain to handle as well :)
08:42 gaal whee
08:42 spinclad .oO { already dreaming... good time to sleep -- ooh! shiny! }  &
08:43 gaal TreyHarris: perhaps if the sentence is about the method, it shouldn't mention the dot?
08:44 gaal .oO { ELF and COFF, ee! }
08:45 gaal .oO { elk and caribou, whee }
08:47 chris2 joined perl6
08:48 * spinclad .oO { elven syntax tea, with kirth and rune } Oo.
08:53 agentzh supper time, brb &
08:54 agentzh left perl6
09:02 gaal ~/ suppertime, and the living is easy.. /~
09:04 Aankhen`` joined perl6
09:04 Revision17 joined perl6
09:08 neoesque joined perl6
09:24 elmex joined perl6
09:31 froh-doh joined perl6
09:46 neoesque joined perl6
09:56 Southen joined perl6
09:59 gaal audreyt: I'll read the rest of the class-open-types paprt tonight, and I have tomorrow free - I hope I can help with some of the stuff?
10:07 * gaal mooses
10:07 audreyt good
10:07 ruoso joined perl6
10:07 audreyt moose!
10:07 audreyt getting Val converted would be a wonderful first step already
10:08 Schmooster converted to...?
10:08 svnbot6 r11970 | audreyt++ | * Work in progress: generalized casting interface
10:08 svnbot6 r11970 | audreyt++ |   (need testing on GHC 6.4 to see if I broke the build)
10:08 audreyt Schmooster: to Pugs.Val.Val
10:08 audreyt from Pugs.AST.Internals.Val
10:08 Schmooster ahh, Val's not a person then :S
10:08 audreyt :D
10:09 Schmooster i have much p6 learning to do.
10:09 penk joined perl6
10:10 Schmooster I think I'm possibly in a position to start now, as I've just converted 17k+ lines of Cplusplus to Perl (3 months :/ )
10:10 jferrero joined perl6
10:11 Schmooster is there a place where I can check out the main tasks underway/need doing in terms of continued development of the language?
10:12 audreyt the TASKS file
10:12 Schmooster aha, that would make sense
10:13 kane__ joined perl6
10:13 cm joined perl6
10:13 audreyt ...which I just updated :)
10:14 svnbot6 r11971 | audreyt++ | * add this weeks's tasks for perl.com newletter to TASKS.
10:15 Schmooster may I ask a dumb question? which TASKS file where?
10:15 audreyt TimToady: I just had an epiphany. "want" should simply be &return.signature.
10:15 penk joined perl6
10:16 audreyt Schmooster: http://search.cpan.org/dist/Pe​rl6-Pugs/lib/Pugs/Doc/Hack.pod
10:16 lambdabot Title: Pugs::Doc::Hack - How to hack on Pugs - search.cpan.org
10:16 audreyt the TASKS file under http://svn.openfoundry.org/pugs/ (i.e. the checkout dir)
10:16 lambdabot Title: Revision 11971: /
10:17 Schmooster ah, the pugs one
10:17 Schmooster cool
10:18 lollan joined perl6
10:19 lollan joined perl6
10:20 lollan joined perl6
10:21 Schmooster so, audreyt how long have you been working on things?
10:24 agentzh joined perl6
10:25 Schmooster ahhh, now I get the moose ref :) (pugs.blogs.com)
10:25 Odin- joined perl6
10:26 agentzh oops! forgot to mention the "a .assuming" vs "an .assuming" confusion explicitly in my mail to p6-l. :(
10:27 audreyt Schmooster: since Feb 1st 2005
10:28 Schmooster and how've you been finding ?
10:28 Schmooster are you full-timing?
10:28 audreyt was fulltime for nearly a year
10:28 audreyt ran out of money
10:28 audreyt so about 50% of time now
10:28 Schmooster good show :)
10:28 audreyt (the other 50% of time I hack Jifty for $job)
10:29 Schmooster I'm just picking up Moose now, seeing what you've done
10:29 audreyt having lots of fun :) most of the first year is spent on de-handwaving
10:29 Schmooster de-handwaving?
10:29 audreyt collapsing the design into concrete spec
10:30 Schmooster ahhh
10:30 audreyt by showing, via code, that the spec doesn't quite work :)
10:30 audreyt I'd say we have a much saner spec now :)
10:30 Schmooster good, seems like that would have been needed
10:30 audreyt and now the spec is solidified a bit, and reflected in tets
10:30 audreyt I'm refactoring the code to meet the new spec
10:30 audreyt so I can poke new holes in it
10:31 audreyt etc, etc.
10:31 Schmooster do you think Pugs is likely to end up being the True Core?
10:31 audreyt I don't think there will be a True Core...
10:31 Schmooster good answer
10:31 audreyt the era of runtime-speicific languages is past us
10:32 agentzh hooray!
10:32 audreyt hooray indeed.
10:32 Schmooster ...which would be why it's worth hacking at the spec enough to prove it's fallible parts...
10:32 audreyt ...and the tests. yes.
10:32 audreyt I'm responsible for, oh, maybe 1% of the tests.
10:32 audreyt but that's the most valuable part in the pugs tree :)
10:33 agentzh *nod*
10:33 Schmooster from recent experience, I would say YES
10:33 audreyt also, _not_ having me writing tests has shown to be a good idea
10:33 agentzh so pugs test suit needs love
10:33 audreyt since it's too easy to test only what I code for :)
10:33 audreyt agentzh: verily. see TASKS
10:34 agentzh k
10:34 Schmooster wood for the trees, and such :)
10:34 audreyt nodnod
10:35 Schmooster I'm assuming you're of the persuasion that a job's never finished? (that's my outlook)
10:36 Schmooster that's not meant as a slight, or insult, or anything
10:36 buubot or is a scurvy black-spotted whoreson!
10:36 audreyt well, yes and no... I've passed on my past projects to others
10:36 audreyt PAR to tsee, Module::Install to Alias, etc
10:36 Schmooster seems to be Par for the course ;)
10:36 audreyt so of course they are never finished
10:37 agentzh audreyt: so we won't TODO any failing tests before pugs' release?
10:37 audreyt but it would be "good enough" at some point :)
10:37 Schmooster so is it fair to say you have a role in the evolution of Perl6/Pugs?
10:37 audreyt agentzh: right. :pugs<6.28> sounds better
10:37 audreyt Schmooster: well, obra calls me the Pugs anarchitect...
10:37 agentzh audreyt: gotcha
10:37 audreyt that seems like a label I'd be happy with
10:38 Schmooster good title :)
10:38 gaal the title of the talk i gave at $work last year about pugs was "The Perl of Anarchy"...
10:39 Schmooster i'd like to add, at this juncture, that the BBC employs a large number of Perl coders :)
10:39 Aankh|Clone joined perl6
10:39 audreyt yeah. I get support requests from them :)
10:40 audreyt for Encode::HanConvert or Locale::Maketext::*, I forgot
10:40 Schmooster really?
10:40 audreyt *nod*
10:41 Schmooster were they valid requests, or people who hadn't dug deep enough to work out what was going on?
10:41 audreyt valid requests
10:42 Schmooster ah, ok.
10:42 Schmooster I was almost ready to start making derogatory comments about certain work-mates ;)
10:42 audreyt nah :)
10:42 audreyt so... what's your email addr?
10:42 audreyt I'll send you a commit bit so you can check in to pugs's repository
10:43 Schmooster i'm [email@hidden.address]
10:43 audreyt sent. to test the commit, add yourself to AUTHORS
10:43 audreyt welcome aboard :)
10:43 Schmooster thank you very much :)
10:43 audreyt :)
10:43 Schmooster I don't know how useful I'll be, but I'll endeavour to _not_ screw things up ;)
10:44 audreyt you'll do fine :)
10:45 Schmooster hmm. interesting start :) the "I agree" button takes me to a blank page, in firefox
10:45 audreyt ctrl-r
10:46 audreyt force-repost; the session db has acted strangely before
10:46 audreyt I should get them switched to db-less client-side sessions some day :)
10:46 Schmooster yep, same as :)
10:46 Schmooster is that not RT's fault, then?
10:46 svnbot6 r11972 | audreyt++ | * add Data.Seq.
10:47 audreyt might be SQLite. not sure -- I'm not in charge of the machine anymore...
10:47 gaal wow, :>: is interesting!
10:48 gaal anyway, audreyt, seems to build OK on 6.4.1
10:48 audreyt gaal: it is :D I think the time I'll save with it is worth the couple hours I banged my head with GHC's typeclass rules
10:48 audreyt cool
10:48 gaal I only vaguely grok it now, still not-really-here...
10:49 audreyt (a :>: b) is standard type theory notation that a is a supertype of b
10:49 audreyt which means that b can be upcasted to a with no loss of precision (liskov)
10:50 Schmooster must dash to work. thanks for the chat, audreyt
10:50 audreyt np. have fun! :)
10:50 Schmooster oh, I shall :)
10:50 audreyt gaal: and :<: is just a class synonym that allows for (deriving)
10:50 Schmooster you also :)
10:51 audreyt because currently you can only derive something that has your tyvar at the final position
10:51 audreyt (all this is probably going to be fixed by 6.6. gawd how I pine for 6.6 :))
10:52 gaal :-)
10:53 svnbot6 r11973 | agentz++ | [TASKS]
10:53 svnbot6 r11973 | agentz++ | added tasks for new TODO mechanism ":pugs<6.x.x> and :perl5<0.xxx>"
10:56 svnbot6 r11974 | audreyt++ | * oops, typo
11:03 Aankh|Clone is now known as Aankhen``
11:07 lichtkind audreyt just one more question, no mercy with refractoring... also no fear of duplication (so to have all info in one place in the tutorial, maybe beside things that really belong into the fudfaq)
11:08 audreyt nod
11:11 lichtkind yeah i yesterday checked out and began to read the existing material :)
11:16 lichtkind_ joined perl6
11:20 wolverian hm, where should I read on (:>:)? (also, that is a very schizophrenic smiley)
11:21 audreyt wolverian: Pugs.Intenals
11:21 wolverian thanks
11:21 audreyt used in Pugs.Val
11:21 wolverian time to pull, then. I'll check out TASKS while I'm there. been doing too much summer.
11:21 audreyt yay :D
11:22 wolverian eh, it seems to be my ~/.svk is busted (i.e. removed). but I have ~/pugs. can I make svk reuse that?
11:22 audreyt sure
11:22 wolverian yay
11:22 audreyt but do you know which rev # is that?
11:22 wolverian no..
11:22 audreyt if you built pugs
11:22 audreyt then ./pugs -V should tel lyou
11:23 audreyt -v even
11:23 wolverian wow, r10217
11:23 wolverian I don't trust that number
11:23 audreyt uhm
11:23 audreyt then just recheckout.
11:23 wolverian yeah.
11:23 audreyt svk trunk has "svk co --floating"
11:23 audreyt that puts .svk/ in the checkout dir
11:23 audreyt may be handy
11:23 audreyt (makes it darcslike)
11:23 wolverian wasn't that something that was fixed in svn->svk? ;)
11:24 wolverian I could use the darcs mirror too, I suppose
11:24 audreyt yeah, but some people prefers the state to be saved per dir ;)
11:24 wolverian I actually like darcs a lot
11:25 wolverian is it sane to use the darcs mirror?
11:25 gaal funny, some people  know'd prefer it to be global /SVK
11:25 gaal except that they actually wouldn't use svk
11:25 gaal or versrion control at all for that matter
11:26 gaal amazing they even use a computer
11:27 ivas joined perl6
11:29 audreyt ok, clever migration plan checked in
11:32 svnbot6 r11975 | audreyt++ | * Pugs.Val.Val is now introduced to Pugs.AST.Inernals as a new
11:32 svnbot6 r11975 | audreyt++ |   "V" variant type.  The idea is that, like "PerlSV", we can
11:32 svnbot6 r11975 | audreyt++ |   migrate values piecemeal to the new Pugs.Val regime, removing
11:32 svnbot6 r11975 | audreyt++ |   one variant of the Pugs.AST.Instances.Val at a time, while
11:32 svnbot6 r11975 | audreyt++ |   keeping the runloop intact.
11:32 svnbot6 r11975 | audreyt++ |   (Eventually PerlSV will just become a Ext value under the new regime)
11:32 lichtkind_ wow
11:32 lichtkind_ which admin can please kick lichtkind out of this room ?
11:33 ChanServ sets mode: +o audreyt
11:33 svnbot6 r11976 | audreyt++ | * Pugs.Val.Str -- first sketch of a Val class
11:33 lichtkind was kicked by audreyt (audreyt)
11:33 audreyt ...but that wouldn't help :)
11:34 audreyt need to log it out somehow
11:34 audreyt sets mode: -o audreyt
11:36 wolverian well, that was confusing. maybe I should tell my client not truncate nicks to 9 characters.
11:40 nothingmuch lichtkind_: register your nick with nickserv
11:40 nothingmuch then you can use it's nick reclaimation services
11:40 nothingmuch to auto kick yourself
11:45 svnbot6 r11977 | audreyt++ | * GHC 6.4.x needs -fallow-overlapping-instances for :<: to work.
11:48 lichtkind_ nothingmuch what is this?
11:49 nothingmuch lichtkind_: /msg NickServ help
11:49 lichtkind_ ah thx
11:49 nothingmuch it lets you register your nick
11:49 nothingmuch and only if you're registered you can /msg people
11:50 nothingmuch and if you got disconnected you can release the nick by simply loging in with your password
11:52 lichtkind_ is now known as lichtkind
11:53 gaal what's freenode for su - ?
11:53 gaal ("-!- mode/#perl6 [+o audreyt] by ChanServ")
11:53 wolverian uh. what's #perl7 in TASKS? :)
11:54 wolverian I assume it's a typo
11:56 audreyt gaal: /msg charserv op #perl6
11:56 audreyt typo. fix it :)
11:58 wolverian hrm I think I somehow did that, in fact
11:59 wolverian my vim foo is weak today
11:59 wolverian yup, no 'perl7' in the file :)
11:59 gaal /7r6:wq
12:00 xdg joined perl6
12:00 wolverian :)
12:06 azuroth_centeric what do the freemasons do?
12:07 wolverian masonry
12:07 lollan joined perl6
12:08 bradb left perl6
12:08 broquaint And control the world.
12:15 gaal azuroth_centeric: http://en.wikipedia.org/wiki/Freemasonry
12:23 azuroth_centeric pfft. wikipedia is written by the freemasons themselves
12:23 lichtkind azuroth_centeric yeah freemason are strong there
12:31 bpphillips joined perl6
12:47 gaal I think the myth of freemasons is all fiction, invented by freemasons
12:47 lichtkind thats  definitly not true
12:47 gaal or maybe that's discordians?
12:47 webmind no, by the illuminatie ofcourse... ;)
12:48 lichtkind look at all the old cathedrals in europe
12:48 lichtkind who build them?
12:48 rgs freemasons are to masonry what free software authors are to software authorship
12:48 * gaal administers copies of _Foucault's Pendulum_
12:48 lichtkind of cource free masons
12:48 gaal I want a t-shiurt: Free As In Masons!
12:49 lichtkind haha
12:49 gaal rgs++
12:49 lichtkind but freemasonary got perverted like most sacred things
12:49 lichtkind pendulum was quit boring book
12:56 vel joined perl6
13:00 * gaal stretches
13:23 mauke_ joined perl6
13:26 audreyt done for tonight
13:26 audreyt see you some 10 hours from now
13:27 audreyt newstyle values is now exposed to language level via `str`
13:27 svnbot6 r11978 | audreyt++ | * Tighten up the Pugs.Val hook by handling the valType and
13:27 svnbot6 r11978 | audreyt++ |   Pretty cases (currently both are bogus).
13:27 svnbot6 r11978 | audreyt++ | * Implement parsing for qx{...}, q:exec{...} and `...`.
13:27 svnbot6 r11978 | audreyt++ |   However, instead of invoking some sort of readpipe,
13:27 svnbot6 r11978 | audreyt++ |   they are now hijacked to construct V-PureStr so we can
13:27 svnbot6 r11978 | audreyt++ |   test interoperability between oldland Str and newland
13:27 svnbot6 r11978 | audreyt++ |   Str.  This should also make strings faster and more
13:27 svnbot6 r11978 | audreyt++ |   compact if it can be made to work...
13:27 fglock joined perl6
13:28 audreyt gaal: I'm too exhausted to write about any of this... if you get some cycles, a quick overview of CapInternal/MOP/PugsVal/etc on the blog would be lovely
13:29 audreyt *wave*
13:29 gaal will try in about 5 hr
13:30 audreyt yay
13:30 gaal nighty night!
13:30 audreyt the goal is to make `foo` work Correctly (tm)
13:30 audreyt up and including `foo`.meta
13:30 audreyt .get_methods
13:30 audreyt etc
13:30 audreyt at which point we switch 'foo' to it
13:30 fglock hi!
13:31 gaal audreyt: ok. do you have scaffolding for compilation tests?
13:31 audreyt "make pugs"
13:32 audreyt ./pugs -e 'say `foo`.meta'
13:32 gaal oh i saw you mention there's an incremental moose
13:32 gaal tres cool.
13:32 audreyt yeah.. the best way to avoid bduf
13:32 gaal uh, what's `foo` though?T
13:32 audreyt fglock: hi!
13:32 audreyt hijacked syntax
13:32 gaal ah :)
13:32 audreyt was parsefail anyway
13:33 audreyt so I feel less guilty
13:33 gaal (have root on your language implementation)++
13:33 audreyt qx{foo} and `foo` currently constructs V-PureStr
13:33 audreyt once it all works we can rename VStr to vStr
13:33 gaal oh, r11978. missed the commit moosage...
13:33 audreyt s///g
13:34 audreyt where vStr :: String -> Val
13:34 audreyt      vStr x = V . val (cast x :: PureStr)
13:34 gaal wow, with fps? so cool
13:34 gaal audreyt++
13:35 audreyt the next obvious step is "instance Value Val.Val"
13:35 gaal thanks to the :>: thing that packs back and forth, yes?
13:35 audreyt in the oldland Internals.hs
13:35 audreyt yup
13:35 gaal *very* nice
13:35 audreyt write a oldland castV is just V
13:35 audreyt oldland fromVal is callmeth
13:36 audreyt though I'm a bit torn -- I think mmd infix:<as> is good for general object-to-object casting
13:36 audreyt but I like a lighter-weight interface for casting to pure values
13:37 audreyt you know, like ruby to_f to_s or CLR IConvertible
13:37 gaal do we mmd on return type?
13:37 audreyt or perl5 SvNV SvPV
13:37 audreyt no, "as" takes type proxy
13:37 audreyt "x" as Int
13:37 audreyt infix:<as>("x", Int)
13:37 gaal nod
13:37 fglock audreyt: do I have to write the 'as' method, or is a default generated magically?
13:38 mauke_ is now known as mauke
13:39 audreyt fglock: Object.as just redispatches to infix:<as> I think
13:40 audreyt or maybe the other way around. not sure
13:41 agentzh joined perl6
13:41 audreyt fglock: not sure which "I" you mean
13:42 justatheory joined perl6
13:42 svnbot6 r11979 | fglock++ | pX/Pugs-Compiler-Rule - fixed test count;
13:42 svnbot6 r11979 | fglock++ | - 'use Pugs::Runtime::Match::Ratchet' now just loads Pugs::Runtime::Match
13:42 audreyt but I need to sleep :)
13:43 audreyt see you tomorrow!
13:43 fglock scw: in pX/PCR, t/11-parsec.t has some minor differences in the test results
13:43 agentzh night, audreyt.
13:44 fglock audreyt: "I" is the class author
13:44 fglock audreyt: good night
13:44 agentzh fglock: what do you think of adding v6-alpha-specific TODO options to Test.pm?
13:45 agentzh for example, is($got, $expected, :perl5<0.100>, :pugs<6.28.0>)
13:45 agentzh fglock: so the Perl 5 implementation can have its own TODO tests.
13:46 agentzh fglock: please also see TASKS for more info. :=)
13:46 fglock agentzh: I'm ok - I'm not sure about using 'perl5' as the identifier
13:46 agentzh fglock: or v6<....>?
13:47 agentzh i think v6 is confusing here.
13:47 [particle] if this is to be done, it should be generic for all platforms (incl parrot)
13:47 agentzh [particle]: we can also have :parrot<1.001> or some such
13:47 fglock p6p5, p5 ?
13:48 agentzh p6p5 sounds cool
13:48 agentzh or even lrep?
13:48 [particle] what does the platform/version tag give you?
13:48 [particle] that is, what info does it convey?
13:49 [particle] i think the harness for your impl should track todo/skip
13:49 agentzh [particle]: :pugs<6.28.0> means this test is a TODO before pugs' version gets 6.18.0 or greater.
13:49 [particle] agentzh: how do you handle bugs for a specific impl version?
13:50 [particle] or two, or three.
13:50 [particle] just because it works in one version, doesn't mean it'll work in the next
13:50 agentzh [particle]: it's a TODO tag in essence.
13:51 [particle] yes, but it should not be in the tests, which are designed to be generic
13:51 [particle] 'pure perl6'
13:51 agentzh [particle]: when the current version ge the specified one, the test will expire to be unTODO'd
13:51 agentzh [particle]: but we need to mark some tests to be TODO before the pugs release anyway.
13:51 [particle] agentzh: let's say parrot/perl 0.2 has a bug that 0.1 and 0.3 don't.
13:52 agentzh [particle]: it's not for tracing bugs at all. it's for marking TODO tests only.
13:53 agentzh there's no guarantee for the tests to pass for a higher version.
13:54 agentzh but there's the guarantee that the test won't be a TODO test for a higher version.
13:54 [particle] well, then, let's say we throw out a subsystem for a while, in order to reimplement
13:54 clkao nothingmuch: hurraah!
13:54 [particle] i'm just saying i don't think greater-than-or-equal-to-number is expressive enough
13:54 nothingmuch clkao: =D
13:54 nothingmuch clkao: it's very nice
13:54 agentzh [particle]: so you think a better way is to put the list of TODO tests for a specific implementation into the harness configure files, right?
13:55 clkao excellent
13:55 nothingmuch i only need some place to store it...
13:55 [particle] agentzh: i feel the same way about C<use 5.008;> too btw
13:55 [particle] agentzh: yes
13:56 clkao i slept for 12 hrs :/
13:56 [particle] agentzh: http://svn.perl.org/parrot/trunk/t​/compilers/pge/p6regex/01-regex.t
13:56 nothingmuch clkao: tell your friend(s) thanks for me?
13:56 agentzh [particle]: this mechanism is only for making TODO tests expire themselves.
13:57 clkao nothingmuch: sure
13:59 agentzh [particle]: what does qw<94> in 01-regex.t?
13:59 agentzh *mean
13:59 [particle] agentzh: it means test 94 is todo
14:00 [particle] that could easily be qw<94 123 456>
14:00 agentzh [particle]: hardcoding test number is fragile, i'm afraid.
14:00 [particle] um, no.
14:00 [particle] they're implementation dependent
14:00 agentzh [particle]: so 01-regex.t is a test harness. okay.
14:01 [particle] it is true that it's typical, and better, to keep todo data with each test.
14:01 agentzh yes, the TODO list is separated from the real tests.
14:01 [particle] but when writing a test suite that multiple language implementations will target...
14:02 agentzh separation means more chances to get out of sync.
14:02 agentzh [particle]: nod. there're arguments for both sides.
14:03 [particle] i think the tests should not be modified just to update todo info for a single implementation
14:03 [particle] yes, agreed, both sides.
14:03 [particle] you know which side i take ;)
14:03 agentzh [particle]: but i think :pugs<6.x.x> and p6p5<0.100> have no bad effects.
14:04 prefiks joined perl6
14:04 agentzh oh, yes, updating the tests once a new implemenation is born.
14:04 agentzh this is not a good thing. :=)
14:04 [particle] s/born/updated/
14:05 agentzh *agree*
14:05 agentzh [particle]: so we should maintain a list of TODO for Haskell pugs and another list for v6.pm?
14:05 [particle] yes.
14:05 [particle] and javascript, and parrot, and whatever else.
14:05 [particle] in a format that's easy for that particular implementation.
14:05 agentzh well, that needs more work.
14:06 [particle] that is, you don't have to do it my way ;)
14:06 agentzh of course. ;-)
14:06 agentzh okay, particle, i'll think about it.
14:06 [particle] however, a standard config format may make it easier for language implementors exchange info on todo reasons.
14:06 [particle] okay!
14:07 agentzh *nod*
14:07 [particle] let me know if i can help
14:07 agentzh sure!
14:07 gaal none of the schemes I can think of for this are ideal
14:07 [particle] gaal: agreed.
14:07 gaal putting TODO info away from the test risks breakage when test # changes
14:07 agentzh gaal: any other sultion to this?
14:07 [particle] we need to settle for practical, and pragmatic.
14:07 gaal putting it in the ok() line sucks because it makes for long ok() lines
14:08 agentzh aye
14:08 gaal as well as the problem with for @various_data -> ok test($)
14:08 gaal though that already existed
14:08 [particle] yep
14:09 gaal only now it's worse ecause different implementations may be differently buggy
14:09 [particle] i expect they will be
14:09 agentzh identifying tests in the test suit is as hard as cross-referencing tests and Syn
14:09 gaal testing is hard, let's, uh...
14:10 [particle] ...scrap the test systems and just write more code?
14:10 gaal agentzh: presumably harder! triaging the num tests e.g. was very painful
14:10 agentzh the most easy way in the short term is using :pugs<6.x.x> or so.
14:10 agentzh *the easiest
14:10 agentzh gaal: nodnod
14:11 gaal I wonder if there's some declarative way of doing it
14:11 agentzh gaal: use magic comments?
14:11 gaal like:
14:11 agentzh is(foo, bar) ## pugs<6.28.0>
14:11 [particle] still, any implementation dependent changes force the test repo to change
14:11 gaal todo(:pugs<6.x.x>, :v6); is...
14:12 justatheory joined perl6
14:12 agentzh yes, the TODO info is still in the test suit
14:12 [particle] which may be okay, *if* the tests are put into an independent repo
14:12 agentzh separating them is tooooooo dangerous.
14:12 fglock clkao: I think pX is ok to merge back - I only see some minor fails in t/11-parsec.t, which may be due to the Rule grammar fixes
14:12 clkao *nod*
14:12 gaal a todo function in Test.pm to change state of expected next test
14:12 agentzh the problem is our test suit is changing everyday.
14:12 agentzh as well as the synopses.
14:12 clkao you merge my hcanges to Common?
14:13 gaal the upside with that is that it's easily conditional, too
14:13 fglock clkao: yes
14:13 gaal todo() if $pom ~~ Gibbous
14:13 agentzh todo()?
14:13 [particle] gaal: can this also be arch dependent?
14:13 gaal and who knows, with some magic we might beable to pull off todo_to_block_end
14:14 gaal agentzh: I'm proposing &Test::todo
14:14 agentzh arch dependent is a wonderful dream.
14:14 [particle] the case where it passes parrot/linux, fails parrot/win32
14:14 gaal 17:11 < gaal> todo(:pugs<6.x.x>, :v6); is...
14:14 gaal not a smart comment, n actual function call.
14:15 fglock 08-test.t runs in 20s, and 0.2s with precompiling
14:15 agentzh the tests affected by the &todo function is always the next test?
14:16 gaal [particle]: that would be todo(:parrot) if $*OS ~~ "MSWin32"
14:16 gaal agentzh: yeah
14:16 agentzh gaal: thinking...
14:16 gaal agentzh: unless like I said we figure ut a "todo to end of block" variant
14:16 [particle] gaal: great. one other thing, what if it's todo(:parrot) if <some parrot config option>
14:17 [particle] eg: in parrotland $PConfig{has_icu}
14:17 agentzh gaal: nod
14:17 agentzh gaal: just like perl5's Test::More
14:17 gaal [particle]: todo is just a function call, so that'll work.
14:17 clkao fglock: want to do the merge? -perl6 can be merged without conflicts
14:17 gaal agentzh: yes, because we're imperative and not OO.
14:17 agentzh aye
14:18 gaal von newmann's gotta be good for somehting :-p
14:18 [particle] gaal: function call in what language? p6? i can deal with that, but that means there are new requirements to run Test.pm
14:18 [particle] (compiler/os introspection)
14:18 gaal but surely Test::Builder can also have a too method that only sets the expected state for the test instance.
14:18 agentzh i think we can still allow named arguments like :pugs in &is/&ok/etc, because they're more concise.
14:18 [particle] not that that's a bad thing to have in order to run a test suite, but it's a requirement.
14:20 agentzh [particle]: it's a good thing. :=)
14:20 gaal [particle]: no, the decision to call todo is all in the test file. it can make its decision whichever way it wants or can
14:20 [particle] perhaps we should just let the language implementations branch
14:20 cjeris joined perl6
14:20 gaal anymoose sorry, I really gotta go again...
14:21 gaal this isn't a difficult change to Test.pm, comits welcome :-)
14:21 gaal s/om/omm/
14:21 gaal &
14:21 [particle] cya
14:22 fglock clkao: can you do it? I would just copy pcr over the old one
14:22 clkao uhm. ok. and kill the ones under pX?
14:23 fglock yes, after the tests pass...
14:25 tokuhirom is now known as toku_away
14:27 svnbot6 r11980 | agentz++ | [TASKS]
14:27 svnbot6 r11980 | agentz++ | renamed :perl5<0.xxx> to :p6p5<0.xxx> per fglock
14:27 svnbot6 r11980 | agentz++ | added &Test::todo which was proposed by gaal++
14:29 hexmode joined perl6
14:32 [particle] agentzh: what if we guarantee each test is named identically?
14:32 [particle] gah! s/idental/unique/
14:32 agentzh how can we do that?
14:32 [particle] sorry morning fingers
14:33 [particle] if we say each test must be named uniquely
14:33 agentzh [particle]: Hmm, it's feasible, i think.
14:33 [particle] then we can specify todo by test uid, rather than (fragile) test number
14:33 agentzh aye
14:34 agentzh just like ingy's Test::Base
14:34 [particle] indeed
14:34 agentzh so by doing this, the test suit can be cleaner.
14:34 svnbot6 r11981 | fglock++ | v6.pm - Makefile.PL cleans the precompiled rules cache
14:34 agentzh no :pugs, :p6p5, and :parrot messing around.
14:35 agentzh [particle]++
14:35 [particle] yay
14:35 [particle] agentzh++ # glad we could finally agree :)
14:36 agentzh i'll read through the test suit to see how that works out.
14:36 agentzh yes!
14:39 agentzh not sure if audreyt will like it because it would be harder for her to TODO and unTODO a specific test. ;-)
14:40 agentzh she will have to keep a pugs-todo file handy.
14:41 [particle] sure, unless we have some magical $EDITOR macros
14:41 agentzh heh
14:42 agentzh making test names unique also needs some work.
14:42 clkao fglock: i need to shave some yaks first..
14:43 agentzh [particle]: feel free to work on the pugs test suit harness when you have some cycles. :=)
14:43 [particle] i'll take a closer look at it, for sure.
14:43 agentzh i'd like to focus on the tests themselves.
14:44 agentzh yay!
14:44 [particle] ok. well, my first goal is to get parrot/perl6 passing 01- and 02- tests
14:44 [particle] but i'll be looking at pugs tests very closely after that's done
14:45 agentzh okay!
14:47 kanru joined perl6
14:49 fglock clkao: ok! I'll now take a look at p6p6 to see if something changed
14:53 jferrero joined perl6
14:54 iblechbot joined perl6
14:57 miyagawa joined perl6
14:58 gaal what's a test name, it's description?
14:58 gaal doesn't work in loops
14:59 gaal unless you tuple it automatically with the iterant, but that might be mangled by the time you get to the test
14:59 marmic joined perl6
15:00 gaal and actually there may be a loop (say, while) that doesn't even have an iterant -- although I bet this isn't the case right now
15:00 agentzh gaal: only TODO tests should have a name. ;-)
15:00 [particle] gaal: i don't care if it's description, or some other field
15:00 agentzh non-TODO tests are left as usual.
15:00 gaal plus of course not all tests have a desc, though argumbly forcing writers to add them is a good thing
15:01 agentzh indeed
15:01 gaal [particle]: the point is that some tests run in loops
15:01 agentzh tests should have good description.
15:01 gaal agentzh: that's like saying a parser should be fast :)
15:01 [particle] gaal: since this suite is to be used by multiple implementations, stricter requirements are not a bad thing
15:01 [particle] gaal: test uids can be generated
15:02 [particle] (in the case of loops, etc)
15:02 gaal when?
15:02 gaal how does it look like?
15:02 [particle] i don't know yet :)
15:03 agentzh gaal: how about introducing a loop counter to generate a name?
15:03 gaal how does the test know it's in a loop?
15:03 svnbot6 r11982 | fglock++ | pX/Pugs-Compiler-Rule - fixed token <%hash> capture; added test
15:03 agentzh we feed a name to the tests
15:03 gaal if you have the programmer add the nonces it may as well be fully manual
15:04 agentzh is($got, $expected, "blah blah" ~ $i++)
15:04 [particle] ok( 1, "$description: $counter" )
15:04 [particle] right :)
15:04 [particle] it places a small burden on the test writer to follow the convention
15:04 gaal note that if there's a bug in the test it might come up with incorrect counters
15:05 gaal etesting control structures
15:05 gaal "e.g. testing"
15:05 [particle] no test system is perfect
15:05 gaal wow, I'm a lousy typist when I lag
15:05 [particle] we all know this is an imperfect solution, we talked about that not too long ago
15:06 agentzh concrete examples may be easier to handle in a specific way.
15:06 justatheory joined perl6
15:06 gaal what do you need the unique name for again? putting the todo lists outide the test file?
15:06 stevan joined perl6
15:06 agentzh gaal: yes
15:06 agentzh that's the goal.
15:07 gaal are we content that that goal is worthy?
15:07 agentzh so there will be no explicit TODOs in the Pugs test suit.
15:07 gaal I still think you want to see the todoitness of a test when you look a the source...
15:07 [particle] i am.
15:07 [particle] (content)
15:07 [particle] but i'm willing to hear counter-arguments
15:07 agentzh gaal, [particle]:
15:08 agentzh maintaining an external file may be a burden.
15:08 agentzh but it can make the tests cleaner.
15:08 agentzh especially when more and more Perl 6 implementations arise.
15:09 [particle] i say: the tests must test the spec, not the implementation.
15:09 agentzh having :pugs<xxx>, :p6p5<xxx>, and :parrot<xxxx> will be a pain.
15:10 [particle] good summary
15:11 gaal more pain than editing an external file when I want to todo a test? tha's what I'm not sure I agree with
15:11 kolibrie I would rather see the TODO information in the tests, it seems too dangerous to put that information elsewhere
15:11 [particle] gaal: i'm hoping for some $EDITOR magic
15:12 gaal plus putting todoitness in the test makes it possible to have conditional todoities
15:12 [particle] kolibrie: i'd rather not see unnecessary info in the test files (said from the language implementor perspective)
15:12 gaal putting it in external data means you either can't do that, or you need a language to express the conditions
15:12 [particle] gaal: express it on the way that's native to that implementation
15:13 [particle] that is, an implementation-dependent way
15:13 gaal so the todo summary contains code?
15:13 [particle] sure!
15:13 [particle] it's a *test harness*
15:13 agentzh if there were only one Perl 6 implementation, we needn't worry about such things for sure. but there're already three.
15:14 gaal I'm skeptical about $EDITOR magic here - especially if test names are not literal strings.
15:14 kolibrie another benefit to keeping TODO info with the tests is it is easier to compare implementations if the test TODOs are together
15:15 gaal well, you'd want to compare smoke actual results for that
15:15 gaal *actual smoke
15:15 kolibrie tue
15:15 kolibrie true
15:15 gaal and if you want to compare what implementations bid for, it's arguably easier to do it in a centralized todo repo
15:16 gaal the prime thing that's nagging me is the immediacy for the programmer
15:16 gaal If I add new tests, I don't want to be slowwed down by maintaining an external resource
15:16 gaal adding tests should be as easy as possible :-)
15:17 kolibrie I think the TODO info will get out-of-date easiily, and will be hard to correct, if TODO info is external
15:18 kolibrie so I'm with gaal
15:18 agentzh [particle]: considering that the Pugs test suit itself is still evolving, maybe a direct approach may be more practical?
15:19 agentzh for now, implementation independencies may be less important than development productivity.
15:20 PerlJam TODO info should go with the test.
15:20 PerlJam I too am with gaal if that's his position  :)
15:20 gaal I can see the arguments for both sides, but I'm leaning for locality.
15:21 agentzh hey, folks, how about having both?
15:21 gaal consider also things like this are easy to do:
15:21 PerlJam agentzh: if you want to share tests across implementations, then modify the harness to grok something that allows implementation specificity.
15:21 gaal http://perlcabal.org/~gaal/​pugstest/slide12b.html#end
15:21 lambdabot Title: Example answer
15:21 PerlJam agentzh: "both" just makes the problem worse IMHO
15:21 agentzh heh
15:22 gaal I think TODO is only the first problem...
15:22 gaal new implementations may not beable to parse sophisticated tests
15:23 agentzh all right. stick to todo(:pugs<x.x.x>) then. :=)
15:23 gaal so they'll write simpler ones, and there may be a good reason not to even enter those  on other implementations
15:23 PerlJam gaal: Um ... more tests can't hurt :)
15:23 gaal but then there's the risk of missing out when interesting test cases *do* come up...
15:24 gaal well, nobody said 15k tests are easy to manage
15:24 gaal PerlJam: yes and no
15:24 gaal it's nice to have an obvious place to look when you want to see tests for X
15:24 agentzh is($got, $expected, :pugs<6.28.0>, :p6p5<0.100>)
15:24 gaal if there's also a t/feature/x-simple ...
15:25 gaal (also, we wantmake test to be fast, but let's not admit that)
15:25 gaal agentzh: with the possible declarative additions.
15:25 agentzh gaal: like ?
15:25 crem_ joined perl6
15:26 PerlJam I don't care if "make test" is slow.  As long as it's fast enough.
15:26 gaal agentzh: you know, that &Test::todo function I mentioned
15:26 agentzh yes, i know. i've already added that to TASKS.
15:26 gaal todo :pugs<6.28.0>;    todo :p6p5<0.100>;   is $got, $expected, "moose";
15:27 agentzh heh, looks nice
15:27 agentzh todo :pugs<6.18.0> :p6p5<0.100>; is $got, $expected, 'elk';
15:27 gaal PerlJam: some of us are suffering from multicolored trauma on this subject
15:27 PerlJam as long as the tests aren't obscured by the todos  :)
15:28 gaal agentzh: of course it looks nice, it has a moose in it!
15:28 agentzh ;-)
15:28 kolibrie is the version optional?  I certainly don't know which version a test no longer can be todo
15:28 PerlJam gaal: Then I think that some of you people should recalibrate how often tests should be run  :)
15:28 gaal kolibrie: yes optional
15:28 agentzh if the version optional, the TODO tests won't get expire unless you unTODO it explicitly.
15:29 kolibrie ok
15:29 agentzh *if the version is omitted
15:29 gaal PerlJam: exists %you_people<PerlJam> == 1
15:30 gaal ah you mean some of the traumatized?
15:30 PerlJam aye
15:30 gaal well, no, I think we grumble and make pugs faster.
15:31 PerlJam yes, a faster pugs would be excellent.
15:32 agentzh kolibrie: when we're TODOing tests only because there will be a release soon, we can safely set "todo :pugs<next_point_release>".
15:32 gaal bbl&
15:33 amnesiac joined perl6
15:33 kolibrie agentzh: yes, that makes sense
15:33 agentzh :)
15:35 agentzh #perl6++   # discussing problems effectively
15:37 Limbic_Region joined perl6
15:45 rodi joined perl6
15:47 agentzh bedtime &
15:47 agentzh left perl6
15:48 [particle] joined perl6
15:57 weinig joined perl6
16:00 weinig joined perl6
16:00 prefiks joined perl6
16:17 gaal oh noes! foundry is down?
16:17 iblechbot joined perl6
16:17 Limbic_Region joined perl6
16:19 * kolibrie is not getting a response from openfoundry either
16:21 hexmode joined perl6
16:23 [particle] joined perl6
16:26 * [particle] is back from the land of the internet-disconnected
16:26 kolibrie welcome
16:27 [particle] did i miss anything more about testing & todos?
16:27 kolibrie several more votes to keep todo information with the test
16:28 [particle] heh. it's a tough problem.
16:28 kolibrie I think that was the consensus when the conversation died down
16:32 Limbic_Region Is Pugs known to be b0rk on Win32 ATM?
16:32 Limbic_Region perlbot nopaste
16:32 perlbot Paste your code here and #<channel> will be able to view it: http://sial.org/pbot/<channel>
16:33 Psyche^ joined perl6
16:33 pasteling "Limbic_Region" at 129.33.119.12 pasted "Build failure on Win32" (38 lines, 3K) at http://sial.org/pbot/18823
16:35 TimToady i like todo :foo<> :bar<>.  And I think the history of pod has proven the wisdom of locality.
16:35 TimToady But I also think it'd be good policy to put todo on its own line.
16:35 gaal Limbic_Region: try nuking dist/ in third-party/.../
16:35 Limbic_Region k
16:36 Limbic_Region there is no dist in third-party
16:36 [particle] but does todo() before ok()?
16:36 gaal TimToady: agreed, and even allow todo :foo<>; todo :bar<> to aggregate
16:36 [particle] s/but//
16:36 Limbic_Region just fps, HsJudy, HsSyck, installed, judy, and TextRegexLazy
16:36 Limbic_Region gaal?
16:36 gaal for clear patches from different distros
16:37 TimToady I wonder if it could use the call syntax but be a comment?
16:37 TimToady just to keep it out of the visual clutter
16:37 gaal Limbic_Region: I mean inside HsSyck
16:37 gaal Limbic_Region: look deeply
16:37 TimToady # todo :foo<1.2.3>
16:37 TimToady ok(...)
16:37 [particle] i think the tests should be as close to data-only as possible. we're testing the specification.
16:37 Limbic_Region ahh
16:37 gaal TimToady: that would need a strong implementation
16:37 gaal or a hacky one :-)
16:38 TimToady sed -e 's/&# todo/todo/'
16:38 TimToady s/&/^/
16:38 * [particle] wonders if that's strong or hacky
16:39 TimToady in general I'm opposed to meaningful comments, but this seems like a good place for them.
16:39 gaal what I was wondering in the shower was how to make todo_to_block_end work
16:39 gaal $?CALLER::LEAVE := { ... }
16:39 [particle] i'd love to read timtoady's last post as a comment in some source somewhere :)
16:40 TimToady that would be too machiavelian for me...
16:40 TimToady but then, someone who is too machiavelian would say that, wouldn't he?
16:40 maco132 is now known as mako132
16:41 [particle] perhaps even machiavelli
16:41 gaal plus again I'd make the conditional todo argument
16:42 TimToady 'use todo :foo<1.2.3>' might be an easy way to get block scoping
16:42 gaal TimToady: it assumes lexical pragmas, which nobody has yet
16:42 gaal not even Perl 5 :)
16:42 TimToady well, so?  I'm just the chief handwaver here...
16:43 SamB heh
16:43 [particle] only in perl6 is handwaving a salute.
16:43 gaal and although pugs will get them soon (leut. handwaver here), fledgling implementations surely can't be expected to
16:43 gaal and it's them that have more todos...
16:44 [particle] indeed.
16:44 [particle] our implementation is still insane, according to the tests.
16:45 [particle] but once it is (and barely) i expect we'll need to update 99% of perl6 tests with :parrot(...)
16:45 * SamB thinks that the idea that perl6 could be implemented more than once is rather odd
16:45 gaal wow, that took me too long to make sense of [particle] :)
16:45 [particle] :)
16:45 gaal SamB: how come? how many times has c been implemented?
16:46 gaal or haskell? or pascal? or basic....?
16:46 SamB many
16:46 SamB C is much simpler than perl6
16:46 SamB BASIC is not well standardized
16:46 gaal little bit
16:47 SamB Haskell is not bad either, it has all that math
16:48 TimToady audreyt: &return.signature could indeed be the long name of want, assuming that &return can be taught to construct itself lazily or at compile time.  .signature can of course do the work that must be deferred till runtime.
16:48 Psyche^ is now known as StudiesInWords
16:48 SamB with Haskell the problem is to implement it efficiently, rather than to implement it
16:49 [particle] that's the same problem with parrot, samb
16:49 SamB hmm
16:49 TimToady heck, let's just write a gcc front-end.  :)
16:50 SamB you are crazy indeed!
16:50 SamB gcc front-end...
16:50 [particle] heh, i've seen questions about that on #parrot
16:50 SamB gcc is so messy
16:50 [particle] also seen questions about parrot as a gcc-backend
16:50 Aankhen`` joined perl6
16:50 SamB how about a GHC frontend instead ? ;-)
16:50 TimToady isn't that what it is already?
16:50 * [particle] shivers
16:51 TimToady oh, you mean parrot...
16:51 SamB oh, I dunno what I mean
16:51 TimToady that's okay--I'm fond of permutational humor.
16:52 SamB except that it probably involves linking code with GHC
16:52 SamB that is, with GHC's code
16:52 TimToady Haskell chip, anyone?
16:52 gaal hee
16:53 SamB are they anything like nachos?
16:53 TimToady call it Symbollux or some such.
16:53 gaal SamB: we already have eval :lang<haskell>.... (hs-plugins)
16:53 gaal SamB: did you see GOA? It is teh awesome
16:54 SamB I was thinking you'd have to hack GHC itself, but maybe that new API would make this unneccessary
16:54 SamB GHCi on Acid?
16:54 gaal when I get some tuits I'm adding a pugs plugin to \bot
16:54 gaal yes
16:54 gaal xerox++
16:54 SamB I saw a screenshot of it running some lambdabot commands
16:54 gaal yes, that's what it is. really nice.
16:55 SamB it also had some psychadelic background image
16:55 gaal that too.
16:56 SamB what is it anyway?
16:57 gaal what's what?
16:57 TimToady hmm, maybe TODO {...} can be a block property.
16:58 SamB I mean, how does GHCi on acid work?
16:58 SamB is it a .ghci file or something?
16:58 gaal TimToady: uh, that'll only be useful on whole blocks...
16:58 SamB maybe with some modules to go with it?
16:59 gaal SamB: ":load /home/roo/src/goa/src/GOA.hs" and some :defs
16:59 gaal yes, .ghci
16:59 Limbic_Region gaal - should removing third-party\HsSyck\dist require a realclean or something?  If not, same build error
16:59 gaal :def is the superglue at work.
17:00 TimToady gaal: that would in addition to todo(), not instead of.
17:00 gaal Limbic_Region: yeah, I just backlogged and noticed it's maybe dist/build that needs to be nuked, sorry
17:00 gaal TimToady: ACK. but that leaves the middle case untreated.
17:01 gaal surely there's a sicker hack than changing the language spec for this. :)
17:01 Limbic_Region gaal - but wiping out dist would get rid of build too?
17:01 [particle] is the pugs repo down? (can't svn up)
17:02 gaal [particle]: yes :-(
17:02 * rodi can't hit that repo either.
17:02 [particle] ah. okie then.
17:02 gaal Limbic_Region: I mean pugs toplevel dist/, not 3rdp
17:03 * gaal is getting weird errors that look like hsc/FFI breakages now
17:03 gaal Limbic_Region: in short try make realclean
17:03 TimToady arg to TODO is a closure, and can contain conditionals
17:04 TimToady but I'm just brainstorming...
17:05 TimToady I'll think more about it in the shower. &
17:06 rodi cd TimToady; make clean;
17:06 rodi ;)
17:06 [particle] rodi: you should be using the SOAP api
17:07 Limbic_Region trying now
17:08 lisppaste3 joined perl6
17:08 rodi LOL
17:08 [particle] this v6-alpha stuff isn't working well for me :(
17:09 gaal this openfoundry breakage is frustrating because I didn't pull A's latest wizardry
17:10 gaal oy:
17:10 gaal Compiling Pugs.Embed.Parrot
17:10 gaal Warning: retaining unknown function `Pugs_callSubSSS' in output from C compiler
17:11 gaal same with Pugs_trap_exit
17:11 * gaal cringes in wait for unresolved symbols at link time
17:18 gaal okay, I have a fix for the compilation breakage
17:18 gaal but can't commit it. thankfully it's simple:
17:18 gaal please edit Pugs.cabal.in
17:19 gaal in the other-modules: line add Data.Seq
17:19 gaal run 'make' again.
17:20 vel joined perl6
17:22 gaal Limbic_Region: sorry for the red herrings earlier, but this should work.
17:23 Aankhen`` joined perl6
17:27 xinming joined perl6
17:31 Limbic_Region gaal - sorry, was day dreaming
17:31 Limbic_Region as soon as make breaks will try your fix - repo down is why you can't commit?
17:34 gaal yeah
17:35 Limbic_Region can't commit to the mirror http://svn.perl.org/perl6/pugs ?
17:35 lambdabot Title: Revision 10675: /pugs
17:36 gaal isn't that RO
17:36 gaal ?
17:36 Limbic_Region dunno - that's why I asked
17:36 * Limbic_Region knows very little of how this stuff works
17:36 TimToady I think it's okay for todo() to just run and set the todos for the next test, because (presuming todo() returns ()) you can also write either of
17:37 TimToady ok($x, "fooey", todo())
17:37 TimToady or
17:37 TimToady ok($x, "fooey") unless todo()
17:37 TimToady alternately, todo returns a real todo value
17:37 gaal "ok unless todo" would mess up the plan
17:38 TimToady so then you can say $todo = todo(); ok($x, "fooey", $todo)
17:38 frederico joined perl6
17:38 gaal and really we do want to run todo tests, not skip them
17:38 TimToady the point with the unless is that it would always run because todo would always be false
17:38 gaal because we love seeing yellow :)
17:39 TimToady but I also like the todo token form.
17:39 gaal ah, so it'sl like a true && something only in reverse? :)
17:39 [particle] ok(1) xand todo();
17:39 TimToady but it's misleading, so we should probably stick with the fact that a functions arguments are evaluated before the func is called.
17:40 [particle] that way the logic is clear :)
17:40 Limbic_Region gaal - other-modules: Data.Seq Data.DeepSeq DrIFT.JSON DrIFT.Perl5 DrIFT.Perl6Class DrIFT.YAML RRegex RRegex.PCRE RRegex.Syntax System.FilePath UTF8
17:40 gaal ok() once todo()
17:40 TimToady but the token form lets us hide the todos after like currently.
17:40 Limbic_Region you suggesting I add Data.Seq again?
17:40 ludan joined perl6
17:40 gaal you already have that? weird.
17:40 [particle] one thing that gets me with perl5 is the way heredocs work
17:40 [particle] i hope p6 won't have thet same problems. let me explain
17:41 Limbic_Region yep, and same problem
17:41 gaal Limbic_Region: looking at your nopaste again..
17:41 Aankh|Clone joined perl6
17:41 [particle] is( <<'CODE', <<'OUTPUT', "really long test description", :even<more options> );
17:41 [particle] ...is typically longer than 80 chars
17:41 TimToady and for the unparenthesize form you can say ok $x, "fooey", todo :parrot<1.0>
17:41 [particle] but you can't put a \n there
17:42 [particle] because it takes the next line as part of the first heredoc
17:42 gaal argh, looks like I fixed a different problem? Limbic_Region, what r is your working copy?
17:43 Limbic_Region gaal - very recent - up to when the repo died
17:43 Dr_Pi joined perl6
17:43 gaal darn, then I don't have that code. let me see if the mirror does?
17:45 TimToady particle: you could intersperse the <<FOO with the docs:
17:45 TimToady is( <<'CODE'
17:45 TimToady ...
17:45 TimToady CODE
17:45 TimToady <<'OUTPUT'
17:45 TimToady ...
17:45 TimToady OUTPUT
17:45 TimToady "long desc"
17:45 [particle] MY EYES!!!
17:46 TimToady All I've done is rearrange your tokens.
17:46 [particle] i guess that would work, but it puts the todo/desc info pretty far from the test
17:46 TimToady well, I suppose we could solve that in P6 with "unspace".
17:47 gaal what happens in Perl 6 there if \-comments are used??
17:47 gaal s/\?\?/?/
17:47 TimToady is(q:to'CODE', q:to'OUTPUT', \
17:47 TimToady "long description"
17:47 Aankhen`` joined perl6
17:48 gaal yes -- that'll work, no?
17:48 [particle] ooh, that'll be much nicer.
17:48 TimToady comments are considered whitespace.
17:49 gaal Limbic_Region: till I find a recent source, please try adding 'Pugs.Val' to that same place
17:49 Limbic_Region okie dokie
17:50 gaal actually no, add it to exposed-modules
17:50 TimToady basically an unspaced newline only counts the line number, but disables all other line-oriented processing, including pod.
17:50 Limbic_Region grrr - ok
17:50 Limbic_Region take it out of other-modules?
17:51 gaal yeah
17:51 Limbic_Region ok - and no realclean needed - just make
17:52 gaal yeah
17:52 gaal shoudl be fastish even.
17:53 Limbic_Region um, yeah
17:53 * Limbic_Region thinks that might be it
17:53 gaal yippie
17:54 * Limbic_Region reserves kissing gaal until the make finishes
17:54 jferrero joined perl6
17:55 gaal hands off Limbic_Region, stevan might be jealous
17:55 Limbic_Region nope - I think it is the same error but I am going to do a new nopaste
17:55 Limbic_Region perlbot nopaste
17:55 perlbot Paste your code here and #<channel> will be able to view it: http://sial.org/pbot/<channel>
17:56 * gaal rolls his eyes at perlbot that isn't clever enough to interpolate $channel in that message
17:56 pasteling "Limbic_Region" at 129.33.119.12 pasted "Win32 build failure" (34 lines, 2.3K) at http://sial.org/pbot/18826
17:57 gaal Limbic_Region: do you have a file named src/Pugs/Val/Str.hs ?
17:57 Limbic_Region gaal - it seemed like it was doing more stuff at the beginning but apparently I had just ignored that stuff before
17:57 gaal if so please add Pugs.Val.Str to that list..
17:57 Limbic_Region yes
17:58 Limbic_Region the exposed
17:58 Limbic_Region or the other
17:58 gaal audreyt: please change "It compiles, ship it!" to "It links, ship it!"
17:58 gaal Limbic_Region: exposed
17:59 Limbic_Region trying now
18:03 Limbic_Region ok, not to get anyone excited but it is generating a precompiled prelude
18:04 gaal egg sellant!
18:04 * Limbic_Region kisses gaal in full view of stevan
18:05 Limbic_Region it is doing the post pugs stuff like Perl6::Container::Array so that must have done it
18:06 Limbic_Region so gaal, when repo comes back up - you going to commit?
18:07 gaal sure, if I'm awake at the time.
18:07 gaal if not, please go ahead and commit it yourseld
18:07 gaal s/d/f/
18:08 gaal hear that? I want you to go aheaf
18:09 bernhard joined perl6
18:10 Limbic_Region ok - so are both Pugs.Val and Pugs.Val.Str needed or just the Pugs.Val.Str?  I hopefully will be around but I am at work so who knows
18:16 gaal both
18:23 Limbic_Region k
18:24 Limbic_Region I should be around for the next 2 hours
18:24 gaal I'm leaving soon for about 3, and we'll see then.
18:29 kanru joined perl6
18:34 ruz joined perl6
18:46 awwaiid joined perl6
18:56 weinig joined perl6
18:57 lichtkind audreyt to the docs , i will set links like L<perl6vars>
18:58 c6rbon joined perl6
18:59 aufrank joined perl6
19:20 weinig joined perl6
19:23 ruz joined perl6
19:28 larsen joined perl6
19:44 Limbic_Region TimToady ping
19:44 [particle] TimToady++ # thinking before re-committing :)
19:45 * Limbic_Region is interested in how TimToady is committing since the repo is down
19:45 [particle] he's not committing to the pugs repo
19:45 Limbic_Region yes, I know that but
19:46 Limbic_Region but don't the rev levels correspond?
19:46 Limbic_Region case in point
19:47 Limbic_Region the last post by TimToady said r10678
19:47 Limbic_Region if you check out the mirror http://svn.perl.org/perl6/pugs/
19:47 Limbic_Region it says r10678
19:47 Limbic_Region see my confusion?
19:53 Limbic_Region apparently not
19:54 xinming joined perl6
19:54 * [particle] guesses it's svn:externals magic
19:54 [particle] i'm not really sure what to think
19:58 Limbic_Region *shrug* - seemed odd to me so I thought I would ask
20:00 miyagawa joined perl6
20:08 weinig joined perl6
20:10 weinig joined perl6
20:21 dduncan joined perl6
20:31 bpphillips left perl6
20:39 * spinclad contemplates C<< todo :tag<foo> >> in test file, C<< :tag<foo> if :pugs<6.28> >> in harness config  (or some such)
20:39 spinclad rather than require coming up with unique names; also allows tagging sets of tests.
20:40 spinclad but i see we seem to have moved toward localizing in the test files.
20:41 [particle] i'm hoping for MTOWTDI :)
20:48 TimToady a todo() function only needs to return a :todo or :!todo value to the test harness.  As a function it can take any arguments.  So I don't see why you can't introduce as many excessive levels of indirection as you like. :P
20:49 xinming joined perl6
20:52 PerlJam spinclad: what do you mean by "tagging sets of tests"?
20:53 mdiep TimToady: have you considered using <ahead> and <behind> in regexes? <after> <before> are really confusing. (I always struggle with figuring out if <after: ...> it means "after what just matched, match ..." or "make sure I'm after ... ")
20:53 SageLT joined perl6
20:53 PerlJam spinclad: just saying "these N tests are all todo<pugs-6.28>"  or something?
20:53 PerlJam mdiep++ me too!
20:54 mdiep I've talked to several people who suffer from similar confusion
20:54 TimToady we're gonna stick with the declarative definitions over the operational.
20:54 PerlJam mdiep: I think part of the problem is just language.  <after> is a look-behind.  Too much directional confusion there.
20:54 spinclad for @list { todo :tag<feature>; ok(...) };  ....  another_test: todo :tag<feature>
20:55 TimToady temp $feature = todo(); ok(..., $feature);
20:56 fglock joined perl6
20:56 fglock joined perl6
20:59 gaal ingy has his own perl backend? cool!
20:59 dduncan left perl6
20:59 TimToady the point about regex assertions is that for linguistic "flow" reasons they should all be consistently of the semantic form "match if ..."
20:59 PerlJam TimToady: It seems to me that the directionality of <before> and <after> is almost a side-effect.  Just like you got rid of the difference between ye olde \< and \> by creating \b (now <wb>), why not do the analogous thing for <before> and <after> by making the directionality a parameter of the assertion?
20:59 TimToady match if before foo
20:59 TimToady match if after bar
20:59 gaal (Block Party)++ (Michel Gondry)++ (Dave Chappelle
20:59 gaal )++
21:00 TimToady match if next char is X
21:01 TimToady switching back and forth between "match if" and "look here" is just going to be more confusing.
21:01 mdiep "match if ..." is very helpful in that regard. that should help clarify them in my mind.
21:01 TimToady well, we had directional encodings in P5, and it was still pretty confusing.
21:01 PerlJam mdiep: Geez ... how is anyone supposed to argue for change when you back down so easily?!?  ;-)
21:02 PerlJam TimToady: I believe it was only confusing because of its cryptic syntax in P5
21:02 TimToady could be.
21:03 TimToady nevertheless, I don't think they really need short huffman codings.
21:03 PerlJam agreed.
21:04 PerlJam (I just can't think of a good assertion name that works for both before and after in a zero-width sort of way)(
21:04 TimToady and I think people can get used to the declarational meaning because it is consistent.
21:05 TimToady it's the "flow" choice, in the same way that "given" is a better functor than "switch".
21:05 TimToady and "when" is better than "case".
21:05 TimToady it's too easy to just throw nouns at things that should be more verbal or predicate-like.
21:06 * mdiep just doesn't read regexes like that. or hasn't yet.
21:06 TimToady or prepositional
21:06 * [particle] verbs nouns occasionally
21:08 fglock clkao: Test.pm now compiles in 11s with optimized <%hash> (was 19s)
21:08 clkao fglock: whoooot
21:09 PerlJam fglock: heh, 11 *seconds*?  Feels like I've gone back in time just a little bit ;)
21:09 TimToady fglock++
21:09 clkao fglock: sorry, i failed to shave the yak this afternoon. still working on it
21:09 * spinclad verbalizes... or at least babbles
21:09 fglock but I can't commit - is there a problem with svn?
21:09 TimToady been down all night in .tw time
21:09 PerlJam fglock: repo was down, I guess it still is.
21:09 TimToady they should be waking up about now...
21:10 clkao gr
21:11 clkao no, it's 5am in taiwan
21:11 fglock I rsync'ed to feather as a backup
21:11 * clkao hates openfoundry with a passion
21:13 PerlJam clkao: you could get best practical to be a better openfoundry I bet  ;)
21:14 fglock PerlJam: it used to take minutes to compile :)
21:18 Juerd fglock: Heh, just know that feather's backup mechanism isn't working all that well atm
21:18 Juerd fglock: A fix is expected this week.
21:18 jferrero joined perl6
21:19 fglock Juerd: anything is better than my hard disk
21:19 Juerd fglock: feather still does have raid1 :)
21:19 Juerd But that doesn't protect against user or root fuckups
21:20 PerlJam raid1++
21:29 TimToady interestingly, openfoundry pings.  It just doesn't svn or http.
21:32 tup joined perl6
21:32 Juerd icmp echo is handled by kernel space, svn and http by user space. This symptom appears in many different interesting crashes, but the most occurring one as far as my experience goes, is that the box was out of memory and started killing processes
21:32 Juerd feather has done it too.
21:33 fglock rev v6.pm - dprofpp shows that about 25% of the time is spent loading the operator tables
21:34 fglock btw, what is the default precedence for a new operator?
21:35 TreyHarris TimToady: many OS's can kernel lock in such a way that ICMP still is working
21:36 PerlJam fglock: Is there a default?
21:36 fglock ie, ' multi infix:<myop> {...} ' without an is tighter/is looser/is equiv
21:36 TreyHarris (at my company, we use a completed ssh connection to remotely verify a machine's running, because that requires a successful connect and a fork)
21:37 fglock PerlJam: it needs to be inserted somewhere in the op tables
21:37 PerlJam fglock: yes, but another option would be to require the precedence declaration on ops
21:39 PerlJam otherwise, I think the default should be either tightest or loosest.  I lean towards tightest right now.
21:42 fglock PerlJam: yes, tightest makes sense
21:43 fglock but S03 could be more clear (or is it S06)
21:51 TreyHarris Juerd: huh, weird... I just saw your response to TimToady, which obviated mine, in scrollback, but when I typed my response, it was shown as the next thing after TimToady.  curses issue probably.  in any case, I didn't mean to just repeat you :-)
21:54 TimToady well, as it happened, I already knew it, so it didnt matter.  but that's okay.  I'd rather have redundant information over missing.
21:56 TimToady I actually hacked on the tcp/ip stack for 4.3bsd for the same secret project that produced Perl, but that hackery never made it out the door.
21:57 Schmooster clkao, openfoundry.org won't let me register. Zero  Sized Reply. is that the normal state of affairs, then?
21:57 clkao i have no idea
21:57 clkao i hte openfoundry
21:57 TreyHarris durn, i want to see a connection stuck in CAMEL_WAIT state
21:57 Schmooster is it just pants? you hate the webiste, or the idea?
21:57 fglock TimToady: in the precedence list in S03, do user-defined ops go together with 'terms'?
21:58 TimToady audreyt said something about having to ^R the web page earlier.  but that's before openfoundry went comatose.
21:58 clkao i hate everything. don't ask me about openfoundry. there's #ossf-bugteam on ircnet
21:58 fglock (unless they have a precedence?)
21:58 Schmooster hehehe I wasn't asking for a solution from you ;)
22:00 TimToady well, A6 discusses this issue, but it doesn't seem to have made it into S6
22:00 Schmooster i was sympathising :)
22:01 Schmooster TimToady, yeah, I think that was in response to my failed attempt to use it.
22:05 TimToady anyway, A6 has infix defaulting to equiv(&infix:<+>), and prefixes defaulting either to named unary or symbolic unary depending on whether they look like identifiers.
22:05 TimToady but these days I'm inclined to require the equiv for documentation purposes.
22:05 fglock TimToady: I found it, thanks!
22:12 fglock lazy-compiling the syntax categories would save some resources - I'll try it later
22:17 fglock &
22:18 fglock left perl6
22:18 fglock joined perl6
22:22 prefiks left perl6
22:29 TreyHarris is coercion described somewhere?  i've been searching the synopses to no avail
22:29 TreyHarris it's implied in several places
22:32 justatheory joined perl6
22:32 xinming joined perl6
22:32 PerlJam joined perl6
22:35 Juerd TreyHarris: With an protocol as asynchronous as IRC, lacking any kind of transaction or locking, races are bound to happen. Don't worry about it :)
22:36 TreyHarris specifically, I'm wondering what happens when a coercion fails.  exception?  or do you get the original object back? or an undefined value of the type you were trying to corce to?
22:42 dduncan joined perl6
22:46 penk joined perl6
23:05 cjeris left perl6
23:11 froh-doh joined perl6
23:11 bcorn joined perl6
23:21 cmarcelo joined perl6
23:52 xinming joined perl6
23:54 autark_ joined perl6

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

Perl 6 | Reference Documentation | Rakudo