Openfoundry is down, maybe until late 10 Oct GMT. RO mirror svn.perl.org/perl6/pugs/trunk/ RW (out of date) pugs.googlecode.com/svn/trunk/ | Check your feather email | spec.pugscode.org | paste: sial.org/pbot/perl6 | pugs.blogs.com
Set by TreyHarris on 8 October 2006.
00:17 mjk joined
aufrank TimToady or audreyt: any thoughts on an adverbial form for C< a => \($x, $y) > ? 00:18
ajs_home aufrank: :a($x,$y) ? 00:20
aufrank I'd like that if it were the case
00:20 mako132 joined
aufrank but I think right now :a($x) is a => $x 00:20
and this change would make it a => \($x) 00:21
maybe that's OK
ajs_home ?eval my $x=1;my $y=2; :a($x,$y);
00:21 evalbot_r14076 is now known as evalbot_r14098
evalbot_r14098 ("a" => (\1, \2)) 00:21
ajs_home Ah, I missed your \ 00:22
?eval my $x=1;my $y=2; :a(\($x,$y))
aufrank yeah, I want a literal-capture adverbial pair
evalbot_r14098 pugs: don't know how to toVV': VRef <Scalar:0xb6be0a8c>
ajs_home freaky. That worked in my (few days old) pugs 00:23
aufrank: None the less, that should be the syntax
aufrank ajs_home: yeah, someone showed that earlier. I agree that's the way to do it given the current adverbial syntax 00:25
I just wondered if there was room to add another entry to the list of adverbial forms
ajs_home I can't see that it would save much if we did. (\(...)) would become something with 2-3 fewer characters... for something that's not likely to be used very often, I don't see the advantage. 00:29
Typically captures that users interact with will be in variables (like match results) anyway.
OF outage kind of sucks... oh well 00:31
v6 seems to choke on captures right now 00:33
00:43 Odin- joined 00:46 mako132 joined
wolverian hm, the docs on spec.pugscode.org don't resize liquidly to under some specified width, which is a tad annoying if you want to read them with less wide lines 00:52
wolverian checks the css
the width is specified in pixels, which is a big no-no. 00:53
...as is the font size
01:01 lollan joined 01:14 nperez joined 01:46 jayrod joined 01:59 frederico joined
ingy stevan: ping 02:01
wolverian eh.. right, openfoundry is down 02:08
ingy seen audreyt 02:24
jabbot ingy: audreyt was seen 8 hours 33 minutes 8 seconds ago
ingy how palindramatic of her
aufrank are you calling her a palin-drama queen? ;) 02:40
audreyt @tell cmarcelo wow, great work! I've applied the "use monad, not maybe" pattern to it so we can drop-in C3 into Pugs (or any other monad) right away. see perlcabal.org/~audreyt/tmp/C3.hs 03:00
lambdabot Consider it noted.
03:01 weinig|bb is now known as weinig|zZz 03:45 Qiang_ joined 04:01 cmarcelo joined
cmarcelo audreyt++ # better style with pattern guards && "monad, not maybe" pattern tip :) 04:08
04:21 jayrod left 04:23 Qiang joined
TimToady ~.~. 04:45
lambdabot TimToady: You have 1 new message. '/msg lambdabot @messages' to read it.
04:46 drbean joined
gaal fancy typeset Haskell in papers always bunches up operators, like >> turning into Ā». But it should also unify guards to one vertical line whenever possible. 05:04
05:08 mac93 joined
audreyt gaal: still $job-bound? 05:11
lambdabot audreyt: You have 1 new message. '/msg lambdabot @messages' to read it.
audreyt @messages
lambdabot cmarcelo said 7h 2m 11s ago: hi! still not MO for Hs yet but did a little C3 MRO implementation because I didn't found any on the web. comments/ideas/suggestions welcome :) feather.perl6.nl/~
cmarcelo/C3.hs
05:15 BooK_ joined
gaal audreyt: for the day, yes 05:15
audreyt 'k 05:16
gaal am having morning drink + email check + backlog
no buyers for those shower pics eh. need to coach nothingmuch on marketing... 05:17
so, what's the svk incantation to switch to a mirror repo? I'm using a local mirror. 05:19
won't svk mi --relocate give me a "different uuid" error?
05:20 agentzh joined
clkao it works if the one you are switching to one is a mirror of the original one 05:21
gaal which neither of the /topical ones are :-( 05:24
audreyt right. 05:26
we need the new box
and run uuidgen on it
TimToady @messages 05:27
lambdabot audreyt said 21h 41m 2s ago: How does S04:927 work with [undef, undef, 1, 5, undef, 6] ?
audreyt TimToady: I think a list-context undef is a dangerous idea... 05:28
gaal spinozaUuidGen = const 1 -- different repos are but aspects of the same object
audreyt unless of could we want to train people to write [*, *, 1, 5, *, 6]
but that doesn't quite mean "uninitialized" 05:29
TimToady ordinary undef should be 1 long always. Not sure about failures
audreyt A list is of undefined
length only if it contains an undefined generator, which, happily, is
what is returned by the C<undef> function when used in list context.
So any Perl 6 function can say
return undef;
and not care about whether the function is being called in scalar or list
context.
gaal $commute &
TimToady that what when I was trying to make "return undef" mean "fail".
audreyt so perhaps that para needs to be fixed
'k
TimToady *was when
yeah.
agentzh audreyt: i'm exceedingly happy to see the tests under t/closure_traits/ now all turn green. :) 05:30
lambdabot agentzh: You have 1 new message. '/msg lambdabot @messages' to read it.
agentzh audreyt++ audreyt++ audreyt++
TimToady still thinking about s{pattern} expr and variations.
audreyt agentzh: thanks a lot for those tests
agentzh: they are very helpful to ensure I got the implemntation right
which took ~4 tries
the only thing I adjusted was that NEXT is always run even on the final loop 05:31
as long as its naturally "next"ing instead of last'ing out
I think it's saner for it to behave that way
agentzh audreyt: those tests costed me a lot of time in the summer. ;)
audreyt because it has to run before evaluating the condition, and without evaluating the condition we don't know if it's the last run
05:32 agentzh joined
audreyt 07:31 < audreyt> because it has to run before evaluating the condition, and without evaluating the condition we don't know if it's the last run 05:33
agentzh audreyt: i've read the irc log. :) 05:34
but i think an explicit last will bypass NEXT {...}, no?
audreyt that is correct 05:35
you tested for it :)
agentzh yeah. :)
audreyt and PRE/POST seems to be a handy thing to have
agentzh indeed!
i love those trait blocks very much. :)
TimToady blushes.
agentzh TimToady: :) 05:36
TimToady: will return bypass LAST {...}?
and leave?
TimToady I don't think so.
agentzh okay. 05:37
i didn't write tests for those cases.
TimToady FIRST and LAST are really traits on the loop as a whole.
audreyt currently I have it run LEAVE but not LAST
TimToady ENTER/LEAVE on the closure it repeatedly runs
audreyt on the theory that nonloop controls does not trigger loop ones
hmm.
but FIRST won't get run if the condition starts out false, no? 05:38
neither will LAST
TimToady I think it's both or neither 05:39
FIRST, LAST, and NEVER. :) 05:40
actually, doesn't python allow else on a loop? or is that some other language?
audreyt I think neither makes quite a bit more sense
the first element of a null list is undefined 05:41
neither is the last element
TimToady yeah, that way they are aimed at control points that are otherwise relative inaccessible. 05:42
one can always say something before or after the loop to get "both".
audreyt right.
TimToady s/or/and/
audreyt in which case they are not really LEAVE on any particular scope
and so "return" not triggering LAST makes some sense, I hope
TimToady I suppose, in the same sense that a goto into a loop might bypass a FIRST. 05:43
audreyt yup.
TimToady but it seems righter the other way 05:44
because people will use them to enforce invariants.
audreyt hm. then I can arrange so it triggers LAST queue explicitly
after LEAVE queue
TimToady the loop as a whole has to have a dynamic scope anyway
audreyt yes, but it has no place on the stack 05:45
TimToady or you don't have anything to capture the exceptions
audreyt it's something like
FOO while 1;
here there's an invisible yet noncapturable {} around FOO
TimToady well, sure, but whenever you have a thunk somebody's doing things to it. 05:47
audreyt nodnod. as LAST doesn't mix with LEAVE ordering anyway, either hanging it around the invisible thunk of invoke that explicitly turns out to be the same thing
TimToady been thinking a lot about thunks with respect to s {pattern} mumble 05:48
and how we can have a way forward on that without confusing people.
the s:g {pattern} syntax is getting stretched out, so I've been looking for a syntactic shim 05:49
so that we don't have to say {...} "..."
which is okay for that case, but confusing to people used to
[] and {} for quotes on the second part.
best candidates I have so far: 05:50
s{foo} -> "bar"
s{foo} = "bar"
s{foo}: "bar"
05:50 agentzh left
TimToady problem with the first is that 05:50
s{foo} -> $foo
is ambig with pointy subs
*blocks
audreyt the colon seems to be the most overloaded one 05:51
TimToady (not really, but visually)
audreyt so overload it poses least problem
;)
TimToady problem with colon is
s{foo}:qq/bar/
suddenly looks like a pair, but isn't.
audreyt an extended comma? 05:52
TimToady the only problem with = is that, as a pseudo assignment, it seems to have the wrong precedence in:
audreyt s{foo} <== "bar"
TimToady $x ~~ s {foo} = "bar"
audreyt but that too is low prec
TimToady yes.
nice thing about : is that we could actually make it a list operator
audreyt yes.
I think the :qq/bar/ part is easily disambig 05:53
TimToady s{foo}: 1..*
audreyt s{foo}: qq/bar/
which I expect people to write that anyway
TimToady oh, another possibility was
s{foo}/"bar" using / for old time's sake
but I just don't like it as well. 05:54
other problem with <== is that it's backwards from the transformative point of view
the = at least finesses that by not looking backwards.
audreyt the / has the same problem as ./method 05:55
TimToady also considered s{foo} => "bar"
nod 05:56
audreyt I like the listop :, because it's not really twisting the meaning
TimToady thing I liked about = is that we already have lots of pseudo assigns that happen at weird times.
though all to declarators at the moment
would be funny if s turned out to be a declarator of substrs... 05:57
audreyt oy...
TimToady but syntactically s{} is a macro, so it can really take anything it jolly well pleases after it. 05:58
audreyt sure, it's just the visualmetaphor 05:59
TimToady also played around a lot with s{foo}.() and friends, but just couldn't make them "think" right.
they don't look at all thunky
considered s{foo}\"foo" too
and \() of course 06:00
other advantage of = is that we could think of it as unary (scalar assign) if we only want it to collect one expression. 06:03
with :, you pretty much are expecting a list, and then you have to 06:04
put parens around the whole thing
(s{foo}: "bar"), more...
vs s{foo} = "bar", more 06:05
which can be visually stopped before the comma
and we can always use = [...] for a changing list.
audreyt s{foo}:{...} will also terminate though, but yeah. 06:06
TimToady not necessarily. 06:07
in .method:{...} it parses as .method: {...}
audreyt it is considered the final element of that list unless followed immediately 06:08
by a comma or comma surrogate.
but yeah.
nothingmuch morning
audreyt hi nothingmuch
TimToady right, so your example can stop there too.
except that it makes no sense to interpolate a closure. 06:09
if the right side is already thunked.
one thing going for bare s{foo} expr is that we could simply outlaw {expr} 06:10
to catch all the P5 mistakes.
doesn't help with [] or () though.
<> will usually work.
unless they try to interpolate 06:11
but I still think it's better to spread it out with : or =
audreyt s{foo}:(...); 06:13
hm. still has to listop problem
TimToady s{foo} = (...) is less problematic that way
audreyt as we can say it's a item=
oh well, I guess = wins on that account then 06:14
TimToady I think it stands out just a hair more too.
without being obtrusive.
audreyt but don't make s{} a declarator :)
it's a macro that parses assignment form, 'sall
TimToady why would I do a silly thing like that.
audreyt :D 06:15
TimToady and I think it compresses better s{foo}=q/bar/
audreyt sometime people is goign to want 06:16
s{foo}.="bar"
I know I've wanted that several times.
TimToady ~= ???
audreyt except it's now ~=
S{foo}.=reverse;
TimToady s{foo}+=42
audreyt yeah. 06:17
s{foo}x=3;
TimToady s{foo}=($/.=reverse)
audreyt could be handy.
TimToady so s{foo} really is a kind of self-hypering lvalue. 06:18
it definitely has some possibilities, though maybe not for 6.0 06:19
audreyt I think it's good jus tto say it looks that way
but saying "$x = s{foo};" is invalid
not all things need to be first class...
TimToady yes, it's really a metaop of some sort.
06:20 marmic joined
TimToady or a term that metas the following infix. 06:20
or sump'n
not sure how this translates to .subst though, unless second arg {$/.=reverse} and such. 06:21
or $() more likely.
audreyt *nod* 06:22
audreyt goes back to relenging -- subsets are now parsed
gaal are nested traits legal? { LEAVE { LEAVE { ... } } } 06:25
newVal allows it
but I'm not sure it makes sense!
audreyt it certainly does
gaal use case?
audreyt you can leave a leave block
LEAVE { UNDO {...} } 06:26
L/L doesn't make a lot of sense but L/U or L/Keep does
gaal okies
only a matter of time till someone writes an interpreter using only closure traits for control
audreyt sure, that's part of perl6's ferocity 06:28
audreyt ponders "a feral language"
gaal Perl's already a creole of sorts 06:29
TimToady booga booga wooga
people *are* going to want to say $obj.=s[foo] = "bar" 06:30
hmm, I wonder if we can distinguish a .subst() normal method from a .subst[] macro, since () always forcing routineness. 06:32
audreyt we certainly can
TimToady assuming subst is defined as a macro, of course, or it'd be .subst.[]
audreyt visually confusing though
mixing quotelikes with methodlikes 06:33
TimToady yeh
I'll leave the method syntax vanilla for now. 06:34
maybe we make a general policy that method macros should be ALLCAPS 06:35
.SUBST[foo] = "bar" definitely stands out...
pretty darn ugly though 06:36
maybe we can come up with something prettier someday 06:37
audreyt oy, [\\] is parsed as \ on infix \ 06:44
if we have a infix \\, how do we explicitly want \\ foled?
folded
[ \\] ?
hm, maybe not 06:45
audreyt chalks that up as "don't do that then"
TimToady < audreyt> oy, [\\] is parsed as \ on infix \ 06:55
that's incorrect. S03 says it prefers the infix.
then [\\\] is the triangular form.
audreyt okie. 06:56
TimToady That's at S03:1036
audreyt &infix:<\\> means actually \ right? 06:57
as <> respects quotes
have to write &infix:{qn'\\'} to get \\
s/quotes/escapes/
TimToady yes
actually, s[foo] x= 3 just turns into .subst(/foo/, { $() x 3 }) since assignment back to $() is already assumed. 06:59
07:00 mac93 joined 07:02 mac93 joined
audreyt [\\] is fixed 07:11
07:13 iblechbot joined 07:15 zakharyas joined
TimToady audreyt++ 07:22
I've checked in the s[foo] = "bar" spec, but we can just deprecate s[foo][bar] for this release. 07:23
actually, almost all the occurrences in pugs were s{foo}{bar}
audreyt so maybe just change them all to say that... 07:24
TimToady to say what?
audreyt I still wonder if quotelike adverbs should simply only take () for args and never other forms. 07:25
to say {}{} not [][]
what I mean is
m:adv(1){...}
but never
m:adv{1=>2}{...}
this is a generalization that can bring back
m:g{...}.
TimToady lemme sleep on it 07:26
audreyt and because m() doesn't match, neither shuld m:g(), and eople will accept that
but m:P5{...} is a compellign use case of not generalizing pair syntax with quotes, and only allow ()
sure :) sleep well
m:!adv will still be sllowed, of course.
allowed, even
07:27 polettix joined
gaal hah! I'm reading a Syn patch and see 07:43
So any Perl 6 function can say
fail "message"
and I mentally complete "and not care what monad it's in"
08:32 kane-xs joined 08:44 buetow joined 08:47 smash joined 08:48 smash is now known as smash_ 09:02 elmex joined 09:05 miyagawa_ joined 09:17 ruoso joined 09:25 cm_ joined
stevan ingy: ping 09:36
09:44 jferrero joined
TreyHarris Check your feather email | spec.pugscode.org | paste: sial.org/pbot/perl6 | pugs.blogs.com 10:24
TreyHarris openfoundry's back 10:25
gaal yay 10:32
audreyt I implemented full continuations 10:34
and full coroutines
that works across blocks
and generally rewrote the Eval monad :)
pushing back in a bit
integral audreyt++ # yet more amazing magic
audreyt integral: I realized that we need to be ContT ErrorT instead of lumping the two together
however, ErrorT is lazy in its arguments (Either), so we also need a strict Either 10:35
the rest just follows :)
integral ah, fascinating :-)
audreyt &?CALLER_CONTINUATION is now a full reentrant one
and I'm glad to report that t/unspecced/cont.t all passes 10:36
svnbot6 r14099 | audreyt++ | r14971@T: audreyt | 2006-10-09 13:14:19 +0800 10:40
r14099 | audreyt++ | * screen-nodestatus.pl: Fix parsefail.
r14100 | audreyt++ | r14972@T: audreyt | 2006-10-09 13:48:40 +0800
r14100 | audreyt++ | * Pugs.Val: Explicitly UNPACK inside the boot file, which seems to be
r14100 | audreyt++ | the only way to get 6.6 and -HEAD both recognize the unboxedness.
r14101 | audreyt++ | r14973@T: audreyt | 2006-10-09 13:58:39 +0800
r14101 | audreyt++ | * Don't unpack Val for now.
r14102 | audreyt++ | r14974@T: audreyt | 2006-10-09 14:37:29 +0800
r14102 | audreyt++ | * FindBin.pm: Correct a bogus use of BEGIN block.
r14103 | audreyt++ | r14975@T: audreyt | 2006-10-09 14:40:20 +0800
r14103 | audreyt++ | * rename the p5 script in examples/cookbook/ to -p5
r14104 | audreyt++ | r14976@T: audreyt | 2006-10-09 14:49:47 +0800
r14104 | audreyt++ | * 01-02default-variables.pl: Use infix:<??> as the example operator name
r14104 | audreyt++ | that's aliased to //, for old time's sake. The problem with infix:<qn{\\}>
r14104 | audreyt++ | is that [\\] can also be construed as a scan over infix:<\>.
r14105 | audreyt++ | r14977@T: audreyt | 2006-10-09 15:19:34 +0800
r14105 | audreyt++ | * Pugs.Lexer: Stylistic tweak. 10:41
r14106 | audreyt++ | r14978@T: audreyt | 2006-10-09 15:20:40 +0800
r14106 | audreyt++ | * Pugs.Parser.Operator: When both infix \ and infix \\ is in scope,
r14106 | audreyt++ | [\\] should parse as folded \\, not scanned \.
r14107 | audreyt++ | r14979@T: audreyt | 2006-10-09 15:21:18 +0800
r14107 | audreyt++ | * Pugs.Parser: Kluged up parser for subsets; not actually doing anything yet.
r14108 | audreyt++ | r14980@T: audreyt | 2006-10-09 15:23:37 +0800
r14108 | audreyt++ | * ext/Benchmark/t/basic.t: This is not a hash:
r14108 | audreyt++ | {
r14108 | audreyt++ | foo => sub {
r14108 | audreyt++ | ...
r14108 | audreyt++ | }
r14108 | audreyt++ | }
r14108 | audreyt++ | But this is:
r14108 | audreyt++ | {
r14108 | audreyt++ | foo => sub {
r14108 | audreyt++ | ...
r14108 | audreyt++ | },
r14108 | audreyt++ | }
r14108 | audreyt++ | Can you spot the difference? :-)
r14108 | audreyt++ | See L<S04/Statement-ending blocks/"block must be disambiguated by a trailing comma">.
r14109 | audreyt++ | r14981@T: audreyt | 2006-10-09 15:29:24 +0800
r14109 | audreyt++ | * Pugs.Class.C3: Generalized C3 algorithm, courtesy of Caio Marcelo.
r14110 | audreyt++ | r14982@T: audreyt | 2006-10-09 15:33:18 +0800
r14110 | audreyt++ | * Perl::Compiler::CodeGen::NameGen - $.foo()(...) is needed to invoke a Code
r14110 | audreyt++ | attribute, not $.foo(...).
r14111 | audreyt++ | r14983@T: audreyt | 2006-10-09 16:36:29 +0800
r14111 | audreyt++ | * lib.pm: Tidy up the code and force eager evaluation of @*INC.
r14112 | audreyt++ | r14984@T: audreyt | 2006-10-09 16:43:13 +0800
r14112 | audreyt++ | * Pugs.Prim: Force eager evaluation on list-context readdir.
r14113 | audreyt++ | r14985@T: audreyt | 2006-10-09 16:45:12 +0800 10:42
r14113 | audreyt++ | * Use MonadError instead of MonadCont for error handling.
r14113 | audreyt++ | This will help separate out continuations with exceptions.
r14114 | audreyt++ | r14986@T: audreyt | 2006-10-09 17:01:41 +0800
r14114 | audreyt++ | * Oops, fix a miscommit.
r14115 | audreyt++ | r14987@T: audreyt | 2006-10-09 17:02:11 +0800
r14115 | audreyt++ | * Rewrite the Eval monad so we control our own exception
r14115 | audreyt++ | results now, and force all actions to be strict.
r14116 | audreyt++ | r14988@T: audreyt | 2006-10-09 17:06:05 +0800
r14116 | audreyt++ | * Fix lib.pm again using uniq().
r14117 | audreyt++ | r14989@T: audreyt | 2006-10-09 17:13:29 +0800
r14117 | audreyt++ | * dir.t: @x.sort is better than [sort(@x)].
r14118 | audreyt++ | * Pugs.AST.Eval: Rewrite the Eval monad again to introduce
r14118 | audreyt++ | full continuations on top of the control-exception stack.
r14118 | audreyt++ | This is good because it allows us full continuations that
r14118 | audreyt++ | does not stop at subroutine boundaries.
10:42 agentzh joined
SamB so many changes, reminds me of "darcs pull" ;-) 10:43
svnbot6 r14119 | audreyt++ | * Pugs.AST.Internals: Introduce a different set of control
r14119 | audreyt++ | combinators:
r14119 | audreyt++ | # establish a dynamic scope to handle control exceptions
r14119 | audreyt++ | tryT $ ...
r14119 | audreyt++ | # like tryT, except you also get a "throw" for free
r14119 | audreyt++ | catchT $ \throw -> ...
r14119 | audreyt++ | The "shiftT" is discontinued as Perl6 doesn't have first-class
r14119 | audreyt++ | delimited continuations (yet), though some day I'd like to add it.
r14119 | audreyt++ | Use "retError" and "retContol" instead to fire off exceptions.
r14119 | audreyt++ | The "callCC" is now used to establish fully reentrant continuations.
r14119 | audreyt++ | The "resetT" guard is only used in coroutines now to limit the
r14119 | audreyt++ | scope of its callCC register.
agentzh audreyt is in hacking mode. yay! releng++ 10:44
audreyt SamB: it's actually "svk push" following "svk pull" in my local repo :)
SamB audreyt: ah ;-)
svnbot6 r14120 | audreyt++ | * Pugs.Prim.Eval: Change resetT to tryT.
SamB I was just saying the output was reminiscent of that "darcs pull" sometimes has ;-)
agentzh hmm...i'm wondering why the S29 on the smoke server has craps like "_SMART_LINK_34" :(
SamB its probably supposed to link to something ;-) 10:45
svnbot6 r14121 | audreyt++ | * Pugs.Prim: Restore "yield" and coroutines to their former glory,
r14121 | audreyt++ | by storing a genuine callCC register inside the subCont.
agentzh SamB: right. they're actually placeholders introduced by myself. ;) 10:47
svnbot6 r14122 | audreyt++ | * Pugs.Monad: Establish a resetT boundary upon entering
r14122 | audreyt++ | coroutines, so its "yield" will only capture the control
r14122 | audreyt++ | stack up to that point. However, the &?CALLER_CONTINUATION
r14122 | audreyt++ | there is unaffected.
r14123 | audreyt++ | * Pugs.Eval: Finish excising of resetT and shiftT and replace
r14123 | audreyt++ | them with tryT and retControl.
SamB agentzh: oh really?
agentzh SamB: yes.
SamB note that if I was challanging your statement, I'd hava had a 50% chance of having said "o rly?" 10:48
agentzh i just have no idea why the placeholders were not replaced by some HTML links...
SamB not sure if that is relevant
svnbot6 r14124 | audreyt++ | * examples/cookbook/01strings/01-02default-variables.pl:
r14124 | audreyt++ | Now that [\\] means infix \\ instead of infix \ again,
r14124 | audreyt++ | restore the example to its original state.
r14125 | audreyt++ | * t/examples/all_parse.t: examples/ all parses now!
r14125 | audreyt++ | Take away the spurious force_todo.
r14126 | audreyt++ | * t/unspecced/coro.t: Remove all TODOs.
r14127 | audreyt++ | * t/unspecced/cont.t: Fix plans, and remove all TODOs.
SamB agentzh: see, thats what I would have expected to happen too... 10:49
agentzh but the S29 page on feather looks fine.
SamB it must be some half-hearted or out-of-date processor
agentzh investigating now...
heh, maybe iblech is using an older version of Pod::Simple::HTML on the smoke server...hehe 10:56
the HTML source is different from the one on feather.
smartlinks.pl uses regexes to process HTML... 10:57
fixing...
11:05 cm_ joined
svnbot6 r14128 | audreyt++ | * Pugs.Eval.Var: In multi-dispatch, bias toward things with 11:05
r14128 | audreyt++ | longer parameter lists, even though the type distance is
r14128 | audreyt++ | otherwise equivalent:
r14128 | audreyt++ | multi f (Any *@) {...}
r14128 | audreyt++ | multi f (Any $) {...} # This always wins on 1arg case
r14128 | audreyt++ | Previously the *@ case will win, which was utterly bogus.
r14129 | audreyt++ | * ext/Set/t/operations.t: TODO the stringification test 11:08
r14129 | audreyt++ | as exported methods isn't there yet.
audreyt ...but it's there now ;) 11:11
11:12 chris2 joined
gaal audreyt: you're stresstesting openfoundry, eh? :-p 11:15
audreyt yeah :) 11:16
11:16 agentzh joined
agentzh hey, i believe the changelog for this release will be *very* lengthy. ;) 11:20
audreyt blame the test writers...
svnbot6 r14130 | agentz++ | [util/smartlinks.pl]
r14130 | agentz++ | - fixed a bug in the HTML post-processor. this patch 11:21
r14130 | agentz++ | should have fixed the smartlink placeholder
r14130 | agentz++ | (e.g. "_SMART_LINK_57") problem on the smoke server.
r14130 | agentz++ | this bug was reported by lanny++
agentzh lol
svnbot6 r14130 | agentz++ | hopefully iblech++ will update the smartlinks.pl on
r14130 | agentz++ | the smoke server.
agentzh i've just tried out stevan's Moose.pm in my XUL to PPT converter. it gave me the feeling of writing Perl 6 OO code. sweet~~ 11:24
11:24 xinming_ joined
agentzh now my perl 5 OO modules will no longer be *that* hateful. :) 11:24
audreyt good :) 11:25
agentzh mooooose~~
agentzh now has to go back to some nasty java swing code... 11:26
sigh.
11:27 agentzh left
svnbot6 r14131 | audreyt++ | * Pugs.Parser: Methods can now be exported and turned into 11:30
r14131 | audreyt++ | multis in their caller's scope.
r14132 | audreyt++ | * Set/t/overload.t: unTODO the prefix ~$foo test.
11:32 markstos joined
svnbot6 r14133 | audreyt++ | * Set.pm: Massive rewrite using shiny new OO style, instead of 11:32
r14133 | audreyt++ | lots of explicit $self variables.
r14134 | audreyt++ | * Set/t/operations.t: unTODO everything. 11:33
11:38 cm_ joined 11:40 elmex joined
svnbot6 r14135 | audreyt++ | * Set::Infinite - Repair *@x syntax. 11:40
audreyt hm, 31 unexpected successes 11:52
svnbot6 r14136 | audreyt++ | * set-infinite-recurrence.t: unTODO everything and unskip everything. 11:55
r14137 | audreyt++ | * even more unTODOs... 11:59
11:59 cm_ joined
svnbot6 r14138 | audreyt++ | * Pugs.AST: Bring (listVal :: Val -> [Val]) helper function 12:20
r14138 | audreyt++ | from newVal into oldVal land.
12:23 iblechbot joined
svnbot6 r14139 | audreyt++ | * Pugs.Prim: "take [1,2,3]" shouldn't flatten into "take 1,2,3" 12:26
r14140 | audreyt++ | * Pugs.Prim.List: "join(1, [2, 3])" shouldn't flatten into "join(1, 2, 3)".
r14141 | audreyt++ | * Pugs.Eval.Var: The previous treatment of ($) always beating (*@) 12:35
r14141 | audreyt++ | was too eager. Instead ($) should win iff it's compatible with
r14141 | audreyt++ | the argument, i.e. at least (Any).
12:42 weinig joined
svnbot6 r14142 | audreyt++ | * Pugs.AST.Internals: Use a more helpful error message to 12:45
r14142 | audreyt++ | explain cases where a prototype occured when instance is expected,
r14142 | audreyt++ | and we don't know how to autovivify it
r14143 | audreyt++ | * Set/t/basic.t: Correct a misstringification.
12:47 BooK joined
svnbot6 r14144 | audreyt++ | * array-lazy-overloaded.t: Correct a bogus isa_ok(). 12:47
masak wow, things are really happening today :) 12:49
12:50 fglock joined 12:52 cm- joined 12:53 cm- is now known as cm 12:57 Limbic_Region joined 12:59 camenix joined
svnbot6 r14145 | audreyt++ | * Cipher.pm: Repair [,] syntax to use |@x, and use array instead 13:02
r14145 | audreyt++ | of hash to hold Caesar cipher keys.
audreyt only five failing tests left in ext/ space: 13:03
ext/HTML-Entities/t/entities.t
ext/Perl6-Container-Array/t/array-lazy.t
ext/Perl6-Container-Array/t/array-operations.t
ext/Recurrence/t/recurrence.t
ext/libwww-perl/t/live.t
I need to go out for a walk now; will be nice if someone can take a look at them :)
fglock audreyt: I'm considering using ext/Perl6-Container-Array for implementing laziness in v6.pm 13:04
audreyt cool. maybe you can take a look at why it's failing miserably currently then
fglock looking 13:05
I'll need to install pugs first - too old here 13:06
13:07 rodi joined
audreyt k... bbiab 13:09
svnbot6 r14146 | audreyt++ | * Cipher.pm: Don't treat undef as Array. 13:15
r14147 | audreyt++ | * ext/: Massive change of [,] into |. 13:18
fglock make test is looking for Test.pm, but blib6/lib only has Test.pm.yml 13:36
13:47 iblechbot joined
fglock copying Test.pm to blib6/lib fixed it - Makefile bug? 13:47
13:54 fglock left
svnbot6 r14148 | audreyt++ | * Pugs.AST.Eval: unsafeCoerce# on an unpacked field was a bad idea... 14:00
r14149 | audreyt++ | * Pugs.Parser: Removed an unused binding 14:01
14:04 lisppaste3 joined
pasteling "masak" at 130.238.83.176 pasted "I looked at ext/Perl6-Container-Array/t/array-lazy.t but quickly filled up my mystification quota... here's the postmortem" (40 lines, 1.1K) at sial.org/pbot/20290 14:07
14:11 ludan joined
TimToady @messages 14:49
lambdabot You don't have any new messages.
audreyt TimToady: gather/take scopes dynamically right?
sub f { take 3 } # this makes sense, correct?
gather is unspecced in Syn, hence the question 14:50
TimToady the A might have said
audreyt A12 says it's lexical 14:51
I wonder why it's lexical...
I mean, its effect, unlike that of given/when, is dynamic
TimToady ere probably ought to be a dynamically scoped variant.
Unless it should be dynamic by default, in which case there probably
ought to be a lexically scoped variant...
audreyt curiously damian's Perl6::Gather on CPAN is dynamically scoped. 14:52
where is lexical useful, I wonder
TimToady well, the only purpose of a lexical scope would be to prevent people from doing the dynamic version, I guess.
audreyt that's like saying we should have a lexical variant of "next" 14:53
to prevent people using next outside loops...
TimToady go with dynamic then. can always do some kind of stricture later 14:54
audreyt 'k. I'll make it die if not within a gather dyamic scope
TimToady after thinking about s:g() overnight, I think I agree.
audreyt using the same mechanism as next outside loops
hurray 14:55
TimToady gather can be viewed as (potentially) spawning another thread, so given the whole purpose of that other thread may be to generate, it makes sense to have it dynamic. 14:56
must generate some coffee... biab 14:57
15:04 fglock joined 15:05 penk joined
fglock audreyt: re ext/Perl6-Container-Array - I found the same error as masak - maybe @array-as-invocant is not parsed correctly? 15:08
audreyt fglock: maybe; or maybe the local push is shadowing the global one 15:11
fglock hmm - circularity problems 15:12
audreyt can you add some trace to see if it's the case?
fglock actually, the error is - No compatible subroutine found: "&items" - looks more like a parser problem 15:13
audreyt no, that means "self" is somehow not a object 15:14
fglock the code reads @.items
audreyt instead it's an Array
fglock k
audreyt @.items is just @(self.items)
lambdabot Unknown command, try @list
masak audreyt: I tried adding a trace using :E in pugs interactive, but I didn't get very far -- seems :E creates a new instance of pugs 15:15
or something 15:16
fglock rewriting to @(self.items) seems to improve it
audreyt masak: there's ./pugd -d
./pugs -d
indeed? hmm
weird
15:19 amnesiac joined
svnbot6 r14150 | audreyt++ | * Pugs.Monad, Pugs.AST.Internals: Revamp the dynamic frame 15:19
r14150 | audreyt++ | management system. Instead of tracking explicit frames,
r14150 | audreyt++ | we now collect a set of frame markers, such as "FrameRoutine",
r14150 | audreyt++ | "FrameGather", "FrameGiven", "FrameLoop" etc.
r14151 | audreyt++ | * Regen instances.
fglock yes, @(self.items) seems to fix each of the errors 15:20
svnbot6 r14152 | audreyt++ | * Revamp the "gather" structure, after discussion with TimToady++
r14152 | audreyt++ | so that "take" is dynamic, although still fails if the callers
r14152 | audreyt++ | contains no "gather" frames.
r14153 | audreyt++ | * statements/gather.t: Reflect the fact that gather/take
r14153 | audreyt++ | is now dynamic.
audreyt fglock: commit the workaround and I'll trace the cause? 15:21
fglock ok
svnbot6 r14154 | putter++ | t/regex/p6regex/p6regex.t - enforce assumptions about input (audreyt++); added standard check for rules support; updated force_todo. 15:24
fglock audreyt: v14155
svnbot6 r14155 | fglock++ | ext/P6::C::Array - workaround @.items => @(self.items)
15:25 putter joined
fglock audreyt: btw, I got this error in my first make test - pugs looks for Test.pm, but blib6/lib only has Test.pm.yml 15:27
audreyt fglock: yeah, "make" need to happen before make test 15:28
putter strawman proposals: add two new make targets: "precompiled_test" - tweak config.yml; perl Makefile.PL; make. And "testonly" - only run the test, no make - because make test, which runs make, dumps a great deal of crud at the top of the test log. thoughts? 15:29
audreyt good idea, please commence :) 15:30
putter hmm, the preceeding few lines of irc suggest make test does not do make, but whatever it's doing, it's noisy... 15:31
:) k
15:31 thepler joined 15:33 chris2 joined
gaal moose! 15:35
TimToady m:g[I'm okay] now specced
svnbot6 r14156 | audreyt++ | * Move possiblyFixOperatorName from consumption site (lookupPad)
r14156 | audreyt++ | into production site (_Var and explicit &::()) on the assumption
r14156 | audreyt++ | that the former happens far more often than the former.
avar notes that conway did not spec L<info:*> in S26a:/ 15:36
gaal the former happens more often than the former? hmm.
audreyt *more often than the latter.
pasteling "masak" at 130.238.83.176 pasted "I must be misunderstanding the -d flag. it makes no difference for me" (10 lines, 467B) at sial.org/pbot/20293
audreyt masak: seems "use" turns off -d 15:37
for some reason. investigating
gaal audreyt: I gots me some tuits. open antlers == ?
15:38 Limbic_Region joined
audreyt chglog is by far the most antler 15:39
gaal hmm, why's smoke upload taking so long?
oi :)
audreyt oy indeed, as there are very few triage tasks left
Limbic_Region yay 15:40
TimToady @audreyt Ā»+=Ā« 42
lambdabot Unknown command, try @list
putter has anyone ever done timing tests of "Test precompiled, but not in Prelude" vs "Test precompiled in Prelude"? 15:42
audreyt havn't 15:44
svnbot6 r14157 | audreyt++ | * operator_overloading.t: Change the example from infix:<X>
r14157 | audreyt++ | to infix:<Z> in the anticipation of the new X and XX ops.
audreyt would be surprised if there's a nontrivial delta
svnbot6 r14158 | audreyt++ | * uhm, typo. 15:47
r14159 | fglock++ | ext/P6::C::Array - added comments to workaround
r14160 | audreyt++ | * One more s/X/Z/ in operators.t.
putter looks like make test and smoke precompile Test already. that plus "trivial delta" suggest editing config.yml doesn't matter, and a "precompiled_test" target is not needed. anyone have experience that editing config.yml's precompiled_modules _does_ matter?
audreyt it predates individual.pm.ml 15:48
svnbot6 r14161 | fglock++ | fixed last commit
audreyt er, .yml. though .ml would be fun
but yeah. 15:49
TimToady audreyt: can we sneak the s:g[yay] change in? seems non impactful, by and large.
svnbot6 r14162 | audreyt++ | * Pugs.Parser.Unsafe: "pugs -d" should trace statements 15:50
r14162 | audreyt++ | inside/after "use" and macros as well.
TimToady or would that need a bifurcation of the adverb logic?
audreyt sure. can you moose the dynamic gather in as well?
demerphq idly wonders if p6 will have an efficient 'goto' 15:51
TimToady why should it? P5's goto was pessimal by design. :) 15:52
[particle] notes that parrot does
demerphq really?
by design i mean.
TimToady pretty much, though "pessimal" is overstating it.
I didn't want people building efficient switch statements from labels. 15:53
demerphq i was just thinking about state machines and how useful goto is for them
TimToady P5 always scans for the label dynamically, though it does optimize by scanning outward from the current scope.
demerphq but its probably just a sign of oncoming demetia due to too much C programming. :-) 15:54
TimToady it also optimizes by scanning forward from the current location and then from the top to here.
on the assumption that most goto's are forwards.
other than that, it doesn't go out of its way to make it efficient.
demerphq ok.
TimToady because there was always going to be a switch statement someday... 15:55
P5 even had the opcodes for cswitch and nswitch, just nothing ever parsed to them.
demerphq Yes i recall you explaining that one time. 15:56
other question: ive selected (?&NAME) for a recursive call to a named subpattern. Which is different from what Python/PCRE use (partially because we are using the .NET syntax and not the Python/PCRE syntax)
gaal TimToady: duff's device *does* provide a speedup in p5, fwiw.
TimToady P4 actually did have that optimization
demerphq 5.10 will use those ops wont it?
TimToady dunno 15:57
demerphq id have to check, but robin put given into perl 5.9.x sometime back.
rgs nswitch and cswitch aren't used in perl 5. 15:58
the new-style switch in bleadperl is implemented with other ops (given)
TimToady phone...
demerphq ah.
btw, rgs i was just going to C&P my comment about the sytax for the recursive call to a named subpattern. did you see it? 15:59
rgs no.
demerphq c&p'd to p5p 16:00
TimToady sort of a pity you can't use (?<NAME>) 16:01
though maybe (?P6:<NAME>) would work for that.
demerphq thats what we use to declare the buffer.
rgs that you be a bit more symmetrical 16:02
rgs looks at the % key on his keyboard
demerphq declare: (?<NAME>PATTERN) backref: \k<NAME> recurse: (?&NAME)
fglock demerphq: I've got a p6rx-to-p5rx module under way - might be useful for experimenting with p6 requirements
audreyt fglock: as an aside, are you subscribed to p5p?
demerphq fglock: are you targetting perl 5.8 or 5.9.x?
fglock audreyt: not sure, maybe not 16:03
demerphq: 5.8
demerphq ok.
fglock demerphq: but it is not production, so no problem in targetting 5.9
demerphq i can see why, but i think you might find your life is much easier with 5.9 or 5.10 16:04
audreyt fglock: you can find out by sending a mail to [email@hidden.address]
16:04 justatheory joined
fglock audreyt: will do 16:04
demerphq personally i think it would be cool if you did, as thats where my regex updates go to first. 16:05
TimToady hmm, that smoke was very fast, pity about the 0% successful, will try realclean... 16:06
svnbot6 r14163 | audreyt++ | * Pugs.Parser.Operator: Use an very evil Int32# unsafeCoerce#
r14163 | audreyt++ | as the hash key for (TVar VRef) cache, completely bypassing
r14163 | audreyt++ | the Enum instance and the two boxing/unboxing involved.
r14163 | audreyt++ | Weakly typed language has its advantages...
r14162 | audreyt++ | * Pugs.Parser.Unsafe: "pugs -d" should trace statements
r14162 | audreyt++ | inside/after "use" and macros as well.
16:07 discordja joined
demerphq timtoady: theres been some debated about whether the perl engine can or should support (?P.... constructs, as apparently you told Guido at one point that he could "have" it for python. (Based on hearsay only) 16:07
TimToady audreyt: btw I have been notably unsuccessful in getting -prof to not coredump within the first 10 or 20 records of my dataset. Holding out for 6.6, I guess... 16:08
audreyt TimToady: is your perl5 threaded?
TimToady dunno, it's stock fedora 16:09
audreyt perl -v will show that info
TimToady yeah, P5 should probably avoid (?P
yes, threaded
audreyt because GHC 6.4 -prof+threaded is notoriously broken, so much so that they've taken out that combination in 6.6...
TimToady ah 16:10
yes, I promised Guido he could have (?P
course, with P6 all bets are off, since there's no (?...) anymore 16:11
fglock demerphq: the main bottleneck for regexes in v6.pm is the OO overhead; also, backtracking into sub-rx is not possible 16:12
16:12 Psyche^ joined
TimToady well, all we have to do is reimplement the entire P5 engine inside the regex engine, and then we'll have continuations. :) 16:13
ajs_home TimToady <P{...}>
demerphq the question we had a little was whether we should support the Python/PCRE syntax for named buffers as well as the .NET one.
ajs_home I realize the braces are just mean, but there you go ;)
demerphq fglock: what do you mean backtracking into subpatterns is not possible?
fglock actually, I was wondering if we could implement p6-to-rx instead
demerphq: such as /a <ws> \s a/ 16:14
TimToady ajs_home: huh?
demerphq i thought 5.8 supported backtracking into (??{...}) patterns. doesnt it?
fglock demerphq: <ws> is a method
demerphq but if ws is a method that resolves to a pattern... 16:15
ajs_home TimToady: Was just thinking out loud about (?P...) in P6.
demerphq anyway, 5.9.5 does, unequivocally, support backtracking into a subpattern.
ajs_home <P something> perhaps just <P ...>
demerphq: subpatterns ne sub-rx/rule 16:16
demerphq for instance $ws=qr/\s+/; /a (??{$ws}) \s a/x does.
audreyt demerphq: is $ws=qr/\s+/ still much slower than $ws='\s+' ? 16:17
demerphq er, i didnt know it ever was.
fglock demerphq: should I be afraid of the "highly experimental" notice in the docs in 5.8?
demerphq fglock: not really. ive been meaning to ask on p5p if we could tone those notices down. 16:18
they wont be removed.
their behaviour may change subtly however.
most likely for the better. but whatever.
:-)
ajs: thanks i didnt realize that
TimToady subpatterns in P6 really are full-fledged subroutine calls. They're not special-cased into the regex engine. 16:22
16:22 cmarcelo joined
TimToady where one could use a less polite term for "special-cased" :) 16:23
svnbot6 r14164 | audreyt++ | * Recurrence.pm: Fix the bug of $.previous_closure()() 16:25
r14164 | audreyt++ | written as $.previous_closure().
fglock TimToady: maybe it can be faked into a call - perl -e ' my $ws=sub{qr/z+/}; my $ax = /a (??{$ws->()}) \s a/x; $ws=sub{qr/\s+/}; print ("a x" =~ $ax ? "yes" : "no") ' 16:26
TimToady eep, my smoke tests are all getting "user error (syntax error: line 3, column 0)
which file, it does not deign to say... 16:27
fglock: sure, but it still doesn't by you backtracking into it unless main runloop does continuations
I was very nearly semi-serious about using the regex runloop instead. 16:28
16:28 weinig is now known as weinig|out, Psyche^ is now known as Patterner
fglock TimToady: isn't it backtracking in this example? 16:29
demerphq lexicals dont really work with (??{})
something you want to keep in mind.
nothingmuch @seen cmarcelo
lambdabot cmarcelo is in #perl6. I don't know when cmarcelo last spoke.
16:33 rodi joined
TimToady fglock: it's a form of backtracking, but doesn't actually let the sub do sub-ish things on the fly, since the sub is just precalculating a regex to hand back. 16:33
svnbot6 r14165 | audreyt++ | * Pugs.hs: pugs -c should not imply -d... 16:34
putter the regexp spike, whose syntax was p5 regexps plus <foo>, just converted the <foo args> into (?{dorule( C ,'foo','args')}), where C was the continuation representing the rest of the regexp. so backtracking worked properly.
fglock TimToady: got it
demerphq and in 5.9.5 it be called on backtracking.
putter but did depend on the spike engine being reentrant 16:35
demerphq it wont be
putter demerphq: was "it wont be" -> putter?
demerphq no. 16:36
putter k :)
demerphq i was saying that in /(??{ ... })/ the code only gets executed when the constructed is entered from the left, not from the right.
in hindsight im not sure if thats a useful observation....
:-) 16:37
putter punts on make test-only. Fighting MakeMaker is just not -Ofun. 16:39
cmarcelo nothingmuch: pong
audreyt m:P5{...} is now valid again. let's see how many tests it breaks...
svnbot6 r14166 | kudra++ | Jesse gives this uri for planetsix perl 16:40
fglock bbiab & 16:41
nothingmuch hola cmarcelo 16:44
TimToady is "user error (syntax error: line 3, column 0)" a yaml error? 16:46
svnbot6 r14167 | audreyt++ | * Pugs.Parser.Types: Introduce a new bracket level,
r14167 | audreyt++ | "QuoteAdverbBracket", that constraints a pair adverb
r14167 | audreyt++ | to not consume bracktes other than ():
r14167 | audreyt++ | q:n{...} # q:n(True){...}, not q:n({...}).
r14168 | audreyt++ | * Date.pm: Avoid a :P5<i> use where a .lc will suffice.
16:46 weinig|out is now known as weinig
cmarcelo nothingmuch: ola! did you try some Hs code for MO already? 16:47
nothingmuch nope, did not
however, the perl 5 version is 100% pure
so it should almost be a transliteration
svnbot6 r14169 | audreyt++ | * Pugs.Parser: Rename ruleAdverbHash to ruleQuoteAdverbs,
r14169 | audreyt++ | and let them respect the QuoteAdverbBracket level.
nothingmuch the bit i'm worried about is translating roles to type classes etc 16:48
cmarcelo that's my idea at first. however i'm not very experienced :o) what do you think can go wrong? 16:49
nothingmuch audreyt: could you give us a quick primer?
e.g. some points to avoid
etc?
audreyt nothingmuch: I wish I can but it's past midnight and my brain doesn't quite work yet :) 16:50
nothingmuch ah
16:50 smash joined
audreyt will be happy to SEE it out tomorrow 16:50
nothingmuch err
audreyt but would be happy if you two start first
nothingmuch aye
hmm
we will annoy #haskell with n00b questions =) 16:51
cmarcelo @localtime nothingmuch
lambdabot Local time for nothingmuch is Mon Oct 9 18:51:41 2006
cmarcelo nothingmuch: i'll leave work in +/- 4hr, then I'll have a few hours to start something. you told me that AG were not that important, other tests aren't too? 16:53
nothingmuch basic.t, mi.t -- they're fairly good
i'm going to get a beer 16:55
and then churn out some unit tests
that clarify what all the sub objects are about
it should be around 4 hrs worth of work
fairynuff?
cmarcelo ok. i'll go for basic.t and mi.t first. (i meant i'll leave $job in 4hrs => i think didn't understand your last msgs) 16:58
nothingmuch si
i meant i'll have something for you by then ;-) 16:59
hopefully
nothingmuch never lives up to his code promises
16:59 rodi joined
svnbot6 r14170 | audreyt++ | * examples/obfu/l33t.pl: remove :P5<i> usage and restore 17:00
r14170 | audreyt++ | it to fully working condition.
cmarcelo nothingmuch: ok :)
svnbot6 r14171 | audreyt++ | * examples/perl5/cpan-upload.pl: Restore use of rx:P5{} 17:03
putter am I correct in believing we still don't have a p5 regexp to p6 regex converter yet?
audreyt we actually do 17:04
pretty comprehensive too
it's in misc/pX/Common/P5_to_P6_Translation
not yet hooked to Pugs proper
planned, though.
17:06 bernhard joined
putter ah ok. I stumbled upon an old todo item, that someone should take an hour or few and make a converter out of Regexp::Parser, and it didn't seem anyone had done it yet. 17:07
yipes! P5_to_P6_Translation isn't p5 regexp to p6 regex translation... P5_to_P6_Translation is p5 to p6 translation!!! 17:10
audreyt yeah. works for quite a few simple cases too
it's Sage's SoC
although only the regex part is well-covered
putter: a transcription from misc/pX/Common/P5_to_P6_Translation/ASTTranslate.hs to some spec based stuff that you can then hook into Regexp::Parser will be cool 17:11
i.e. only the rx parts of it
t/regex/ aside, magic number is down to 2: 17:12
ext/HTML-Entities/t/entities.t
ext/libwww-perl/t/live.t
alas I can't stay up to finish them :) 17:13
till tomorrow then... *wave* &
putter re "t/regex/ aside", t/regex should be all working, but for any supprise sucesses from recent work
audreyt TimToady++ # gave ready assent to m:P5{...} and q:w{...}
oh, excellent. I mask them locally; will give another run tomorrow
putter++
putter good night audreyt *wave*
audreyt this release is actually looking good :) 17:14
putter indeed. :)
putter realizes he hasn't tested the "use PGE instead" env var stuff.
svnbot6 r14172 | audreyt++ | * t/02-test-pm/: synchronize with ext/Test/. 17:18
17:32 discordja_ joined
cmarcelo bbl & 17:50
audreyt :r 17:57
oops, wrong window ;)
18:08 buetow joined 18:12 larsen joined 18:13 putter joined
putter As of r14149, I see 3 t/ failures: t/blocks/multidimensional_arglists.t with a parse error, and segfaults in t/examples/all_parse.t and t/perl5/array.t. 18:15
putter considers upgrading to 6.4.2, but notes 6.4.1 is still the official dependency.
bbl &
TimToady currently smoking r14172, news in .5`hr or so 18:17
demerphq I just realized that we could use (*...) and ({.....}) in the perl5 engine with no back compat problems. 18:22
TimToady except it probably won't recognize {...} as a quantifier unless it matches \d+,?\d* 18:23
svnbot6 r14173 | audreyt++ | * Date.pm: Remove bogus "return-in-BUILD" pattern and instead
r14173 | audreyt++ | just set $!attr.
TimToady in which case the {...} match literally
demerphq oh. ok, heh. i had been wondering why (??{}) wasnt spelled ({...}). 18:24
TimToady hysterical raisins
demerphq but that doesnt apply to (*....) does it?
svnbot6 r14174 | audreyt++ | * multidimensional_arglists.t: unTODO the passing tests. 18:25
TimToady no, if I recall, I had the sense to make that illegal.
unlike some of the other greppy things.
demerphq grep lets you quantify an open bracket? weird.
svnbot6 r14175 | audreyt++ | * Pugs.Parser: Parse and recognize the @@ sigil. 18:26
TimToady no
grep assumes you meant \*
likewise for a non-sensical $
demerphq aha. right. good thinking. that does sound unwise. 18:27
TimToady unfortunately, by the time I added {n,m}, Perl had already been out in the while matching {...} literally. 18:28
s/while/wild/
durn fingers...
demerphq yes i can see the issue. thats why ive pestering everybody about the syntax for my recent changes so much. 18:29
TimToady backward compatibility is the pits in regex land...
that's why we've been careful to leave a lot of wiggleroom in P6 18:30
pasteling "gaal" at 192.115.25.249 pasted "some pugsjs failures" (23 lines, 1.5K) at sial.org/pbot/20302 18:31
svnbot6 r14176 | audreyt++ | * Pugs.Eval.Var: Rewrite the multi-dispatch resolver:
r14176 | audreyt++ | - Don't bother calculating type distance if it can't be bound.
r14176 | audreyt++ | - If it's bound, only calculate type distances for the bound non-slurpy parts.
r14176 | audreyt++ | - Named arguments are no longer rigged to always lose multi-dispatch.
r14176 | audreyt++ | - Mixed named-vs-positional arguments are now handled correctly.
TimToady yow! audreyt++
integral I'm getting "<no location info>: file name does not match module name `Main'" as a build error when I build Pugs atm. Anyone else found this? 18:33
demerphq yep. that sounds very sensible.
18:39 rodi joined
svnbot6 r14177 | audreyt++ | * Set::Infinite - unTODO and unSKIP every single test now that MMD resolver 18:40
r14177 | audreyt++ | correctly make the module work as designed.
18:42 mac93 joined
gaal integral: hmmm, sounds familiar, but I can't recall what it was. make clean? 18:42
18:43 Aankhen`` joined
integral I'm trying a realclean at the moment. I'd already tried clean+rm -r dist 18:43
18:43 fglock joined
gaal fwiw 14175 builds ok here 18:43
integral: nopaste whereabouts this happens? 18:44
or grep the irc log...
integral gaal: right after running Setup for the main Pugs cabal package it appears
18:46 xerox joined
gaal integral: ah, I remember what gives this error. do an svk st and make sure you didn't mangle the first character of a .hs file 18:47
integral o_O `svk diff src` is showing no difference for me, so I hope that's the case
TreyHarris TimToady: "is copy" on formal params is currently a noop for non-autoboxed types. will that always be true (at least for non-value types)? or will "is copy" eventually clone non-value types? 18:48
gaal integral: may be one of the autogen files?
oops phoen
*phone
integral watches the build, I'll find out in a minute 8-)
ugh, realclean hasn't solved it, so I'll check all the .hs files now :) 18:50
ah, my src/DrIFT/XML.hs is missing a module declaration at the top 18:52
gaal hmm, why didn't svk st show that? 18:53
integral hrm, I've svk reverted it and it still doesn't. :-/
gaal okay, please strace -fF -o /tmp/xx make pugs
and find the offending file :)
integral hmm, the one on openfoundry also doesn't have a module statement
gaal huh, neither does the one here. 18:54
integral I can't strace, I'm on OS X 10.3
gaal there's another tool... ktrace? 18:55
18:55 elmex joined
gaal or just some file monitor 18:55
'svk st util' too 18:56
fglock gaal: I'm reading Test.pm.yml - would you help me with a few things?
gaal I'll try :-) 18:58
svnbot6 r14178 | audreyt++ | * DrIFT.XML: Add the missing module statement.
TimToady TreyHarris: good question. we could certainly extend it to other types provided the definitions of "clone" and "rw" are clear.
as it is, "readonly" is a bit hand-wavey.
what does it really mean for a non-value type to be "writable"? 18:59
fglock I see ( Var "&infix:~" ) - does "Var" mean it has to lookup &infix:~ at runtime?
gaal yes
it's App Exp (Maybe Exp) [Exp] 19:00
TreyHarris well, the MOP could snapshot the object and throw an exception at runtime if the repr changes. i suppose then objects would have to have some way of saying an given operation should be considered a read but may change the repr or certain attribs may change without "writing" to the object (e.g., caches) 19:01
fglock about ( Ann ... ) - is it meant to attach a (Pos) node?
gaal that is, apply to an Exp (with an invocant, maybe) [and an Exp list]
TimToady yay, r14172 exceeds the purity of Ivory Soap!!!
it's all very transactional...
and also related to "old" in PRE blocks. 19:02
*PO
svnbot6 r14179 | audreyt++ | * Pugs.Bind: Reject named arguments that cannot find a matching named
r14179 | audreyt++ | parameter or slurpy hash.
TimToady *POST
svnbot6 r14179 | audreyt++ | sub f () {...}
r14179 | audreyt++ | f(y => 1); # used to bind silently, but now no more
gaal fglock: Ann[otation] nodes decorate other Exps with stuff like context, position, and pragma
fglock: this is no longer how it works in newVal though.
also, in newVal there are two application nodes: 19:03
integral hmm, it's my Pugs.CodeGen.PIR.Prelude that's doing it; it's an empty file
gaal ...three, actually..
data ExpControl = CCall ID ExpCapt 19:04
TreyHarris TimToady: yes... you presaged me :) i have a 90%-finished proposal to normalize C<but>, C<is copy>, DBC "old", and cloning... I'll p6-l in the next couple days. I just wanted to be sure you didn't already have a clear direction that just hadn't been committed to synopses yet.
gaal | CCallDyn Exp ExpCapt
| CApply Exp ExpCapt
19:04 mdiep joined
gaal (sorry for the messy indent) 19:04
this is commented in src/Pugs/Val/Code.hs
TimToady I would love some cognitive help.
(I need all the cognitive help I can get...) 19:05
fglock gaal: looking
gaal fglock: the idea being that if you have { some code }.(), there shouldn't be much lookup, just direct invocation
svnbot6 r14180 | audreyt++ | * t/blocks/multi_named_vs_pos.t: unTODO several test, and mark
r14180 | audreyt++ | the rest :todo<unspecced>. The unspecced part is:
r14180 | audreyt++ | multi f ($x) { 1 }
r14180 | audreyt++ | multi f (:$x is mandatory) { 2 }
r14180 | audreyt++ | f('foo'); # binds to 1
r14180 | audreyt++ | f(x => 'foo'); # binds to 2
r14180 | audreyt++ | IMHO it's okay to have one shadow the other here, but the
r14180 | audreyt++ | test says otherwise...
rodi Good G-d Almighty, audreyt is on a tear. I'm in awe. audreyt++ 19:07
TreyHarris TimToady: one thing that would help me finish the last 10% is to know how you were thinking that a class would go about defining a value type. I can see ways reading between the lines (er, ^LINES?), but particularly wondered whether you'd be okay with a declarative ("i can ask that class/object if it's a value") rather than a behavioral ("if this object's .WHAT matches that object's .WHAT, then they're the same object/value") approach.
erm... that was kind of muddled
fglock "Maybe Param" means "Param" is optional?
gaal fglock: yes
it's like a pointer in c, it's allowed to be NULL. 19:08
TimToady certainly it should at least look declarative
gaal without the Maybe, Haskell's type system guarantees you can't have NULL there.
TimToady if only by calling .HOW stuff at compile time
19:08 Aankh|Clone joined
TreyHarris TimToady: yepyep 19:09
gaal integral: do you have DrIFT set up for pugs?
integral gaal: hmm, probably not, or if I did it was ages ago 19:10
(and maybe with a previous GHC version even)
gaal integral: I'm wondering how you ended up with a zero InstESCdd oh, you said Prelude, not Instances
TimToady now smoking r14180 19:11
eta 45 min 19:12
integral hmm, what should the "inline_prelude_source" config var be?
gaal obsoleted :) 19:13
integral ah, that's why it's unmentioned in the template :-)
what's the difference between Pugs/CodeGen/PIR/Prelude.hs and Pugs/Prelude.hs? 19:14
gaal it's from a year ago when we didn't have precompiled prelude, and wanted the pugs binary to embed the Prelude.pm source
(it=="inline_prelude_source")
integral (the latter's fine, the former's the problem). Maybe my parrot's broken?
svnbot6 r14181 | audreyt++ | * currying.t: unTODO the passing test that tests you can't
r14181 | audreyt++ | curry a nonexisting named param, and remove the one test
r14181 | audreyt++ | that says .currying takes named arguments only, as the spec 19:15
r14181 | audreyt++ | no longer says that.
integral ugh, I've just realised that I hadn't setup PUGS_EMBED correctly
gaal I don't see how that can cause that, actually. Makefile.PL:602 19:16
should Just Work
it's a simple templating thing, doesn't depend on parrot or embedding 19:17
fglock clkao: ping
integral hmm, yes
gaal I'm guessing that you interrupted gen_prelude once before it produced any output 19:18
and then the makefile rule never regenned it
clkao fglock hi
integral has just removed it again, and seen make regenerate it, but it's still empty!
gaal right, come to think of it make_clean does rm it 19:19
integral hmm, it's running "src/gen_prelude Pugs.CodeGen.PIR.Prelude < src/perl6/Prelude/PIR.pm > src/Pugs/CodeGen/PIR/Prelude.hs" which isn't producing any errors but it leaving the .hs file empty
fglock clkao: did you see this problem with Data::Bind and perl5 references? sial.org/pbot/20232
lambdabot Title: Paste #20232 from "fglock" at 200.17.89.80
gaal integral: rm src/gen_prelude && make src/Pugs/CodeGen/PIR/Prelude.hs 19:21
integral nope, still empty
svnbot6 r14182 | audreyt++ | * ext/DateTime/t/basic.t: unTODO everything.
gaal echo "elkelkelk" | src/gen_prelude Moo 19:22
clkao fglock: uhm. don't have an idea out of my head. i will look into it lter
gaal what does that give on stdout?
integral nothing!
fglock clkao: thanks
integral maybe my GHC is badly broken :-/
gaal it's a pretty straightforward .hs file! 19:23
integral comments out the source until it works
gaal ghci src/gen_prelude.hs ?
integral gah, it's working now :-/ 19:25
I have absolutely no idea why it wasn't working before, unless clean misses it somehow 19:26
gaal shouldn't.
lines 103, 107
of Makefile.PL
integral *nod* oh well, it's all working now
gaal vird. 19:27
19:27 mdiep joined
buu Who? 19:50
Where?
erxz.com/8002/ 19:51
lambdabot Title: Interactive Perl Shell
TreyHarris whoops. "make smoke" is *not* the same as "make smoke-upload"
integral buu: it was andara (not here?) who was interested 19:52
fglock what is the Snn for interpolation of Pair and Hash into lists? 19:55
pugs explodes %hash into %hash.kv, but $hash into $hash.pairs 19:57
20:00 rindolf joined
rindolf Hi all. 20:00
buu haha
integral: Someone made it unhappy =[
integral: poco-simple-http has a really hilarious habit of dying when you access non mapped urls. 20:01
rindolf ingy: you can upload IO::All now.
TimToady fglock: a list interpolated %hash doesn't do .kv in pugs 20:03
buu rindolf: Did you check out my shiny?
TimToady and $hash should never interpolate into a list as anything other than a single item.
rindolf buu: your shiny what? 20:04
fglock ?eval my $p= a=>3; my %h = ( 1,2,$p ); %h.perl # interpolates Pair.kv ? 20:05
20:05 evalbot_r14098 is now known as evalbot_r14182
evalbot_r14182 "\{(\"1\" => 2), (\"a\" => 3)}" 20:05
integral buu: surely adding some eval{}'s or catching the DIE signal would solve that?
TimToady ?eval my %foo = :a(1), :b(2); say join " XXX ", %foo; 20:06
evalbot_r14182 OUTPUT[a1 XXX b2 ] Bool::True
20:06 wilx joined
TimToady that shouldn't interpolate $p as other than a hash object. I don't think the assignment should unpack it either. 20:07
fglock ?eval my %p = { a=>3, b=>4 }; my %h = ( 1,2,%p ); %h.perl # interpolates %p.kv ?
evalbot_r14182 "\{(\"1\" => 2), (\"a\" => 3), (\"b\" => 4)}"
TimToady nothing ever interpolate .kv by default 20:08
fglock ?eval my $p = { a=>3, b=>4 }; my %h = ( 1,2,$p ); %h.perl # different result if $p instead of %p ?
evalbot_r14182 "\{(\"1\" => 2), (\"a\\t3\" => (\"b\" => 4))}" 20:09
TimToady ?eval my %p := { a=>3, b=>4 }; my %h = ( 1,2,%p ); %h.perl
evalbot_r14182 "\{(\"1\" => 2), (\"a\" => 3), (\"b\" => 4)}"
fglock mine is the one with the tab :)
TimToady ?eval my %p = ( a=>3, b=>4 ); my %h = ( 1,2,%p ); %h.perl
evalbot_r14182 "\{(\"1\" => 2), (\"a\" => 3), (\"b\" => 4)}"
TimToady %p = {...} is a single key without a value. 20:10
buu integral: Well, I needed to add a handler that would actually match 20:11
Magic number checking on storable string failed at ../../lib/Storable.pm (autosplit into ../../lib/auto/Storable/thaw.al) line 366, at server.pl line 236
How entertaining
fglock ?eval my $p = { a=>3, b=>4 }; $p.WHAT
evalbot_r14182 ::Hash
rindolf buu: your shiny what? 20:14
fglock ?eval my %hash = ( a=>3, b=>4 ); my $scalar = { c=>5, d=>6 }; my %h = ( 1,2,%hash, $scalar ); %h.perl ~ %hash.WHAT ~ $scalar.WHAT 20:15
evalbot_r14182 "\{(\"1\" => 2), (\"a\" => 3), (\"b\" => 4), (\"c\\t5\" => (\"d\" => 6))}HashHash"
fglock why does %hash interpolates different from $scalar ? 20:16
TimToady because it has a % sigil
rindolf TimToady: :-)
TimToady use %$scalar
fglock so it's a compile-time thing 20:17
TimToady $ is a request to treat the thing as a single item, not as a complex item, even if it's complex underneath.
it always takes something explicit to get at the parse, such as .{} or % 20:18
*parts
fglock actually looks ok in v6.pm - I thought it was a bug :)
buu rindolf: erxz.com/8002/
fglock TimToady: thanks 20:19
20:19 ezraburgh joined
TimToady {} and [] in list context also assume that they are there to produce a single item, since you could just omit the brackets to get the other behavior 20:19
fglock my %hash = ( a=>3, b=>4 ); my $scalar = { c=>5, d=>6 }; my %h = ( 1,2,$%hash, $scalar ); %h.perl 20:20
?eval my %hash = ( a=>3, b=>4 ); my $scalar = { c=>5, d=>6 }; my %h = ( 1,2,$%hash, $scalar ); %h.perl
evalbot_r14182 "\{(\"1\" => 2), (\"a\" => 3), (\"b\" => 4), (\"c\\t5\" => (\"d\" => 6))}"
fglock $%hash still goes into pairs 20:21
TimToady %$, not $%
fglock can't use $(..) to mean scalar context?
rindolf buu: my $s = ""; for(my $u=0;$u<10;$u++){$s .= "$u\n"}$s; - I'm getting 0. 20:23
buu: but nice.
TimToady could be a buglet.
buu rindolf: It's a bit of a bug with how I handle output. 20:24
rindolf: The 0 was the first result.
rindolf buu: I see. 20:26
demerphq heh, i just realized i dont need a (?DEFINE:...) 20:30
(?(?{0})...) does the same thing 20:35
20:36 jferrero joined
svnbot6 r14183 | fglock++ | Pugs-Emitter-Perl6-Perl5 - added comments on Seq->Hash conversion 20:36
20:37 mac93 joined 20:42 larsen joined
TimToady seems like (?:...){0} oughta work too 20:47
for that matter, seems like (?(0)...) oughta work. 20:50
svnbot6 r14184 | fglock++ | Pugs-Emitter-Perl6-Perl5 - more comments on Seq->Hash conversion 20:51
20:56 etzel joined
TimToady ah well, it doesn't like (?(0)...) 20:57
rindolf TimToady: has the smoke time been reduced eventually? 21:09
TimToady it gained back the 20 minutes it lost a couple days ago. 21:10
so I'm back to 48 or 49 minutes.
21:15 mac93 joined
rindolf TimToady: by "gained back" do you mean it now executes in *less* time? 21:23
21:25 polettix joined 21:26 fglock left
TimToady it went from 48 to 68 minutes and back to 48. 21:33
rindolf TimToady: I see. 21:37
21:52 putter joined, wilx joined
putter S05 says "The \p and \P properties become intrinsic grammar rules such as (<alpha> and <!alpha>)." Wouldn't that be better as "<-alpha>"? Even if the \P association isn't intended, the sentence layout makes it rather strong. 21:55
camenix quit 22:01
22:01 camenix left
TimToady yeah, <!alpha> is essentially a <!before <alpha>> 22:06
22:11 Limbic_Region joined 22:26 mako132 joined 22:32 mac93 joined 22:38 dduncan joined
putter Can character property classes take an argument? Eg, <+alpha_variant($only_on_tuesdays)-[q]> or somesuch. 22:42
TimToady @tell audreyt my pugs-prof still segfaults even with a non-threaded perl :(
lambdabot Consider it noted.
TimToady in theory they could, but only in theory.
justatheory squirms uncomfortably 22:43
TimToady lol
22:47 cmarcelo joined 22:54 polettix joined 23:00 mako132 joined
clkao ok, let me take a look at data::bind 23:14
23:15 lollan joined
Limbic_Region wow - 99.18% on latest smoke 23:22
clkao whoot 23:23
Limbic_Region @tell audreyt test 12 of ext/Config-Tiny/t/basic.t is failing though the output is correct. My guess is difference of \n versus \r\n 23:28
lambdabot Consider it noted.
23:34 weinig joined 23:39 demerphq joined
putter <+<alpha>> is no longer valid, yes? So the distinction between external and internal negation is gone, yes? <-<alpha>> vs <+<-alpha>> 23:42
is there any form of external negation? ie, you have <foo-bar+hee-qux> , can you negate that in any way other than going through and flipping all the signs?
23:46 shobadobs joined
TimToady <!foo-bar+hee-qux> 23:47
but then you have to traverse the . yourself
because ! turns it into lookahead
putter with a trainling dot I assume... righ
<+<alpha>> is gone?
TimToady yes
putter ok, will update tests. thanks :) 23:48
TimToady np
biab &
clkao audreyt: first failed test in perl5/array.t 23:49
is(eval(q{$retarray.elems}), @array.elems, 'retro elems');
why is $retarray suppose to have .elems ?
why is $retarray suppose to have .elems ? 23:50
gr, sorry
oh, nevermind. it's the object coming back again. misread
23:52 bsb joined