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
|