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