pugs.blogs.com | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | <stevan> Moose... it's the new Camel ":P | .pmc == PPI source filters!
Set by Alias_ on 16 March 2006.
00:01 justatheory joined
dduncan a clean rebuild had no affect ... but not surprising, as I did that several times for various reasons lately 00:14
will try explicitly setting the heap size ...
audreyt it might be parser became too slow after the recent tweaks in comment syntax 00:18
I'll check that
svnbot6 r9946 | audreyt++ | * Net::IRC - update syntax to use the long dot. 00:28
dduncan audreyt, I'm not sure its strictly that, as I've seen this slowness for a few weeks now, long before that discussion 00:30
I'm also beginning to wonder if it is specific to 'make test' or the test/smoke ... or to loading modules
but you could be right about it being parsing related, since the precompiled prelude opens quickly 00:31
that is, the prelude loads in about 4 seconds
audreyt I think it's parsing related 00:32
dduncan does the problem affect you too?
audreyt yup 00:33
dduncan eg, ext/Test make test takes 200 seconds
well, in the mean time I probably won't test or compile my new perl 6 code, but write it by eye so its mostly right 00:34
00:36 evalbot_9946 joined
audreyt ok. I'll let you know when I've got that fixed 00:36
I think the straightforward fix is to take off all the "try" 00:39
in the parser
and see which things break
and fix them ;)
TimToady++ for observing it
("try" is the evil "I may backtrack from here anytime" thing in parsec) 00:40
lichtkind ?eval (2|8) == (2|3|5|7);
evalbot_9946 bool::false
lichtkind ?eval any(2|8) == (2|3|5|7);
evalbot_9946 bool::false 00:41
audreyt ?eval any(2,8) == any(2,3,5,7)
TimToady do, or do not. there is no try.
evalbot_9946 bool::false
audreyt ugh, don't tell me that junctions are suddenly broken
?eval any(1,2) == 1
evalbot_9946 bool::false
TimToady oopsie 00:42
audreyt ?eval any(1,2) != 1
evalbot_9946 bool::false
TimToady ?eval any(1,2) > 1
evalbot_9946 bool::false
TimToady consistent, I'll give it that... 00:43
lichtkind :)
TimToady ?eval all(1) == 1
evalbot_9946 bool::true
TimToady ?eval all(1,2,3) == 1
evalbot_9946 bool::false 00:44
TimToady ?eval all(1,2,3) != 4
evalbot_9946 bool::true
TimToady ?eval one(1,2,3) == 1
evalbot_9946 bool::false
TimToady that's also broke 00:45
audreyt: what do you think of rxen default to backtrack, rules don't? 00:46
audreyt true ((1|2)==(2|3)) 00:48
Juerd ?eval any(1,2) 00:49
audreyt ?eval true ((1|2)==(2|3))
evalbot_9946 1
audreyt TimToady: I think it makes perfect sense
evalbot_9946 bool::true
audreyt ?eval (1|2)==(2|3) 00:50
evalbot_9946 bool::false
audreyt ?eval true((1|2)==(2|3))
Juerd I thought longest-match was implemented via backtracking. How is it really?
evalbot_9946 bool::true 00:51
Juerd It occurred to me that backtracking makes no sense for that
TimToady backtracking almost never makes sense in a parser.
Juerd (It would be pre-emptive backtracking :P)
Agreed 00:52
audreyt so junctions work actually
it's just evalbot printing out
(bool::false | bool::true)
as bool::false
for some reason
probably bad reason
Juerd ?eval any(42,15) # same reason?
(42)
evalbot_9946 15
audreyt aye
TimToady if $result == bool::false { say bool::false }
Juerd Oh, 15
It .picks automatically?
audreyt no 00:53
15 sorts first
Juerd Oh
audreyt same reason as false
lichtkind TimToady can i say any @number == ... ?
audreyt it's internally an ordered set
Juerd I see
So when stringifying, it just takes the first?
lichtkind: You should be able to. Though use parens around @number, or it'll not be what you meant. </guess> 00:54
lichtkind Juerd yes becaus that would make much fun and sense to me 00:55
TimToady yes, any(@number) makes a junction.
lichtkind thanks
TimToady but it's a list operator, so Juerd is right, you need the parens.
or @number.any == ...
lichtkind i see 00:56
i begin to like perl6 :)
Ƥhm love
:)
Juerd Ƥhm looks funny :) 00:57
audreyt hm,
parsec thinks that
say 1; 00:58
requires backtracking
because it's not
say => 1
and hence must backtrack from the => rule
TimToady: reasonable?
TimToady that one's probably okay, though in p6 rules it'd be better handled with a lookahead on an ident.
lichtkind Juerd Ƥhm ist the german standart phrase for stuttering 00:59
audreyt after an ident, that is
TimToady yes.
Juerd lichtkind: I guessed that :)
audreyt but does it commit after the => ?
TimToady well, it still has to return both the "ident" and the => tokens somehow, I presume... 01:00
but yes, the p5 lexer would certainly commit at that point.
audreyt ok, I'll do it with a lookAhead then 01:02
TimToady and for P6 we've said that => absolutely quotes any bare ident on its left. 01:03
even if it's a keyword.
audreyt sees a dramatic speed gain in parsing sanity tests immeidately 01:04
TimToady++
01:04 Khisanth joined
TimToady so it was basically taking a continuation on every identifier before... 01:05
audreyt aye
ok, it's dying on 01:07
my sub ...
complaining that it must backtrack over treating "sub" as a type name
as in "my Sub $x"
TimToady we aren't allowed to have types unless they're already declared, so how can it be deciding that sub is a type? 01:08
audreyt ack. suppose we have sub as a type? 01:09
TimToady then we still recognize sub as a declarator first...
gotta have a few reserved words... 01:10
and surely declarators are about as reserved as they come.
theorbtwo You think naming a type sub should be illegal?
Or, for that matter, a sub my? 01:11
TimToady No, but expecting it to work in "my sub" should be without saying "my ::sub".
theorbtwo Hm, I think I can deal with that. 01:12
Juerd my my my my $foo;
TimToady I have no problem with making people go through sigilish contortions if they want to declare things that are the same name as declarators.
Juerd # mine!
TimToady ?eval my my $foo;
theorbtwo my own $previous 01:13
evalbot_9946 undef
TimToady ?eval my my my my $foo = 1; $foo;
audreyt (currently the concept of "known type" only applies to bareword literals)
evalbot_9946 Error: unexpected "m" expecting "#", variable name or "("
audreyt hm 01:15
() is a token that means "an empty list"
TimToady in list context, at least 01:16
audreyt in scalar context it still means that...
my $x = ();
it's just an object
Juerd A list in non-list context is HARD for my brain
audreyt in any case, currently for the parser it is not a "parenthesized nothing"
as we said parenthesized anything is itself
but () is an exception 01:17
lichtkind juerd sorry still having problems with installing
?eval my $wahr; $wahr ?^= 1;
Juerd Why would () be legal outside list context?
evalbot_9946 Error: No such sub: "&infix:?^"
audreyt so parsec is complaining that it must "backtrack"
Juerd Does it have any use?
audreyt between these two interpretations
TimToady (1+2)*3
Juerd TimToady: I meant empty ()
I assume it just means "undef" in non-list context, and I think it's much wiser to spell "undef" if that's what you mean. 01:18
TimToady return; is essentially return ();
audreyt Juerd: I think otherwise... 01:19
Juerd audreyt: What exactly do you think, then?
audreyt my $x = ();
TimToady there are probably lots of places where you can't tell whether () is going to be in list/scalar context till you bind
audreyt the class of $x ought to be List, or Tuple, or something
Juerd In your opinion, that's better than my $x = undef?
A List class is also too hard for me.
TimToady: That makes sense 01:20
audreyt ok, I mean
$x = (); and $x = (,)
should probably mean the same thing
Juerd I think (,) is prefix comma, which doesn't exist?
Or term comma, same thing
audreyt true. how else am I to write an empty list other than () then :) 01:21
TimToady p5 calls it a syntax error
audreyt $x = (1,2); # $x.elems == 2
$x = (1,); # $x.elems == 1
Juerd Well, in list context, it's perfectly normal to have a list, and I'm not arguing that () should be illegal in list context.
audreyt $x = (); # $x.elems == 0
theorbtwo An anime smile with crossed eyes and a broken nose? 01:22
Juerd I just think that as soon as it can be determined that () isn't in list context, a warning may be useful.
lichtkind is ?^= illegal or not implemented?
theorbtwo audreyt: What's wrong with $x=[] for that?
audreyt theorbtwo: that makes $x.push(3) legal
Juerd audreyt: What's $x then? And why any List class, when we have Arrays?
theorbtwo Hm. 01:23
audreyt Juerd: because, well, Arrays are mutable?
and it might be easier (and lighter weight) to pass around lists instead of array containers?
Juerd Sure, but lists historically couldn't be named. I liked that.
I think there is a huge gap in my 5-to-6 knowledge, and I can't explain where it came from. To me, a world without references, and with exposed lists, just doesn't work yet, because I know none of the semantics. 01:24
TimToady For most scalar purposes, a null list stuffed into a scalar will eventually get you your warning anyway.
Juerd TimToady: But how is it a *list* without being in list context? 01:25
() isn't a list constructor, I thought.
Or is empty () special, in that it is?
audreyt that was what I was asking (and proposing that it is) 01:26
lichtkind godnight
audreyt infix list-assoc comma is definitely list constructor.
Juerd lichtkind: Schlaf gut
lichtkind juerd danke
audreyt but (,) is illegal
TimToady schlop shoen
audreyt so there should be something in its place, and () is natural
Juerd audreyt: Can you describe List a bit more for me? Is there anything else, besides being immutable, that differentiates it from Array? 01:27
TimToady I think it's okay for () to be a null list. At worst, what you end up with a funny way to write "0 or undef"
audreyt Juerd: okay. a List is implemented as a Tuple 01:28
which has fixed number of items, all fully evaluated
or a Range, which is evaluated lazily
or some other mixture subclasses. 01:29
Juerd Do Lists have anything to do with list context?
audreyt a List object flattens under list context.
Juerd i.e. is the RHS of "my @foo = ..." a List?
audreyt yes. the RHS is evaluated under list contexts
and concated into a single List object 01:30
Juerd So everything that is in list context, is in a List object, but you can also have List objects without list context.
audreyt or rather
my @foo = 5;
this evaluated 5 in list context
effectively casting Int to List
which uses the default singleton cast 01:31
i.e. 5 becomes (5,)
which is then stored into @foo
Juerd Can an @-sigiled variable be a List instead of an Array?
audreyt yes. sigil has nothing to do with what it may be bound
only what it is bound by default
@x := (1,2,3); @x.push(4); # fails
Juerd Does that mean @foo could be a scalar?
audreyt @x := [1,2,3]; @x.push(4); # works 01:32
@x := 5; @x.push(6); # fails, but only because Int doesn't implement push
Juerd Hmm
audreyt Juerd: I really don't see why not; sigils are context hinters 01:33
it may make sense to restrict it in the compiler
but conceptually I don't see much difference underneath.
Juerd Does a List in $foo flatten in list context, or does the $ sigil prevent that?
TimToady $ prevents it 01:34
audreyt the flattening is controled statically, and where a hinter is visible, you use that hinter
the List in $foo is runtime knowledge
Juerd I see
audreyt so $ wins
Juerd It's starting to make sense
TimToady things which have both scalar and list natures have to use the hints
consistently 01:35
Juerd And then indeed () would have to mean empty list, because (,) is ugly and would otherwise also be special.
TimToady $foo always means scalar nature even if the insides are plural
yes
Juerd Okay. Lots of syntax is flowing through my mind now, and I can notice that I'm (not entirely consciously) testing this new knowledge against what I knew already. 01:36
This is probably a good moment for me to go to bed
TimToady my smoke took 152 minutes. 01:37
when you settle down the parser again, I can run another and see what the diff is
Juerd What were the reasons again for not making (...) a list constructor? 01:38
audreyt because (1+2)+3 is too common
I mean (1+2)*3
and trailing comma makes singleton lists simple 01:39
Juerd But couldn't a List evaluate to its only element if it has only one?
TimToady on the other hand, one could claim that a singleton list always promotes to its single value in scalar context
audreyt it could, but what of method calls?
(1+2).moose
is it calling a list method or a int method?
so, probably not a good idea to mix both forms. 01:40
Juerd Well, in the old world, objects were always references, and references were scalars, so the LHS of . would be forced into scalar context.
TimToady the left side of dot is always scalar.
even in @foo.sort
Juerd But I don't know what that story looks like in current thinking...
audreyt well, but that means
(1+2,).sqrt
would be calling Int.sqrt
(1,).elems
would becalling Int.elems
probably a bad idea, really. 01:41
I'd much rather (1).elems calls Int.elems and (1,).elems calls List.elems.
TimToady I'm okay with continuing to overload (...) that way 01:42
Juerd It's a shame () has three meanings.
audreyt and really it's only the bare () literal is overloaded
Juerd We have "hash { }" and "sub { }". Would "array [ ]" and "list [ ]" make any sense?
TimToady ASCII just doesn't have enough brackets... I've noticed this before...
audreyt since otherwise it's the infix , taking control
an alternative would be allowing (,) but I think it's ugly :)
Juerd (,) is harder to explain too. 01:43
TimToady Actually, we changed it to hash() at some point or other.
Juerd hash(*@)?
TimToady yes, basically
Juerd Hm
That feels very notperlish. 01:44
clkao *yawn*
TimToady could MMD to hash(&) I suppose
Juerd 'cause I'd prefix "hash" to disambiguate an existing {} when I realise it could be ambiguous
audreyt (I've tripped over this for countless times too) 01:45
Juerd Hmmm
Now that we no longer have references, we no longer have dereferencing. Doesn't that enable us to use more sigils, by re-using existing ones? 01:46
i.e. $$, @@, %%
audreyt well, $$x still means castng the value of $x into Scalar
TimToady We still have dereferencing, just no references. It's like the radio without the cat
Juerd Okay. I'll ask about that later, and go to bed first :) 01:47
audreyt it's just the value of $x may be another Scalar object now
or a Capture, I mean Arguments, I mean Match
(or all of the above)
Juerd I was thinking maybe $$, @@ and %% could mean immutable scalar, array, hash. Where immutable array happens to be list.
TimToady pm's problem with unifying Capture with Match was that Match wants more info, like where the match starts and stops...
Juerd But that probably won't work if $$ is still taken :)
TimToady we left it at Match maybe being derived from Capture... 01:48
Juerd Good night!
And thanks for explaining this List thing.
TimToady sleep hard
audreyt TimToady: but do we get to rename Arguments into Capture?
Juerd: thanks for prodding :)
TimToady Oh, sure, nobody has much qualms about that, unless we want something more *cough* typeglobby *cough* in meaning.
ingy hi audreyt 01:49
audreyt just rename it to Blog
and parallel argument lists into Blogosphere
ingy: hi!
TimToady parallel doesn't work well on spheres
ingy audreyt: did you do anything with yaml perl ref tags yet? 01:50
audreyt no I did not, I thought you'll come up with test cases
ingy I owe you a formalish proposal I think
or test cases :)
audreyt I just want failing tests
;)
test-for-oil
ingy audreyt: I think !perl/scalar makes not so much sense now 01:51
how do you do `\ [1,2]`
I think !perl/ref makes more sense 01:52
I'll make the tests
audreyt \[1,2]
would be
!perl/scalar/array 01:53
- 1
- 2
but if you want to call it ref, sure, call it ref :)
ingy no way
TimToady I wonder whether a Match might just be a Capture with mixed in extra props on an as-needed basis.
ingy how do you anchor the array?
it would be: 01:54
!perl/ref
=: [1, 2]
or: 01:55
!perl/ref &1
=: &2 [1, 2]
there are two nodes
you can't collapse them into one
TimToady Another political take on the whole ref/nonref thing is that, yes, we still have refs, but they just became, um, interestingly complicated refs. 01:56
so maybe Captures are really Referee objects. :) 01:57
audreyt TimToady: but surely, my $x = @y;
doesn't @y into an Referee :)
ingy throws a yelow flag at TimToady 01:58
audreyt parsec complains:
say infix:<+>
and
TimToady Sure, and @$x is appealing to the ref. :)
audreyt say infix:; 01:59
parses differently
and it must backtrack over the "tokenish" interpretation of infix:
versus a call to &infix in the invocant position. 02:00
as in
TimToady another ident lookahead for :< or :{ maybe? Hmm..
audreyt say Moose:;
TimToady basically infix:<+> is a supertoken, where "standard" p6 parser would drop down to a subparse but look like a single thing to the op prec parser. 02:01
the lower level of the 3-layer parser mode. 02:02
*model
audreyt yup
so I'll do a tryLookAhead over oneOf "<{"
after fixities:
TimToady that should do it
maybe we limit that to known syntactic categories? (or maybe not) 02:03
audreyt is amazed by the sheer amount of shift/reduce erros swept overthe backtracking carpet
we currently do that, yes
TimToady of course, we'll want to let grammar writers add their own categories, but we don't need to worry about that yet. 02:04
audreyt actually we can also do that 02:05
anything:<anything>
making it a special form
just like
anything=>anything
so each ident has too potential lookAheads
one for :< and :{, one for =>
TimToady good enough for now
audreyt or rather whitespace=>
TimToady could limit the => rule to \h* if unlimited lookahead is problematic 02:06
audreyt is
prefix:say
legal? 02:07
or does it always have to be written prefix:<say>
TimToady the latter
audreyt is
infix:{1+2}
legal?
TimToady the :< :{ forms were intentionally unlikely to occur elsewise 02:08
audreyt or better, infix:{rand}
TimToady yes, but you get what you get
audreyt at parse time, no less
so another implicit BEGIN place
TimToady yup
audreyt there are currently 13 unsafeEvalExp
in Parser.hs
each denotes a parse-time evaluation
how appropriate the number :)
TimToady for a good enough purpose one can of course limit one's own freedom--as long as you predeclare it... 02:09
audreyt continues to go thru the sanity tests... 02:12
TimToady would be so much simpler if there were also insanity tests...
Kattana why cant there be, plenty of canditates to write them. 02:13
TimToady if a question is not imminent, maybe now would be a good moment for me to commute home (~10 minutes)
audreyt TimToady: sure 02:14
I'll get Test.pm running meanwhile
and then commit... and break all our tests ;)
TimToady kewl, dude(tte).
bbiab&
audreyt Captures the "tte" 02:15
02:20 frederico joined
audreyt hm 02:21
1 if 2;
er
say if 1;
vs
clkao audreyt: grammar for data::alias ? 02:22
:P
audreyt say if::x 1;
clkao: Perl6::Binding :)
clkao ya, steal from it
audreyt (bbiab) 02:25
TimToady degone 02:33
foo::bar always "autoquote" foo as well, so probably just another lexerish dwim 02:36
tokens with superpowers shouldn't be discriminated against--see X men et al. 02:38
statement modifiers are also sufficiently powerful reserved words to be recognized whether a term or operator is expected. 02:39
say if 1; is in the same category as say 1,2,3, if 1;
audreyt hm 02:47
ok.
remind me again how to handle 02:48
if foo {1}
?
pmichaud has
([if|unless]) <expression> <block>
02:49 DesreveR joined
audreyt but I seem to remember that "if foo{1}" and "if foo {1}" are to be handled differently 02:49
TimToady foo{1} would be in postfix position. foo {1} has whitespace before it. 02:50
audreyt but ordinarily
TimToady only question really is whether to force it on expecting term as well as operator
audreyt say {1};
would work treating it as a term 02:51
as argument to say
it's only in
if say {1}
that it becomes argument to if
TimToady just a sec...
audreyt luqui iirc introduced a weird workaround in Pugs.Parser 02:53
based on the emptiness of the block
which is obviously wrong
but I wonder what the correct way is
TimToady I think the correct way is to require people to say "say() {1}" probably. 02:54
it's a good spot to remember that you could have decided differently so you can give a good error message though.
audreyt er you mean
if say() {1} 02:55
?
TimToady but I think we have too many things like sort {} that have to eat the block as part of the operator
audreyt right.
if map {3} {4} {5}
TimToady on the other hand, we could do it the other way, and require people to write 02:56
if (sort {}, 1,2,3) {1} in that case
but that feels uncleaner
audreyt previously we allow people to write both
02:56 KingDiamond joined
audreyt relying on costly parsefail backtrack to disambiguate 02:57
TimToady through the wonders of backtracking...
02:57 weinig is now known as weinig|out
audreyt which is quite dwimmy but obviously wrong :) 02:57
if sort { moose(); }, say { "this is the real loop body!" } 02:58
TimToady I think eating a block accidentally is very likely to give a parsefail rather than do the wrong thing, so I think we eat the block and blow up politely when that's wrong.
audreyt which mean the above line works 02:59
TimToady on top of which, we're trying to train people into using .say rather than say()
audreyt and prints "this is the real loop body" ?
or that it doesn't work 03:00
because say eats the block?
TimToady I think say should expect a term, and {...} sure does look like a term...
audreyt if -e { print "file exists" } 03:01
so that is gone too
have to write
if (-e) { print "file exists" }
TimToady we *could* exempt 0-arg list operators that just happen to be followed by a block, but as I say that wipes out sort and map
audreyt -e is optional unary, not listop, yet suffers from the same problem
pmichaud good evening
audreyt pmichaud: greetings 03:02
trying to get "if" parsed :)
pmichaud: btw, would you mind if I port all the 01-sanity to languages/perl6/ ?
TimToady I wonder if we need to set up a separate P6 validation location that is pugs/parrot-independent. 03:03
audreyt I wouldn't mind that, except that svk smerge is quite powerful nowadays
so cross-repo bidi incremental merging isn't really a problem 03:04
TimToady I just wish shebang lines could pay attention to ENV vars...
audreyt we can always do #!perl6
anyway, back to 03:05
if -e { say "hi" }
another thought is to restrict the conditional part 03:06
such that the argument list stops eating blocks, and you need parens to get back block-eating behaviour
pmichaud audreyt: I'd be very pleased if you would port any tests you wish to languages/perl6 :-)
audreyt cool... currently only 01-sanity though 03:07
once pge-perl6 can run Test.pm
we can port the rest of tests over
TimToady so basically the <space>{ is special at the top level, and () blocks that.
I think I like that because it will usually be what people expect
audreyt er, not space 03:08
terms
TimToady and the foo {} listops tend to be listy anyway, so can use () around visually
audreyt er, not space
if foo{3}
this is not really postfix
$foo{3} would be
but foo{3} would treat {3} as a term
and hence also blocked, and 3 goes to if
or was I mistaken? 03:09
TimToady that can't ever be a term
03:09 fglock joined
TimToady has to be postfix .{} 03:09
pmichaud pge has foo{3} as foo.{3}
TimToady \yes
audreyt so moose[3] is calling [3] on the result of the moose call?
TimToady always
pmichaud that's the way I read it :-) 03:10
audreyt ok. in that case, indeed, term-position {} can be blocked in condition part
TimToady yes, and that fixes if -e { say "there" } 03:11
and if there are additional terms, we'll have plenty of opportunity to detect useless use of...
audreyt are you in the mood of updating L<S04/Conditional statements> ? :)
TimToady if not just notice that the if didn't end right... 03:12
actually, I'm being called to supper right now... :)
pmichaud what change is being proposed? I only briefly skimmed the lastlog
audreyt I'll ghost-write :)
TimToady but maybe later.
audreyt oh, I'll not ghost-write then :D
TimToady okay
audreyt goes back implementing that instead
pmichaud: the change that
if -e { 3 }
means
if (-e) { 3 } 03:13
rather than a parsefail.
fglock hi!
pmichaud to be detected by backtracking, or...?
audreyt or, more interestingly
if -e { 3 } { 4 }
means
TimToady but if (sort {}, 1,2,3) {block} requires parens
audreyt if (-e) { 3 }; { 4 }
instead of
if (-e { 3 }) { 4 } 03:14
fglock: hi!
pmichaud: no, no backtracking needed
TimToady that's the point, we're trying to get rid of all the bting
audreyt the idea is that we suppress the bare-closure-term rule inside a "if"'s conditional.
TimToady biab&
pmichaud ouch, okay
audreyt pmichaud: TimToady had this wonderful idea that Pugs's Parsec parser should take out all its "try" 03:15
essentially making it nonbacktracking
I did that, and it revealed dozens of shift/reduce problems
we were working out each one
one by one... not sure how many to come :)
pmichaud unfortunately, pge's op-precedence parser currently doesn't make it easy to suppress bare-closure term 03:16
fglock audreyt: so it will be pure bottom-up?
audreyt fglock: we found out that it can't be ;)
moose=>1
moose:<elk>
moose:{antler()}
ingy elk
audreyt are three backtracks over the "moose" identifier
so there still must be backtracking
it's just we are doing away with the others if possible 03:17
(and convert implicit backtracks into explicit lookAheads if possible.)
fglock these one can be fixed by the tokenizer/lexer, no?
TimToady the bottom-up parse has to parameterizable for terminators. <expectop>{ is just the terminator
audreyt <expectterm> surely? 03:18
TimToady I mean <space>{
pmichaud oh, I can do it that way, yes
okay, no problem
you're right that bottom-up needs to be parameterizable for terminators -- I just hadn't added that particular feature yet :-) 03:19
I'm glad I combined it into a multi-state parser now, though, since <space>{ will occur when expecting a term (where we normally terminate when expecting an op) 03:20
audreyt nice 03:22
pmichaud sigh, there just aren't enough workable hours in the day :-( 03:23
audreyt but interestingly
if BEGIN { 3 } { 4 }
means 03:24
if (BEGIN()) { 3 } { 4 }
as a macro expecting a term literal is no different from a sub expecting one
pmichaud I think I'd live with that particular one for now :-)
well, unfortunately I have to go; I'll check /lastlog a little later or tomorrow 03:25
audreyt cool
have fun!
pmichaud you too
audreyt always =)
svnbot6 r9947 | fglock++ | Pugs-Grammar-Perl6-Lib - placeholder for prototypes and prelude 03:32
r9948 | fglock++ | PG-P6: yada-yada-yada 03:47
audreyt pmichaud: I commited all the sanity tests into your tree 03:49
fglock: how close is PG-P6 from running 01-sanity? :)
fglock it is just a parser - there is just a small emitter written by pmurias 03:50
I'll take a look... 03:51
audreyt 01-sanity doesn't require much emission though
it's designed for the -CPIR
fglock it doesn't look too difficult - PG-P6 already has most tables in place - it just needs to be filled in - maybe a couple of days :) 03:53
audreyt woot :) 03:54
fglock the grammar is quite simple actually - I'm not sure if it needs much more - it needs macros, and be able to execute BEGIN blocks (but you said they will no longer exist) 03:56
currently a program is a list ( statement-control | expression )* 03:58
03:58 FurnaceBoy_ joined 04:01 qu1j0t3 joined
fglock I'm not sure what is it missing, but this seems to fit a lot of the grammar 04:01
audreyt currently pugs has 04:02
statement-control, macro-declarators (those are the BEGIN parts I referred to)
POD blocks 04:03
and expressions
so I think the only thing missing is POD
i.e. column-1-assersions 04:04
=foo
#line 1
etc
also you need to parse, or taleas fake-parse, "use v6" :)
fglock isn't POD whitespace?
audreyt (and use v6-foo)
04:04 _mjk_ joined 04:05 Khisanth joined
audreyt no, pod is only whitespace at statement position 04:05
also, it is actually a pseudostatement
that populates %=POD etc
at parse time
fglock cool - I'll implement that then :) 04:06
audreyt :)
fglock actually, I think it is better to extract it and leave the parsing to a mini language - like Rule does 04:07
audreyt I agree. 04:10
fglock so we have a thin main parser and some mini languages:
rules, expressions, pod, interpolated strings
audreyt signatures, arguments
fglock I'm calling minilanguages like subrules: <Pugs::Grammar::Perl6::Str.parse>, <P::G::P6::Expression.parse> and so on 04:13
_mjk_ ōæ½xC4ōæ½xFAōæ½xBAōæ½xC3ōæ½xCCĘ·ōæ½xEF,ōæ½xCEōæ½xD2ÖŖōæ½xB5ōæ½xC0ōæ½xC4ōæ½xFAōæ½xCAōæ½xC7pugsōæ½xB5Äæōæ½xAAōæ½xB7ōæ½xA2ōæ½xD5ōæ½xDF,ōæ½xCEōæ½xD2ōæ½xD3ōæ½xC3perlōæ½xD7ōæ½xF6ĪŖmsvcōæ½xB5ōæ½xC4ōæ½xC7ōæ½xB6ōæ½xC8ōæ½xEBōæ½xD3ōæ½xEFōæ½xD1ōæ½xD4ōæ½xBFōæ½xAAōæ½xB7ōæ½xA2ōæ½xC8ōæ½xEDōæ½xBCōæ½xFE,ōæ½xB5ōæ½xABōæ½xCAōæ½xC7ōæ½xCEōæ½xD2ōæ½xCFōæ½xEBōæ½xCFōæ½xF2ōæ½xC4ōæ½xFAōæ½xC7ōæ½xEBōæ½xBDōæ½xCC:pythonōæ½xB5Ľōæ½xF8Õ¹ōæ½xBAÜæōæ½xEC,ōæ½xB5ōæ½xABōæ½xCAōæ½xC7perl6ĪŖōæ½xBAĪ³Ł³ōæ½xD9ōæ½xC3ōæ½xBBōæ½xD3ōæ½xD0ōæ½xD7ōæ½xEEōæ½xD0ōæ½xC2ōæ½xB5ōæ½xC4ōæ½xC7ōæ½xD0ōæ½xCAōæ½xB5ōæ½xBDōæ½xF8Õ¹,Š»Š»
audreyt _mjk_: ōæ½xC4ōæ½xFAōæ½xBAōæ½xC3, ōæ½xBFōæ½xB4ōæ½xB5Ƶōæ½xBDōæ½xCEōæ½xD2ōæ½xB4ōæ½xF2ōæ½xD7ֆōæ½xE1? 04:15
_mjk_ ōæ½xBFōæ½xB4ōæ½xB5Ƶōæ½xBD
audreyt _mjk_: Perl 5.9 ōæ½xB5ōæ½xC4ōæ½xDFMÕ¹Ņ²ōæ½xBAÜæōæ½xEC; ōæ½xC8ōæ½xE7ōæ½xB9ōæ½xFBōæ½xC4ōæ½xFAōæ½xCAōæ½xC7ŅŖōæ½xBAōæ½xCD Python 2.x ōæ½xCFōæ½xE0ōæ½xB1ȵōæ½xC4ōæ½xD4ōæ½x92 04:16
儧 Perl6 ꎀļœ€ Python3000 腔ē­³ę”ÆēŒč¾¦å—£č³ø :)
_mjk_ ōæ½xD7ōæ½xEEōæ½xBAōæ½xF3ōæ½xD2ōæ½xBBōæ½xD0ōæ½xD0ōæ½xCAōæ½xC7ōæ½xC2ōæ½xD2ōæ½xC2ōæ½xEB 04:17
audreyt 儧 Perl6 ꎀļœ€ Python3000 č…”č¼›ę”ÆēŒč¾¦å—£č³ø :)
_mjk_ ōæ½xBBōæ½xB9ōæ½xCAōæ½xC7ōæ½xC2ōæ½xD2ōæ½xC2ōæ½xEB
ōæ½xCEōæ½xD2Ó¢ōæ½xCEōæ½xC4ōæ½xB2ōæ½xBBōæ½xBAōæ½xC3 04:18
audreyt éœå²†č§“éŽ¢?
_mjk_: ōæ½xC8ōæ½xE7ōæ½xB9ōæ½xFBōæ½xC4ōæ½xFAōæ½xCAōæ½xC7ŅŖōæ½xBAōæ½xCD Python 2.x ōæ½xCFōæ½xE0ōæ½xB1ȵĻōæ½xB0, Perl 5.9 ōæ½xB5Ľōæ½xF8Õ¹Ņ²ōæ½xBAÜæōæ½xEC; ōæ½xB6ōæ½xF8 Perl6 ōæ½xB1ōæ½xC8ōæ½xC6ōæ½xF0 Python3000 ōæ½xB5Ľōæ½xF8Õ¹ŅŖōæ½xBFōæ½xECōæ½xB6ōæ½xE0ōæ½xC1ōæ½xCB :) 04:20
_mjk_ ōæ½xB1ōæ½xF0ōæ½xC8Ė¶ōæ½xBCĖµperlōæ½xB5Äæɶōæ½xC1ōæ½xD0Ō²ōæ½xBBōæ½xBAōæ½xC3(ōæ½xB6Ō±ōæ½xC8python), ōæ½xB5ōæ½xABōæ½xCAōæ½xC7ōæ½xCEōæ½xD2ōæ½xD3ōæ½xC9ōæ½xD3ōæ½xDAōæ½xBDÓ“ōæ½xA5perlōæ½xBDōæ½xCFōæ½xD4ōæ½xE7,ōæ½xCBōæ½xF9ōæ½xD2ōæ½xD4ōæ½xB2ōæ½xBBōæ½xCFōæ½xEBōæ½xD4ōæ½xD9ѧĻ°python,ōæ½xB6ōæ½xF8ōæ½xC7ōæ½xD2perlōæ½xB5Äæōæ½xE2ōæ½xD2ōæ½xB2ōæ½xBCōæ½xABĪŖōæ½xB7įø»,ōæ½xB6ōæ½xD4ōæ½xD6ōæ½xD0ōæ½xCEĵōæ½xC4ōæ½xD6ōæ½xA7ōæ½xB3ōæ½xD6ōæ½xD2ōæ½xB2ōæ½xB1ōæ½xC8pythonōæ½xBAōæ½xC3
svnbot6 r9949 | fglock++ | PG-P6 - P::G::Pod.pm stub
_mjk_ ōæ½xBFōæ½xC9ōæ½xD2Ōæōæ½xB4ōæ½xB5ōæ½xBDōæ½xC1ōæ½xCB,Š»Š» 04:21
ōæ½xD5ōæ½xE2Ć“Ėµperl6ōæ½xB5Ĺōæ½xA6ōæ½xC4ōæ½xDCŅŖōæ½xB1ōæ½xC8pythonĒæōæ½xB4ōæ½xF3ōæ½xB5ōæ½xC4ōæ½xB6ōæ½xE0ōæ½xC1ōæ½xCB
Khisanth that is a lot of gibberish ...
audreyt ōæ½xCAōæ½xC7, Perl 6 ōæ½xB6ōæ½xD4ōæ½xD3ōæ½xDAōæ½xCAōæ½xB9ōæ½xD3ōæ½xC3ōæ½xD6ōæ½xD0ōæ½xCEōæ½xC4ōæ½xCAōæ½xFDōæ½xBEōæ½xDD, , ōæ½xD2ōæ½xD4ōæ½xBCōæ½xB0Ź¹ōæ½xD3ōæ½xC3 CPAN Ä£ōæ½xBFōæ½xE9, ōæ½xB6ōæ½xBCōæ½xCAōæ½xC7Ö§ōæ½xB3Öµōæ½xC4 04:22
fglock what is the synopsis for Pod?
audreyt _mjk_: ōæ½xCEōæ½xD2ōæ½xC3ōæ½xC7ōæ½xD2ōæ½xC6ōæ½xB5ōæ½xBD #perlchina Ģøōæ½xB0ōæ½xC9?
_mjk_ ōæ½xB4ōæ½xF3ōæ½xD4ōæ½xBCōæ½xBBōæ½xB9ōæ½xD3ōæ½xD0ōæ½xB6ą³¤Ź±ōæ½xBCōæ½xE4perl6ōæ½xBFōæ½xC9ōæ½xD2ōæ½xD4ōæ½xCAĶ³ōæ½xF6ōæ½xB0ōæ½xA1? 04:23
audreyt (as this is primarily not a GB2312 channel)
_mjk_ ōæ½xBAƵōæ½xC4,Š»Š»
audreyt fglock: supposedly, docs/Perl6/Spec/Documentation.pod 04:24
fglock: but realistically, "man perlpodspec" 04:25
fglock you said "whitespace at statement position" - is it a term at term position? 04:26
TimToady except, assume that =cut is probably going away.
just be careful with the minilanguages not to make the same mistake as Perl 5. Calling out to subrules is fine. Finding the end and reparsing is not so fine. 04:31
fglock I mean mainly calling out a 'main rule' of another grammar 04:32
TimToady Also, I'm viewing the line boundaries as something more like handover points between coroutines, so it's not necessary that a pod parser act completely inside each pod chunk, or Perl chunk inside each pod chunk.
but the line transition conventions are agreed to by the two parsers so that you can, for instance, ignore the pod, or the pod can ignore the program. 04:34
calling out to a main rule is fine for now. 04:35
04:35 kanru joined
fglock so the rules are: =begin///=end or =anything/paragraph/blank-line ? 04:35
TimToady basically, but I don't know if they've updated Doc.pod to reflect what we talked about in Tokyo. 04:36
if there's still =pod and =cut in there, assume that's all simplified to =begin/=end with =use for a general "use" mechanism just as with Perl. 04:37
anyway, Ingy and Damian are still working it out, last I knew. 04:38
audreyt and we are still puzzling how python is to parse =use :)
fglock ok - I'm just implementing placeholder syntax right now - just a bit of each category to see how things fit together 04:39
TimToady and I care about python because... :) 04:40
audreyt ...because POD is currently under nonperl contexts? :)
TimToady placeholder is fine for now, and will probably continue to be fine as long as the line transition rules remain simple.
how does python parse =foo in general? 04:41
audreyt I mean, parsing POD as a document
without the capability of running perl6
04:41 justatheory joined
audreyt but I think it's solidly abandoned :) 04:41
i.e. "only perl parses pod"
or some such.
(it also means backporting the perl6 pod documents back to perl5 rendered is going to be fun -- we need to sync everything that can be "use"d) 04:42
TimToady python can just put it all into """ =use """ blocks I guess...
audreyt XML avoids this problem as its transformers and schema (the equivalent of "use" things) are also XML 04:43
TimToady =use is just an interface--I don't think it has to know much about implementation language
audreyt though there is also DTD
but DTD is quite a bit simpler than perl
TimToady maybe it's all just parrot byte code. :) 04:44
audreyt TimToady: true... the underlying implementation just has to implement the 3-part versioning etc :)
(and somehow guarantee sane behaviour on the unbounded pragmas one can =use)
(but I'm actually comfortable with this :))
but I need to run back to my parents' for my birthday party... 04:45
be back in a few hours 04:46
TimToady are you going to be able to do r10000 on your birthday?
audreyt very likely
as it's still 3days away
TimToady let me know if I have to patch faster or slower. :)
have a good party. 04:47
audreyt faster :)
thanks :)
ingy audreyt: I can't seem to login to openfoundry 04:49
or commit to pugs 04:50
oh hi TimToady
audreyt ingy: you lost your passwd? 04:51
reset it from the web form?
ingy well I guess so yes
I can't :p
rt.openfoundry.org/Foundry/Home/Gue...inder.html
broken
TimToady: I was just going over S26 04:52
are you around for a bit more?
I have some questions 04:53
svnbot6 r9950 | fglock++ | PG-P6 - added "Pod" and tests
TimToady sure 04:54
ingy Well basically my use (npi) case is, as audreyt says, Python needs to be able to parse Pod docs 04:55
but...
as long as `=use foo` implies a set of well understood semantics, I think it's ok 04:56
TimToady Python's an interesting case for pod, since pod is sort of anti-whitespace sensitive, or differently sensitive. 04:57
ingy I like `=use`, I just don't take it to mean it loads a module called 'foo' necessarily
I'm not talking about using Pod in Python 04:58
at all
TimToady no, it loads something poddish called "foo". Unlikely to be foo.pm
ingy or it doesn't load anything... 04:59
TimToady okay, parse pod using python, gotcha
ingy right
There are a lot of good tools written in non-perl
that us perl folk like to use
A documentation authoring tool perhaps 05:00
anyway, next thingy
TimToady all I really care about is that =use be there as an interface for specifying that you want the language to change somehow, instead of being implicit in whatever postprocessor you happen to run.
ingy cool!
TimToady =use nroff 05:01
is certainly possible even.
ingy my next BIG issue is that Perldoc syntax is really only useful for POD :p
I want to do this:
=kwid some:options per:haps 05:02
#| = Heading
sub foo { ... }
ie I want different containment 05:03
TimToady you can do anything you like as long as you say =use whatingywantstodo first, and can figure out how to hook the line transition interface to do it.
05:04 elmex joined
ingy yep, I figured you'd say that 05:04
so good...
TimToady basically =use tells <ws> what to do on a \n boundary. 05:05
ingy Damian seems to have not included *lists* in the model
He only has items 05:06
I don't like this.
I'll write something up...
+1 on =use thought 05:07
TimToady gee, I was hoping for a +1.2 at least...
ingy sorry, I'm mortal
100% is my best
at least today
TimToady but you're also so improbable 05:08
ingy saves immortality for special occasions
as are you TimToady
gaal morning 05:09
TimToady nite
ingy I think of =use as along the same lines as =encoding
a mode switching declarator
or somesuch 05:10
TimToady yeah, we just need to not fall into the source-filtering trap
ingy chants "somesuch" and waves his hands about
TimToady: explain...
TimToady different =use invocations might set different hooks, scoped differently 05:11
ingy hmm
TimToady source filters are too crude of an ax.
so =use probably needs to be able to work at the "macro" level too.
define individual =foo thingies, for instance. 05:12
or whatever.
ingy I would think of =use as a stream level thingy like =encoding
TimToady chants "whatever" and waves his hands about
ingy if you give =use Perl lexical scope then we've really just blown the Python case out of the water 05:13
TimToady the source-filter lesson is that stream-level thingies often don't stack very well.
ingy noted.
TimToady no, not Perl lexical scope. =begin/=end lexical scope.
or =foo name scope 05:14
of Z<> thingie scope
*or
or whatever the proper scope of the "macro" is.
then you only have to worry about the interactions if people actually use them overlappingly. 05:15
ingy =begin is a /pod/ directive, not a Perldoc directive, methinks
TimToady it's just another form of encapsulatoin
=use can certainly switch to something too stupid to have its own scopes.
P6 is all about providing proper scopes of every kind so that encapsulation is always natural, but not everyone has to program in P6. 05:16
ingy well I would like to have at least one line of orthoganality here
TimToady nor in the P6 flavor of pod
takes two lines to be orthogonal. :) 05:17
ingy I would say Perldoc is Orthogal to P6, (pleeeease)
TimToady it is.
ingy phew 05:18
he says knowing he is about to be decapitated
gaal threads backlogging and reading the current discussion
TimToady the only thing they happen to have in common is that they both require something like use to bend the rules.
and that they have to agree on who gets control at the line boundaries.
gaal a piece of pod should have affinity to the bunch of code it is commenting on, right? so for example you could write docs for one multi and have it pertain to all locally visible variants 05:19
05:19 Aankhen`` joined
gaal that sounds like it is somewhat coupled to the language 05:19
s/pod/Perldoc/
ingy TimToady: I'm "impressed" that you like line boundaries for scoping
seems to concrete for you ;) 05:20
TimToady I expect most coupling to related documentation will be either by convention (located nearby) or by name.
ingy gaal: I think that is perhaps at a different level than what we are discussing, but sure
gaal okay. /me pops back to backlogging -- you've been busy while I was sleeping 05:21
TimToady but mostly that goes through the PDOM filter.
we're mostly discussion syntactic interactions right now.
s/ion/ing/ 05:22
or lack thereof, hopefully.
ingy so... I would think that =foo could be defined such that a subsequent =bar is: 05:23
TimToady yes, the whole pod notion is built on the idea that line boundaries are a very natural place to encapsulate/excapsulate different languages interleaved with each other.
ingy 1) considered a foo syntax
2) delegated to bar and its rules
3) Something stoopid and unthought of
TimToady sure. =use is just one kind of special =foo, after all. 05:24
ingy gah sorry
`=use foo` and `=use bar` I meant
TimToady it all depends on what kind of engine we want to put under the interface. 05:25
ingy engines :p 05:26
TimToady I tend to prefer infinitely extensible engines, and other people prefer to nail down what is possible.
I prefer to give people the option of nailing down what is possible as one of the infinitely possible things. :)
ingy I prefer hacking... 05:27
ok, I am going to rip S26 to shreds now
should have enough to go on
ingy checks notes...
TimToady hope this hurts. er, helps...
audreyt <TimToady> "The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man."
<TimToady> The only problem with this quote is that it's false. A lot of progress comes from unreasonable women.
TimToady audreyt += 42 05:28
qu1j0t3 hehe
ingy audreyt += 3.1415926 (*2) 05:29
TimToady on the other hand, I'm sure a lot of people would agree that a woman makes a rather unreasonable man.
gaal audreyt: "The only problem with this sentence is that it's false." 05:30
ingy TimToady: =cut and =doc are yesterday's news
audreyt gaal: gobby-p?
ingy wake up and smell the fish
mmm gobby
I have linux laptop now 05:31
I was going to grab someone like gaal to hack S26
gaal audreyt: sike.forum2.org
26 is...? docs?
too bad the weekend ends a day sooner here 05:32
oh is gobby a sort of fish? I didn't know that
audreyt TimToady: is there a syntactic way of denoting the slurpy block in an arglist?
gaal or, audreyt, if you already have something started then start a session of your own and I'll connect 05:33
audreyt \($inv : $pos, name=> $name : {block}) perhaps?
gaal: no
TimToady Is :{} still free?
audreyt aye
gaal the kiss quote
favorite smiley-pair: 05:34
audreyt in .map:{moose} it's currently hard-coded^Wspecced to go into the .map
gaal :-{} # user wears lipstick
:{}) # user got kissed on the nose by lipstick-wearing user
TimToady currently that's specced as .map: {moose} where the : turns .map into a list operator like $ does in Haskell.
gaal how does one extract @invs from a Capture? 05:35
audreyt right. and {moose} comes into play by the last pos of slurpy *& in .map's sig 05:36
gaal: there can be only one @inv
I mean $inv
gaal huh? mmd
TimToady positionals
audreyt gaal: mmd governs sigs 05:37
not args
not arsee the App form
gaal (Maybe Var)
Val
audreyt yeah
ok, can you load yesterday's doc at the gobby session?
(other people are also welcome to join the gobby session)
gaal it's loaded
that FAQ?
audreyt k
yup
let's dive in :) 05:38
TimToady anyway, maybe you can just decorate any {} to force it not to be the statement level block.
gaal all: join gobby sike.forum2.org
TimToady I'm gonna go to bed now, actually...
qu1j0t3 nite
gaal good night
TimToady zzz &
ingy TimToady: come back good buddy 05:47
grr, /me just realized that he's been duped
ingy attempts to dedup himself
TimToady: `use kwid` and `use Table` are two totally different animals 05:48
gaal ingy | sort | uniq 05:49
ingy :p
wait!
/usr/bin/ingy
hmmmm....
qu1j0t3 waits
Segmentation fault.
ingy TimToady: `use kwid` is a Perldoc directive 05:50
gaal btw check out the cool new Pipe.pm module by szabgab
ingy TimToady: `use Table` is a Pod directive
I'm going to push for the former to be `=doc kwid` 05:51
TimToady: I'm going to push for the former to be `=doc kwid`
sorry...
TimToady: oops, s/use/=use/g 05:52
05:56 FurnaceBoy joined
svnbot6 r9951 | fglock++ | PG-P6 - arbitrarily nested statements/expressions 05:56
05:58 KingDiamond joined
svnbot6 r9952 | fglock++ | PG-P6 - TODO update 06:02
06:02 fglock left
audreyt ?eval (1,2,3)[][][][][][][] 06:31
evalbot_9946 (1, 2, 3)
06:40 drrho joined 07:09 dduncan left 07:26 _bernhard joined
audreyt help wanted 07:29
to podify docs/Perl6/FAQ/Capture.pod 07:30
svnbot6 r9953 | audreyt++ | * 0th draft of Perl6::FAQ::Capture - help on PODification welcome!
07:46 ghenry joined 07:55 xinming joined
_bernhard exit 07:59
08:27 pmurias joined
ingy needs to make a full system backup of his ibook to an external drive 08:32
any advice?
audreyt dd 08:34
08:35 pmurias joined, larsen joined
ingy audreyt: seriously, that will work for mac? 08:36
08:42 larsen joined 08:46 nothingmuch joined 08:48 kattana_ joined
audreyt ingy: I think so, yes 08:48
integral Disk Utility can also copy disks, but that appears to be exactly the same as a dd 08:49
audreyt right, but you get a better UI
integral FSVO "better"
audreyt even for CLI, dd's UI is... weird
integral it's not very good because after copying the dest has the same label, so you can't actually tell which text box references which disk 08:50
audreyt even fancier gratis UI:
www.shirt-pocket.com/SuperDuper/Sup...ption.html
08:53 nnunley_ is now known as nnunley
svnbot6 r9954 | pmurias++ | basic expression emitting 09:25
r9954 | pmurias++ | still expression nodes need to be hand inserted into the ast
09:39 chris2 joined 09:56 bsb joined 10:02 b00t joined
ruz morning, I look at www.pugscode.org/images/simple-compilation.png and wonder how compiler differs from code generators? 10:10
and what is PIR? 10:11
ingy thanks audreyt and integral 10:13
ruz PIR == PUGS INFERENCE RUMINATOR 10:14
or something like that ;)
10:14 david_ joined
ruz :) 10:15
ingy PRETTY INTERESTING RUSE?
PARROT INTERMEDIATE RUNTIME
ruz understood, it's test for newbie :) 10:16
a) b) or c) what would you choose? :)
ingy actually I don't even know any more
might not be any of those 10:17
ruz d) other ________ (fill in)
ingy I'm reading cryptomonicon 10:19
there's this part where someone guesses the INRI next to a crucifix means Initiate Nail Removal Immediately
LeTo ruz: (in parrot tree): $ perldoc docs/glossary.pod 10:20
ingy LeTo: url? 10:21
LeTo svn.perl.org/parrot/trunk/docs/glossary.pod 10:22
ingy EOFFBYONE 10:23
ruz LeTo: thanks 10:25
gaal rehi 10:34
ruz if PIR is a medium-level assembly language then what is low-level? PBC? 10:41
LeTo PASM 10:43
PBC is the binary parrot 'byte' code 10:44
ruz oh
ruz 's reading further 10:45
"Vtable: A table of operations attached to some data types, such as PMCs and strings" is confusing a little, isn't string a PMC? or is this sentence about some specific strings? 10:58
LeTo the STRING* data type isn't a PMC 11:00
11:04 larsen joined 11:09 BennyAgra joined
BennyAgra Camel $700 LLAMA $600. Special! order soon! bennyagra.in/ See my TV ad! bennyagra.in/commercial.html 11:12
11:23 autark joined 11:26 jserv-- joined
gaal audreyt: $x = \@y; @$x is an error or just wrong (because $x contains no positionals)? 11:27
if it isn't an error, is this just an empty list?
does this mean that in some cases, @$cap, %$cap, and &$cap are errors? 11:28
svnbot6 r9955 | gaal++ | r9995@sike: roo | 2006-04-15 14:34:32 +0300 11:37
r9955 | gaal++ | * Capture.pod - minor edits and a new question about ref-to-ref
gaal doesn't INRI stand for I Need Ritalin Immediately? 11:50
incessantly 11:54
12:04 BennyAgra is now known as Wassercrats 12:12 Wassercrats left
audreyt gaal: it is empty list 12:19
gaal: $$cap may just be undef 12:20
they are prolly never really errors
(bbiab)
12:24 frederico joined
audreyt gaal: ping 12:56
12:59 SamB joined
svnbot6 r9956 | fglock++ | PG-P6 - Pugs::Grammar::Perl6.pm ! 13:04
r9957 | audreyt++ | * Capture.pod: de-handwave the \\\ref question
audreyt TimToady: I'll go ahead and change Arguments to Capture. 13:17
13:18 colares joined
svnbot6 r9958 | audreyt++ | * Perl6::FAQ::Capture - PODification. 13:25
pmurias i get an "Out of memory!" while working on the emitter for PG::P6, is there a way to make perl print more info? 13:28
audreyt -DPERL_EMERGENCY_SBRK? 13:29
(in perlvar $^M)
or gdb
pmurias does perl refuse to use swap in some circumstances? i got 500M it in reserve and i didn't hear it working 13:31
everything happens in 0.4s by the way 13:32
audreyt mm not sure. "perldiag" under "Out of memory" has a few suggestions. 13:35
13:36 turrepurre joined 13:46 uzair joined
bsb "Capture" is much better 13:50
audreyt TimToady++ # good idea 13:51
14:02 bsb left 14:08 uzair left
pmurias turned on -w and it found the source of my problems: pseudohashes 14:09
audreyt oh no 14:10
the dreaded jenga block
gaal: see my answer on MMD
avar does -w equal use warnings unline p5 or is it like $^W ? 14:14
14:16 iblechbot joined
pmurias -w equals use warnings in p5, in p6 propably too 14:17
although warnings are probaly on by default in p6 14:18
14:18 weinig|out is now known as weinig 14:27 nothingmuch joined
avar pmichaud: no, -w equals BEGIN{$^W = 1} at the start of the program, which does not equal use warnings 14:27
(in Perl 5)
I was wondering if that was the case in p6
audreyt s/pmichaud/pmurias/ :) 14:31
nothingmuch does anybody know where the moose svn?
14:31 KingDiamond joined
pmurias hi nothingmuch 14:32
nothingmuch hola
avar audreyt: grr
pmurias i could, i would take part in SoC and choose pmichaud as my mentor, imagine the confusion :) 14:33
avar Always two there are.. 14:34
pmurias nothingmuch: the moose svn where they wish 14:36
s/i could/if i could/ 14:41
nothingmuch: what is your timezone 14:44
?
14:47 KingDiamond joined
nothingmuch pmurias: IDT right now 14:50
Israel
TimToady++ 15:01
audreyt++
the capture faq is lovely
audreyt woot 15:02
gaal++ # really
nothingmuch gaal++
audreyt I hope it makes perfect sense to you
nothingmuch it does
15:03 nnunley joined
nothingmuch wonders how a system as ugly as finance could have grown organically 15:04
nnunley Death by degrees. 15:05
audreyt fractal ugliness can't be designed
svnbot6 r9959 | audreyt++ | * Capture.pod - more typo fixes 15:08
audreyt can someone reformat docs/quickref/fears into docs/Perl6/FAQ/Fears.pod ?
or Fear.pod
I think that's one of the most important FAQs so far 15:09
15:33 _bernhard joined
svnbot6 r9960 | audreyt++ | * more clarficiation of binding a non-Scalar object into $var, 15:35
r9960 | audreyt++ | as requested by an anonymous commenter on the journal.
gaal what Snn is Fears.pod? :-) 15:36
gaal is back
audreyt gaal: the entire idea of Perl6::Doc tree is to do without nn in S :) 15:37
also, ::FAQ doesn't follow the S numbering anyway.
gaal audreyt: how do I desc the last cahnge to a file with svk? 15:38
after I'd pulled in the change 15:39
whoa, Capture.pod is on the blog!
audreyt svk DESC head
er
svk desc HEAD 15:40
gaal and svk desc HEAD file also?
audreyt prolly not
patches... welcome
gaal heh 15:41
pmurias nothingmuch: regarding the design deal to you have time today?
audreyt oh wait
svk diff -r -1 file
gaal I'll add some motivation Qs to the faq, which are probably useful too.
audreyt that's the ticket
gaal -1 is so clever :)
audreyt clkao: you are so clever, according to gaal (which I agree) 15:42
clkao what have i done? 15:43
audreyt gaal: it's not only on the blog it's also on p6l :)
clkao: svk diff -r -1
gaal clkao: you are so clever 15:44
nothingmuch pmurias: yes 15:45
clkao giggles 15:46
gaal audreyt: can you gobby up for a bit? some motivational stuff + match results that can use some input 15:51
audreyt gaal: let me finish the journal entry
(longish)
gaal sure
audreyt can you commit to Capture.pod first?
gaal take yer antler 15:52
of course.
nothingmuch i would like Perl 6 to have a bareword quoting operator that works rightwards 15:55
foo => bar => gorch => "baz" always annoyed me
the "baz" should be allowed to be unquoted in some syntax
any ideas?
wolverian nothingmuch, <foo bar gorch baz> 15:56
gaal <foo bar gorch baz>
heh
wolverian (not exactly the same, as => constructs Pairs)
nothingmuch err
not quite
there are other constructs
gaal [=>] <foo bar gorch baz>
wolverian that should do it :)
nothingmuch heh 15:57
gaal []++
wolverian so, what do I have to do to get perl to call mysub(1,2,3) instead of (1,2,3).reduce(&mysub) for [mysub] 1,2,3? 15:58
i.e. binary to listfix
I guess that's in the AES somewhere 15:59
wolverian finds
gaal yeah it got elegant treatment 16:00
'svk ci' is pretty slow in finding the modified files. Is there something I can do to speed it up? (short of specifying which files to ci on the command line) 16:01
avar svn st 16:03
or maybe that's equally slow
audreyt gaal: svk ci docs 16:04
TimToady: *prod* on S04 update of condition parsing rules :)
svnbot6 r9961 | gaal++ | r10003@sike: roo | 2006-04-15 19:02:21 +0300 16:06
r9961 | gaal++ | * FAQ::Capture - added a section on motivation, and
r9961 | gaal++ | [minor] reflowed long lines.
gaal audreyt: the HTML rendition on your blog seems to eat long lines. not sure there's much to do about that. 16:12
e.g. the board_ark code 16:13
audreyt borkd_aar
16:13 FurnaceBoy joined
gaal 0rked bark 16:13
audreyt gaal: I reflowed the long lines 16:21
can you reflect that in the .pod 16:22
?
3rd journal entry of the day up -- I think I really need to sleep
please feel free to add more stuff in Capture.pod and I'll see if we can gobby up tomorrow
gaal reflect the fact you reflowed the long lines?
audreyt or I'll just commit the answers if you are not around
yeah
gaal tomorrow I have to $work :(
audreyt aw :(
gaal sure, i'll commit soon 16:23
wolverian audreyt, s/each up/eat up/
("This will each up all the /a+/...")
audreyt fixed 16:24
wolverian thanks :) 16:25
audreyt thank _you_ :)
audreyt waves &
gaal night audreyt
wolverian cheers 16:26
16:51 weinig is now known as weinig|away 16:59 vytautas joined 17:00 larsen joined
nothingmuch posts a 5 beer reward for Inline::GHC ;-) 17:02
17:02 Khisanth joined 17:46 PerlJam joined
pmurias nothingmuch: when will you have time today? 17:56
17:57 david_ joined 17:58 larsen_ joined 18:03 colares joined 18:04 nothingmuch joined
PerlJam slowly wends his way through the Capture faq 18:09
pmurias hates references, and is glad they will die out 18:14
18:19 KingDiamond joined
avar will they? 18:25
?eval for [] -> $i { say $i} 18:26
PerlJam well they've changed name at least
evalbot_9946 OUTPUT[ ] undef
TimToady Captures can be viewed as "fat references" when it's politically expedient.
xinming wants to knwo what it will be called instead of "reference" :-P
avar I suggest "goobeeboo" 18:27
Or "Phillip", "Phillip" is a nice name..
TimToady which "it" are you itting?
avar ;)
TimToady Fred would be shorter. 18:28
xinming hmm, I mean the reference. :-/
TimToady what reference? the result of []?
avar TimToady: Won't we need Wilma for consistancy then?
*wouldn't
TimToady goes BamBam on avar's head.
xinming TimToady: yes, I really don't understand about what audreyt means about make "reference"s die out.
PerlJam isn't that bammbamm 18:29
TimToady [] is just an empty array in Audrey-speak
the term "array" already implies that there's a hidden reference somewhere.
wolverian just call it "object" :) 18:30
xinming needs recheck audreyt's blog... new material is comming. :-)
TimToady every container has a hidden reference somewhere
or you couldn't store them in the symbol table.
wolverian (albeit the sigils make it a bit different from ruby)
TimToady and of course the GC still runs on references. But that's all implicit now. 18:31
PerlJam I just don't understand the answer to "What about multimethod dispatch..."
wolverian TimToady, is that required? 'course I don't know anything about GCs
TimToady the whole point of a GC is that you can clean up when something isn't "referred to" any more. 18:32
xinming PerlJam: In my understanding, multimethod dispatch is something the same as the sub declared as "multi"
xinming isn't for sure about that though. 18:33
TimToady this is more about the calling end, not the declarative end, is what it's trying to say.
18:33 FurnaceBoy is now known as FB|afk
TimToady when you say $a.($b), you get an invocant and one positional. 18:33
$a.foo($b) rather
when you say foo($a,$b), you get two positionals, and no invocant. 18:34
wolverian for a second I thought $a.($b) calls $a($a: $b)
xinming TimToady: I understand what invocant do, but I really don't find the word invocant mean. :-/ 18:35
TimToady when SMD fails over to MMD, the Capture probably has to be rewritten to delete the invocant and unshift it on the front of positionals, at least logically.
that's because we made up the word for Perl 5's Camel Book.
it's the object on whose behalf the method is being invoked. 18:36
most of the other words in English either commit you to being the active subject or the passive object, and we didn't want to commit, so we made up a word.
18:36 justatheory joined
xinming a language creater... :-) no matter the language we say or the programming... 18:36
TimToady well, Tolkien would say that being a subcreator is what we were created to be... 18:37
It's sort of a fallacy of the Modern Age's idea of specialization that you aren't allowed to be creative outside of your speciality... 18:38
well, if I don't go and work on my taxes, my wife will think up some creative way to make me regret it. :) 18:39
or if I put it off longer, Uncle Same will come up with a noncreative way...
*Sam
so bbialb & # bit : long bit :: dot : long dot 18:40
18:47 takesako joined 19:00 justatheory joined 19:04 cmarcelo joined 19:07 Limbic_Region joined 19:13 cmarcelo left 19:17 FB|afk is now known as FurnaceBoy 19:45 dvtoo joined
lumi What's the procedure for typos and suches in the doc patches sent to p6l? 19:51
Limbic_Region probably just reply to the email with the typo correction?
TimToady or mention them here. :)
but if they're extensive, a patch would be nice
but LR is right that a reply to p6l is perfectly acceptable. 19:53
lumi Okay
TimToady or to whoever installed the typos.
or wangle a commit bit and fix 'em yourself like Audrey did. :)
Limbic_Region speaking of which TimToady 19:54
there are about 2 or 3 draft Synopses in the Pugs repo 19:55
have they been reviewed at all by @larry?
they are not linked to from dev.perl.org/perl6
TimToady some of 'em have been revised by $Larry :)
Limbic_Region ok - so does that mean with your stamp of approval they will go up or are they staying put or what? 19:56
TimToady there are S's that are more core to the language def, and those tend to be on perl.org. The ones that are basically records of negotiating between designers and implementors tend to be in pugs for now.
Limbic_Region ok 19:57
TimToady mostly I want things that are trying to stay stable to be on perl.org, and things that are still trying to evolve out where anyone with a pugs commit bit can modify 'em. 19:58
eventually they'll all move over, but I'm in no rush.
Limbic_Region Rod is still actively working on S29 though
?
TimToady it just seems like a useful distinction. not trying to fuel any turf battles either way... 19:59
Limbic_Region hrm - guess not
TimToady I don't think he's worked on it in the last year that I've noticed.
Limbic_Region no updates since March of 2005
TimToady most of the recent stuff is me.
Limbic_Region yes, I know
TimToady++
TimToady but there's still a lot missing ,which is why it's "blessed" but still under pugs
gaal audreyt: the color in make_car's signature is optional because later the call doesn't mention color. either let the ? be left in or add a color arg in the call; or else remove this parameter. IMHO the ? should be left in to point out that the full power of arguments is available here. 20:03
(mentioning this because we've ping-ponged this fix) 20:04
and, different issue: subs don't have an invocant, so how come the pass-through example works? if this is the first positional, shouldn't the signature be 20:10
passthough (Capture $args)
?
else, \ in a signature needs to be explained when the sigil is not $ 20:11
20:23 kanru joined
LeTo TimToady: re official S*.pod - I don't see any summary of P6 data types. S09 has some info, but seems to go immediately 'hard core' towards multi-dim arrays and PDL, but has nothing about a plain 'Int' or 'Num' .... Other info is scattered around S02 and S06, but that's suboptimal IMHO. 20:23
gaal audreyt: re: parsing post, this may be interesting to you as it promises linear time parsing for supported languages. I haven't read it yet so I don't know if Perl could be one. 20:27
# pdos.csail.mit.edu/~baford/packrat/
LeTo TimToady: this is about te same .pod problem as reading through p5 docs: 'perldoc perlre' seems to be the first .pod that is explaining p5 string escape chars ;) 20:30
20:55 frederico joined 21:07 elmex joined 21:11 PolettiX is now known as froh-doh
pmurias sleep& 21:12
21:29 weinig|away is now known as weinig
ruz where can I read differences of the Hash and Pair objects? 21:33
arcady a pair is a pair, and a hash contains a bunch of pairs 21:37
ruz why pair is not a hash with one pair? And also they have different declarations syntax. 21:40
21:46 stclare left 21:58 nnunley joined 22:00 Khisanth joined 22:07 rashakil joined 22:10 justatheory joined 22:15 larsen joined 22:30 justatheory joined 22:39 _mjk_ joined 22:47 dvtoo joined
spinclad audreyt: S06.pod, r8698: "Capture that correspond to named parameters are evaluated in scalar": 'Capture' should still be "Arguments". 23:01
23:13 larsen joined 23:27 drbean joined