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. |
|||
TimToady | pmichaud: pongongongong | 00:01 | |
pmichaud wanders back | |||
TimToady | just committed new S05 | ||
pmichaud | ooh, good timing | ||
two questions (hopefuly quick) | 00:02 | ||
first, p6l had opined from time to time that :w(&my_ws) would use a custom rule for whitespace -- is this blessed or speculative? | |||
TimToady | I'd say speculative for the moment. | 00:03 | |
pmichaud | okay, so thus far we allow :w as a boolean adverb that enables/disables <?ws> | ||
TimToady | Maybe less speculative with "use rule :w" and such. | ||
pmichaud | second question -- not quite as quick. How much room do we want to leave the rules compiler for optimization? (more) | 00:04 | |
TimToady | but I'm inclined to think you just redefine the ws rule. | ||
pmichaud | for example: rule myrule { hello world } | ||
TimToady | well, that's part of the motivation for defaulting to not backtracking... | ||
pmichaud | then later myrule("hello world", :w(1)) | ||
do we allow such a thing? | |||
TimToady | I wouldn't mind disallowing it by default. could always put a "use pessimize" at the top. :) | 00:06 | |
pmichaud | how about something like rx :w($foo) / ... / | ||
TimToady | you willing to compile it both ways? | ||
pmichaud | I'm willing to do whatever the language designer(s) say it should do :-) | 00:07 | |
but of course, we also have other adverbs... | |||
TimToady | The language designer is unwilling to say things that it shouldn't do. :) | ||
the question is whether those are instructions to the rule compiler or the eventual sub? | |||
pmichaud | yes | 00:08 | |
that is the question | |||
TimToady | I'd say they're compile time instructions to the rule parser. | ||
pmichaud | so, $foo is evaluated at compile time? | ||
TimToady | yes, I think. | ||
same is true of qq:foo($x) | 00:09 | ||
pmichaud | yes, that makes sense | ||
if someone needs a really dynamic rule, they can call the rule compiler directly at runtime, or use an eval | |||
TimToady | basically, arguments to the macro, not the produced code. | ||
pmichaud | okay, I buy all of that -- makes me happy | ||
TimToady | or write their rule as a method, or use $^a in their rule... | ||
cognominal_ | what is this coerce call mentionned in S05? | ||
TimToady | Just like @() only different. | 00:10 | |
pmichaud | of course, :keepall is special in that each rule has to be ready for it regardless of how it was compiled | ||
:parse is the same way | |||
TimToady | right. | ||
:parse? | |||
pmichaud | sorry, :panic | ||
TimToady | you had me parsing there for a bit... | 00:11 | |
buu | Are $^foo fariables still the block arugment.. magical.. variable thingies? | ||
pmichaud | okay, that's what I needed to know | ||
buu | Heh, variables. | ||
pmichaud | many thanks | ||
TimToady | I'd say more likely is "rule foo ($a, $b) :w {...} | 00:12 | |
and then you could use them from inside closures, where $^a wouldn't work. | |||
pmichaud | and if someone wants a runtime adverb, it's put in the rule signature | 00:13 | |
? | |||
TimToady | right, it's just a named parameter :a($x) | ||
pmichaud | poifect | ||
TimToady | that also presumably gives you <foo($x,$y)> and <foo mumble> stuff. | 00:14 | |
for appropriate sigs. | |||
pmichaud | some of these S05 changes will require redoing parts of PGE, but they're parts that needed bringing up to date anyway. Plus the parrot team finally has things far enough along that I can do better integration of PGE with other languages | ||
TimToady | hopefully they'll be viewed as improvements... | 00:15 | |
pmichaud | yes, I've been planning <foo($x,$y)>. PGE currently also supports the speculated <foo: mumble> form (which is really convenient for parsing and passing a string arg, btw) | ||
TimToady | that's partly why I put in <<<foo: mumble>>> | 00:16 | |
in case mumble has angles | |||
pmichaud | oh, yes. So, does this mean that <foo: mumble> is official? | ||
or still just conjectural? | 00:17 | ||
TimToady | slightly less conjectural, let's say. :) | ||
pmichaud | (I think conjectural is still fine) | ||
it's not hard to change if/when we get there | |||
TimToady | It doesn't really buy much over <foo('mumble')> | ||
pmichaud | it buys a bit from the rule parser end :-) | 00:18 | |
but I could go ahead and get the rule parser to easily handled single-argument forms for now | |||
*handle | |||
TimToady | you can leave it in for now. | ||
pmichaud | ah -- when it comes to implementation shortcuts, that's where I feel I get to impose my perogative over the language designers' :-) | 00:19 | |
TimToady | go for the gusto | ||
00:19
weinig joined
|
|||
pmichaud | so, we're now to regex / rule / token . Nice. | 00:20 | |
S05 no longer seems to summarize A05 (first sentence :-) | |||
I was wondering if <@abc|@def|@ghi> would end up with "longest-match" semantics like a hash? ;-) | 00:21 | ||
then I told myself I shouldn't mention such things to anyone :-) | 00:22 | ||
(oops) | |||
TimToady | do you hear a buzzing in here? | 00:23 | |
pmichaud | a small one, yes | ||
TimToady | I suppose it's entirely possible such a feature could happen by accident. | ||
pmichaud | could happen. Not happening now. :-) | ||
TimToady | and if a test for it snuck into the right place, it'd be official. | 00:24 | |
pmichaud | okay, that's all the questions I had for the moment. Long night of (re-)coding ahead :-) | ||
TimToady | kinda sorry, kinda not... | ||
pmichaud | I'm not sorry -- I like the new formulations a lot | ||
TimToady | yeah, but you said that last time, and the time before. :) | 00:25 | |
PerlJam doesn't like "regex", but who am I? :) | |||
pmichaud | and much of the stuff was going to be redone internally anyway (to bring PGE up to speed with Parrot lexicals and namespace changes), so it's extremely timely | ||
yeah, I feel a bit like Scott McClellan, since I've been telling everyone for a couple of years now that "regexes are now called 'rules'" | 00:26 | ||
"Oh, they're really called 'regex'" | |||
TimToady | We'll have to refer it to the Damage Control Committee, I guess... | ||
pmichaud | np | ||
kids are calling me to "Lego Star Wars", so bbl | 00:27 | ||
theorbtwo | Have fun. | ||
TimToady | nap & | ||
00:33
lisppaste3 joined
|
|||
Khisanth | but "rules rule!" sounds awkward :) | 00:34 | |
00:36
amnesiac joined
|
|||
buu rules Khisanth with a whip | 00:48 | ||
00:49
weinig joined
01:02
KingDiamond joined
01:28
Coke joined
01:34
beppu joined
01:41
drbean left
01:47
frederico joined
01:51
KingDiamond joined
01:55
YetAnotherEric joined
02:00
vel joined
02:12
dbrock joined
02:23
weinig joined
|
|||
geoffb | audreyt: I explicitely give permission to relicense as you see fit any of my code that still remains in the pugs tree. | 02:25 | |
(In reference to your blog entry) | 02:26 | ||
avar | "However, if people who have contributed to the src/ tree before feel uncomfortable about this change, that will necessitate a rewrite of those parts, so please voice your concerns." | 02:29 | |
almost anything is better than some stupid rewrite of code due to stupid legal issues;) | |||
dbrock | what is the goal of -Ofun? | 02:48 | |
Coke | ...to have fun? | 02:55 | |
03:00
FurnaceBoy_ joined
|
|||
SamB | it means "optimizing for fun" | 03:00 | |
03:05
saorge_ joined
03:55
fglock joined
04:05
KingDiamond joined
04:10
cognominal joined
04:31
drbean joined
04:41
fglock left
04:56
pdcawley joined
05:04
justatheory joined
06:02
joelbryan joined
06:36
arcady joined
06:44
iblechbot joined
06:55
pdcawley joined
07:03
mjk joined,
joelbryan left
07:09
marmic joined
07:13
Aankhen`` joined
07:16
pdcawley joined
|
|||
svnbot6 | r10049 | audreyt++ | * Disclaim my copyright over compilation of any Pugs releases as well | 07:28 | |
r10049 | audreyt++ | as for compilation of this repisitory. | |||
r10049 | audreyt++ | * Per Allison's suggestion, create a demonstratably legally separate | |||
r10049 | audreyt++ | third-party/ directory to put all code derived form upstream projects. | |||
r10049 | audreyt++ | All third-party parts under src/ will be moved here. | |||
r10049 | audreyt++ | * Check in the first member of third-party: Text.Regex.Lazy, a full | |||
r10049 | audreyt++ | Rule engine with .*+ and .*? control (modulo named captures and <ws>); we | |||
r10049 | audreyt++ | just need a surface syntax for it to run Perl 6 rules. :) | |||
r10049 | audreyt++ | (The PArrows approach I used before did not handle lazy streams | |||
r10049 | audreyt++ | and wouldn't allow piecemeal conversion from our Parsec rules | |||
r10049 | audreyt++ | into Rule rules.) | |||
07:28
Southen_ joined
07:29
Southen_ joined,
azuroth joined,
Southen joined
07:31
arcady joined
07:41
ayrnieu joined
|
|||
rgs | wow, now that's a commit | 07:45 | |
07:48
arcady_ joined
07:52
pdcawley joined
08:05
Cerial^Killer joined
|
|||
Cerial^Killer | having an issue with a while statement running off any help would be apprechiated pastebin/672860 | 08:06 | |
xinming | Cerial^Killer: I don't think you should ask here. :-) | 08:09 | |
08:14
iblechbot joined
08:22
pdcawley joined
08:25
pdcawley joined
08:33
fordinal joined
08:41
ghenry joined
08:44
macroron joined
08:57
dakkar joined
08:58
arcady_ is now known as arcady
08:59
macroron joined
09:01
macroron joined
09:13
macroron joined
09:31
marmic joined
09:51
kakos joined
10:06
Aragone is now known as Arathorn
10:13
igorsutton joined
10:40
macroron joined
10:44
lidden joined
10:51
elmex joined
|
|||
dakkar is away: pranzo | 11:03 | ||
nothingmuch | EARTLSCTOOLNG | 11:19 | |
i like the mit licensr | 11:20 | ||
short and sweet | |||
11:37
froh-doh joined
11:57
macroron joined
11:58
pawel joined
|
|||
pawel | hi | 11:58 | |
11:58
pawel is now known as pmurias
|
|||
azuroth | hey | 11:59 | |
12:01
KingDiamond joined
|
|||
Arathorn | distinct deadness in here today | 12:02 | |
pmurias | on which term can things in the pugs tree which have no copyright or legal info be distributed? | ||
s{pugs}{misc/pX} | |||
or is it undefined | 12:03 | ||
? | 12:04 | ||
12:05
iblechbot joined
12:09
ruoso joined
12:11
Toaster joined
12:12
merlyn joined
|
|||
ruoso | merlyn, heya... | 12:14 | |
12:14
kolibrie joined
|
|||
merlyn | hi | 12:15 | |
ruoso | merlyn, are you in brazil? | ||
merlyn | yes | ||
12:18
Limbic_Region joined,
merlyn joined
12:21
Coke joined
12:41
xerox_ joined,
fglock joined
|
|||
dakkar is back (gone 01:39:45) | 12:43 | ||
fglock | merlyn: hi! | 12:52 | |
merlyn | hey | 12:53 | |
pmurias | ruoso,fglock: hi | 12:54 | |
fglock | ruoso: we've got a sponsor for YAPC::SA | 12:57 | |
ruoso | wow... that's good | 12:58 | |
who? | |||
pmurias, hi | |||
fglock, YAPC::SA will be inside CONISLI, right? | 12:59 | ||
fglock | yes - but we are in the organization committee - so we can add more Perl to it :) | 13:00 | |
ruoso | that's really nice | 13:02 | |
xinming | May you do good and not evil. | 13:10 | |
May you find forgiveness for yourself and forgive others. | |||
May you share freely, never taking more than you give. | |||
People out the world won't take these 3 if there is no license... :-) | 13:11 | ||
theorbtwo | xinming: "May you" doesn't force terms upon you, which was the point. | 13:12 | |
(I'm having problems parsing your last line.) | |||
xinming | hmm, This is from audreyt's blog... I mean, there are many people which will get the source, and rename it and become his "own" | 13:14 | |
audreyt | and I... welcome that. | ||
xinming feels sorry about his poor English.... Xinming should practise... | |||
fglock | audreyt: ping | ||
audreyt | fglock: pong | 13:15 | |
fglock | audreyt: we've got a sponsor for YAPC::SA in november - would you come? | ||
13:15
Qiang joined
|
|||
theorbtwo | audreyt: You should probably collect URLs to people's copyright dedications/disclaimers. | 13:15 | |
ingy | seen bsb | ||
jabbot | ingy: bsb was seen 21 hours 19 minutes 40 seconds ago | ||
audreyt | theorbtwo: yes, doing that. | 13:16 | |
xinming | audreyt: hmm, won't you blame about that? I mean, even erase the copyright and all other things, and become their own.... :-/ | ||
audreyt | theorbtwo++ # thanks a lot :) | ||
xinming: I... welcome that. really :) | |||
theorbtwo | That's one reason I kept track of AUTHORS -- to make things a bit easier when this day came. | ||
xinming | audreyt: If you don't, then, I should help you on blaming that... :-) | ||
audreyt | theorbtwo: yup, and I have a set of contact data in openfoundry db | ||
xinming | theorbtwo: do you mean vi AUTHORS d G ? | 13:17 | |
audreyt | theorbtwo: for people actually committing code ("svk annotate" on src will show all involved parties) | ||
13:17
beppu joined
|
|||
theorbtwo | I don't know what d G does in vi. (I'm an emacser.) | 13:18 | |
audreyt | xinming: no no, not that. | ||
dG erases the whole file. | |||
xinming | :-) | ||
audreyt | AUTHORS is wonderful; it's a social construct | ||
xinming | theorbtwo: how about C-x h C-w ? :-) | ||
beppu | dG erases from the current cursor line to the end of the file. | ||
13:18
azuroth left
|
|||
audreyt | it's just the (revokable at any time) legal construct part of the Artistic and of the GPL that I'm trying to do without | 13:18 | |
13:19
azuroth joined
|
|||
azuroth | I was pondering how hard C-x h C-w might be to type, and... | 13:19 | |
xinming | azuroth: It's as easy as drinking. :-) | ||
theorbtwo | Ah, in that case, you should certianly use a public domain dedication, and not the license you're using, which /is/ revokeable. | ||
pmurias | GPL is revokable? | 13:20 | |
audreyt | pmurias: yeah, according to Eben | ||
it's a popular myth that it is not, but it really is | |||
beppu | what does it mean to "revoke" the gpl? | ||
audreyt | beppu: to cease to allow people to use your software under GPL. | 13:21 | |
xinming | beppu: your previous part belongs to public domain, and you can folk the one yourself | ||
13:21
particle_ joined
|
|||
audreyt | beppu: legally it _may_ be possible that earlier fork survives | 13:21 | |
but even that is controversial. | |||
theorbtwo | However, dedications of copyright interest to third parties or to the public domain are /not/ revokable (if done properly). | ||
audreyt | right, with creative commons's phrasing of Certifier | 13:22 | |
beppu | so something that's gpl'd now is not necessarily free in perpetuity. | ||
(...if the author decides to change his mind and un-gpl his work) | |||
pmurias | so if a past core developer of a project revokes the gpl, all his code needs to be rewritten | ||
? | |||
theorbtwo | Assuming he hasn't given away his right to do that, yes. | 13:23 | |
audreyt | pmurias: yes. | ||
beppu | is that a bug or a feature? | ||
audreyt | FSF thinks it's a bug I think | ||
pmurias | a bug | ||
if you use someones could he could blackmail you | 13:24 | ||
13:24
jserv-- joined
|
|||
pmurias | bbiab& | 13:24 | |
beppu | I imagine that this doesn't happen very much in practice. | ||
ruoso | audreyt, do you have some docs/links about the gpl revokability? | ||
xinming | while we are talking about this, It reminds me about the x-chat. :-) | ||
x-chat is great... but the author added the bomb in the source, and release the binary... which made many people angry... :-) | 13:25 | ||
I mean for windows people | |||
audreyt | ruoso: sure... www.wired.com/news/business/1,35258-0.html | ||
theorbtwo | ruoso: en.wikipedia.org/wiki/Public_domain | 13:26 | |
audreyt | en.wikipedia.org/wiki/Public_Domain - grep for "en.wikipedia.org/wiki/Public_Domain" | ||
er | |||
grep for "Revocability where no consideration" | |||
xinming | not Linux, In Linux, there is always people compiling the source. for Windows version, the author added a bomb and just release the binary... IMO, There is nothing to say... But I don't know what the deals is in GPL. :-) | ||
beppu | He must really hate Microsoft. | 13:27 | |
xinming | beppu: I don't think so... :-) | ||
lumi | Bomb? | ||
merlyn | "somebody set us up the bomb!" | 13:28 | |
lumi | YM "set up us" | ||
theorbtwo | No, he must really hate people who run binary version. | ||
merlyn | oops. :) | ||
I can never remember it literally. | |||
xinming | lumi: hmm, I mean the software will become unusable after 30 days without regiesteration. | ||
merlyn | I paraphrase the badly translated to autocorrect it. | ||
most microsoft software doesn't wait 30 days. :) | 13:29 | ||
lumi | It's thoroughly engraved in my brain | ||
xinming | www.xchat.org/windows/ | ||
merlyn | "born unusable!" | ||
xinming | here, It's still there. :-) | ||
merlyn: MS windows shouldn't be used much... eg: if Xp is running on a spaceship... the problem is, while it asks you for activation.... :-) | 13:30 | ||
lumi | Oh, well gee. Make it simpler to build? | 13:31 | |
merlyn | <dalekvoice>"activate - EXTERMINATE"</dalekvoice> | ||
xinming | lumi: that's not I'm aware of, after I can work with Linux, Windows is a bit like an advanced "gameboy" in software area. | 13:33 | |
theorbtwo | It seems more or less reasonable to me. Do users of the win32 binary version help the community? They obviously aren't going to be sending back patches any time soon. | ||
lumi | Give them the source and a compiler, they might | 13:34 | |
Anyway they can certainly write scripts etc | |||
theorbtwo | lumi: They're certianly free to get the source and the compiler, and stop using the version with the time bomb. | ||
lumi | I don't know X-Chat that well, but ISTR it had a scripting arch | ||
audreyt | oh. hm. interestingly, GPLv3 now explicitly states that it is irrevocable | ||
in the current draft | |||
xinming | lumi: do you mean distribute it with perl or a bash, or cygwin? | ||
merlyn | but what could that mean? | ||
theorbtwo | audreyt: Note that the wired article says that they're revocable even if they say otherwise. | 13:35 | |
audreyt | (GPLv2 didn't do that; neither does Artistic[12]) | ||
theorbtwo: right, but opinions differ on that | |||
merlyn | I can certainly release version 3 under one license, and version 4 under another one | ||
if I'm the copyright holder | |||
theorbtwo | OTOH, the WP article says that you might be able to make a promisory estoppel claim. | ||
lumi | No, most IRC clients have embeddeds scripting, I think X-Chat does as well... (Or does it use perl?) | ||
xinming feels confused by Licenses... :-/ | |||
audreyt | merlyn: sure, this has more to do of whether you can go back and say version 3 cannot be used under that license anymore | ||
merlyn has the same feeling about lawyers in general | |||
theorbtwo | merlyn: You can, but the question is if you can make the old license no longer apply to version 3. | ||
audreyt thinks it's a Very Good Reason to avoid licenses altogether and simply disclaim copyright | 13:36 | ||
merlyn | that would already make sense | ||
if I got software from you under a certain license, you shouldn't have unilateral rights to terminate that license | |||
that's a biased agreement | |||
audreyt | merlyn: sure, but for future users | ||
Limbic_Region | only question I have with disclaiming copyright is if someone is then able to copyright it themselves? | ||
merlyn | you should have rights to terminate *if* I fail to meet certain clauses | 13:37 | |
xinming | lumi: It doesn't need the full perl, and also, Do you need x-chat to install with the perl distribution? | ||
13:37
stevan joined
|
|||
audreyt | Limbic_Region: no, copyright cannot be obtained like that | 13:37 | |
Limbic_Region: but you can combine it with other copyrighted work of yours | |||
and claim that the whole, or the derived product, or the compilation, is copyrighted by you | |||
merlyn | Oh. that's how irrevocable could mean. once put out there, it would be forever under that license to all future users. | ||
lumi | xinming: You mean, would I require X-Chat to come with a full perl? | ||
audreyt | and set whatever term. | ||
merlyn | interesting | ||
ruoso | I think the problem is: "The GPL purports to grant a new license from the original grantor, rather than each succeeding author of a program granting a sub-license to the next" | ||
audreyt | ruoso: right, that's the crux of the problem | 13:38 | |
merlyn | Oooh. how could that work? | ||
especially if it's a derived work | |||
ruoso | I don't have a clue | ||
merlyn | it means I would own your work if you derive. | ||
ruoso | no | ||
lumi | Doesn't it licence you to licence it under the same or compatible terms? | ||
merlyn | if I have the right to control its license, then I own it | ||
ruoso | because a second agreement is needed to transfer the proprierty | ||
theorbtwo | en.wikipedia.org/wiki/Public_Domain#Case_law | 13:39 | |
merlyn | in any case, this is confusing | ||
the gplv3 track at FISL is today | |||
xinming | hmm, eg, someone ever wrote a software. and the authoer(someone) doesn't maintain it, and another one wants to maintain that, after a period, the whole software is rewritten, Can that author(maintainer) redistribute his version in different license? | ||
merlyn | I imagine RMS will have a lot to stay | ||
xinming | lumi: thanks... | ||
merlyn | to say | ||
audreyt | Limbic_Region: so, in practice, a copyright disclaimer (SQLite) versus a BSD/MIT license is that | ||
Limbic_Region listens closely | |||
audreyt | the former no longer requires attribution for derived works, and may not be revoked. | 13:40 | |
that's it. | |||
Limbic_Region would rather not copyright/license any of his code other than I wouldn't want anyone else to be able to prevent others from using/enjoying it | |||
audreyt | Limbic_Region: right... so if I take SQLite, derive from it, claim it mine | 13:41 | |
lumi | But it doesn't keep free | ||
audreyt | that's entirely OK | ||
but it doesn't prevent you from grabbing the same SQLite I took. | |||
in that regard it's exactly the same as BSD. | |||
Limbic_Region is fine with that | |||
Limbic_Region is even fine with someone taking my work and selling it | |||
merlyn | although BSD requires a tip-o-the-hat to the originator | ||
sqlite disclaims that | |||
audreyt | yup | ||
xinming | lumi: that's what I mean... In fact, Windows isn't for people who wish to compile something, even in VC... It's a pain if the system crashed.... In Gnu/Linux, at least, If the X window doesn't work, you can switch to console go on working while your repairing(or upgrade) the system... | ||
merlyn | the BSD license is very close to the artistic license | ||
theorbtwo | It does, yes. That makes it a license, and one without consideration for the author, and thus revokable. | 13:42 | |
merlyn | except for the "don't call your thing Perl" part | ||
ruoso | so... if you say "public domain" and put on sourceforge... no way to revoke... | ||
audreyt | merlyn: right, but Artistic 2.0b14 added some more bits | ||
merlyn: patent retaliation, more prominiently. | |||
merlyn | Ugh. I didn't get the memo. :) | ||
ruoso is getting back to the case_law | |||
merlyn will have to go read now | |||
audreyt | and also that TPF retains the right to update the terms for Artistic2 | ||
lumi | xinming: Although making a further buck on the backs of people who are already stuck in Windows (usually because they don't even know about an alternative).. A bit mean | 13:43 | |
audreyt | which seems to apply automatically, but that worries me, so I wrote to allison (but havn't got a reply yet) | ||
merlyn | so the license is legally held by TPF rather than Larry now? | ||
that's good | |||
audreyt | yup | ||
it's in general much better than A1 :) | |||
merlyn | TPF has automatic survivorship | ||
audreyt | allison++ # Artistic2 | ||
merlyn | Larry, on the other hand, is not bus-compatible. :) | ||
theorbtwo | Bus-compatable? | 13:44 | |
merlyn | big bus hitting larry | ||
audreyt | theorbtwo: TimToady is suspectible to bus errors | ||
merlyn | the classic "oops" scenario in software design | ||
theorbtwo | Aaah! | ||
merlyn | and organization design | ||
particle_ | bus error: passengers dumped | ||
lumi | The ol' exploding bus trick | 13:45 | |
theorbtwo | But what happens if TPF goes bankrupt, and is forced to sell the right to change the terms of the Artistic 2? | ||
merlyn | "sorry about that, chief"? | ||
audreyt | theorbtwo: then... well, we're screwed. | ||
merlyn | purchased by Guido. :) | 13:46 | |
xinming | hi, by the way, Do you here believe perl 6 will change the world, and becoming popular quickly rather than scaring people to learn perl 6 programming language? :-) | ||
audreyt | (which is why I find the new clause worrisome) | ||
xinming: Perl6 already changed my world... :) | |||
xinming | As for now, there are too many things to learn in perl 6 even if you are from perl 5. :-/ | ||
theorbtwo | This is one reason that the GPL doesn't allow switcheroo, but rather "any later version, at your option". | ||
audreyt | theorbtwo: Arttistic up to 2.0b5 at least does that as well | ||
it's a new feature in b14 | |||
xinming | audreyt: well, I mean the world. If that is what you mean, I should say, you and pugs changed my world... :-) | ||
audreyt | xinming: yeah. work on docs/Perl6/ in the pugs tree! | 13:47 | |
read the overviews, see if it makes sense, report quesions, etc | |||
merlyn | Flavio wants me to bring up the sin/time/divide/regex issue in this channel when both audreyt and pmichaud are around | ||
xinming | :-) | ||
merlyn | just to see how the current implementations deal with the issue | ||
I've already discussed the problem with both Larry and Damian earlier in life, but that was before implementations were as far along | 13:48 | ||
fglock | yup - like how the parser will tell things like 'func / ...' from 'func / rx /' | ||
theorbtwo | Um, what sin/time/divide/regex issue? I know a divide/regex issue, but what do sin and time have to do with it? | ||
merlyn | sin and time were my examples for prototypes | ||
sin / vs time / | |||
theorbtwo | Ah. | ||
merlyn | and userfunc1 / vs userfunc2 / | 13:49 | |
in the face of prototypes | |||
audreyt | fglock: circumfix // versus infix / ? | ||
merlyn: thank god perl6 has only three prototypes | |||
nullary, (optional) unary, and listop | |||
merlyn | but that still triggers the problem | ||
nullary vs listop | |||
so that means that you *must* execute code that defines prototypes during *compile* time | 13:50 | ||
and if so, the state of the symbol table has changed, and is that packaged alongside the P6AST for use in later stages? | |||
that's my current curiousity | |||
since the code that defines the prototype for userfunc1 can also set the variable $foo to "bar", and then append "x" to it, is "barx" included in the P6AST | 13:51 | ||
audreyt | oh ok, that | ||
that's a solved problem :) | 13:52 | ||
as you observed, the parser must keep an execution environment | |||
known as a "object space" | |||
anything that may be referred to from runtime, including the symbol table | 13:53 | ||
needs to be serialized and stored as part of the AST | |||
(more like, alongside the AST) | |||
each .pm file is separatedly compiled that way | 13:54 | ||
when we say the "main AST" we really mean | |||
"the AST structure accessible from the &Main::MAIN object in the serialized object space" | |||
theorbtwo | Seperately compiled? What happens when A.pm sets something in Main, then B.pm looks at it during compiletime, and compiles differently based on if it's set or clear? | 13:55 | |
audreyt | theorbtwo: the doctrine of separate compilation says | ||
each .pm file must be compiled without access to other compilation unit's object space | |||
the only thing allowed is explicit import via "use" | |||
and it's a clone, not a shallow shared copy. | |||
beppu | just out of curiosity, has anyone written a tutorial on perl 6 for people coming from perl 5? | 13:56 | |
theorbtwo | Hm, that places a limit on dynamicasim, but I don't think that's a big problem. | ||
audreyt | so, that means the compiler has to work as-if each .pm file is compiled in a different process | ||
particle_ | beppu: i think that's called the pugs test suite :) | ||
audreyt | and effectively makes macros (and other language-changing things) lexically scoped. | ||
(because you can't redefine what "if" means and affect other modules that does not import you.) | 13:57 | ||
we came up with this in the Toronto hackathon, and it's a good doctrine :) | |||
beppu | I figured it was too early for a tutorial. ;) | ||
audreyt | beppu: it's not - see docs/articles/tpr.pod | ||
beppu | thanks | 13:58 | |
audreyt | also, docs/Perl6/Overview/* | ||
there are also various other tutorials available on the web | |||
probably they belong to docs/Perl6/Tutorial/. | |||
xinming | beppu: read synopsis. :-) since perl 6 changed much in grammar :-) | ||
theorbtwo | Oh. I probably knew that doctorine then, then. | ||
audreyt | it might be even you who raised this discussion (or was it nothingmuch.) | 13:59 | |
13:59
merlyn joined
|
|||
merlyn | bleh. my screen emacs went sour | 13:59 | |
But what I saw, looked like it addresssed the issue | |||
audreyt | cool :) | 14:00 | |
merlyn | this also means that every compiler has to have an execution context | ||
audreyt | there's no longer action-at-a-distance | ||
if your main.p6 says | |||
merlyn | is that the case? | ||
audreyt | use foo; | ||
use bar; | |||
foo cannot ever affect how bar is compiled. | |||
(unlike in p5) | |||
merlyn | Oh. that's cooler | ||
except that I've used that to work around bugs. :) | |||
audreyt | merlyn: it's called "doctrine of separate compilation" | ||
merlyn | so now I will have to have other hooks to do that. | ||
audreyt | yeah, you can use | 14:01 | |
merlyn | after use bar, I can poke into bar's space, right? | ||
beppu | xinming: The synopses look useful. thanks. | ||
audreyt | module bar; use foo; class foo:::moose is extended { ... } | ||
and even override their symbols etc, or itnroduce pre/post hooks | |||
xinming | beppu: yw. :-) I'd say most people read synopsis as a start of learning perl 6. :-) | ||
audreyt | so all the dynamic klugability is still there | 14:02 | |
it's just not allowed to affect the static (compile time) part. | |||
merlyn: also larry ruled (during OSDC.il) that if you say | 14:03 | ||
./pugs -O moose.p6 | |||
xinming | audreyt: in docs/Perl6/ Is the document mirrored from @Larry's synopsis? | ||
audreyt: hmm, in docs/Perl/Spec/ | |||
as the doc in Spec isn't up-to-date | |||
audreyt | then the dynamic extension can be forbidden by the optimizer | ||
xinming: it is, and clkao is supposed to help keeping the mirror current by fixing the merge process... | 14:04 | ||
clkao: got any luck adjusting the merge ticket? | |||
xinming: it's temporarily out of sync. thanks for the reminder | |||
14:05
FurnaceBoy joined
|
|||
xinming | audreyt: hmm, IMO, why should spec in docs? as we can create a small script to dynamically download it, and rename it. :-/ | 14:06 | |
audreyt | xinming: oh, I have that script | 14:07 | |
14:07
justatheory joined
|
|||
audreyt | xinming: you think it makes more sense that way? | 14:07 | |
xinming: can you fix Makefile.PL in docs/Perl6/Makefile.PL so it does that? | 14:08 | ||
the renaming table is | |||
01 Overview 02 Syntax 03 Operator 04 Block | |||
05 Rule 06 Subroutine 09 Structure 10 Package | |||
11 Module 12 Object 13 Overload | |||
xinming | audreyt: No, what I think is, we don't need the Spec dir in Perl6 yet, as every time we need it, eg, call make install and no need for people to maintain it... Since all of us like laziness. :-) | 14:09 | |
merlyn | now we just need to get some complete end-to-end solutions that work fast, and get people using perl6. :) | ||
audreyt | the upstream is svn.perl.org/perl6/doc/trunk/design/syn | ||
merlyn: working on that! :) | |||
merlyn | Yup | ||
fglock's work sounds exciting | |||
audreyt | it is very exciting, as I suspect people don't only want end-to-end | 14:10 | |
merlyn | now we just need either ponie or larry's p5-to-p6 working, and life is good | ||
audreyt | they want end-to-end-that-hooks-to-existing-end | ||
unfortunately, p5-to-p6 has no champion | |||
(neither does ponie at this point) | |||
merlyn | well - if the p6 rules can be subclassed to provide a p5 translater, that'd be interesting. :) | 14:11 | |
given that p5 is a semantic subset... | |||
so once we get the p6 compiler written in rules, then the rules can also be tweaked to parse p5 | 14:12 | ||
audreyt | (afk, bbiab) | ||
rgs | sounds doubtful | ||
theorbtwo wonders if you could convert perly.y to p6 rules. | 14:13 | ||
Even better, if you can generically convert yacc grammars to p6 rules. | |||
merlyn | the interesting parts of perl5 parsing is not the perly.y, but the interaction between that and the lexer. | ||
theorbtwo | ...and how hard it is to do the insanity that perl5 does to yacc's output after that. | ||
merlyn | so it might be faster to come at it from subclassing the p6 rules | 14:14 | |
theorbtwo | Hm. | ||
merlyn | leveraging off the semantics already computed | ||
theorbtwo | You have to start somewhere, and I bet perly.y is closer then perl6. I'm hardly an expert on perl5 internals, though. | 14:15 | |
RGS? | |||
14:15
KingDiamond joined
|
|||
rgs | perly.y might be clearer, but fear the dark side of toke.c | 14:15 | |
merlyn | I bet perly.y and p6-rules will be closer than most people realize | ||
fglock | theorbtwo: I've been experimenting with that - I think we could have a special "rule" that implemented bottom-up | ||
particle_ | theorbtwo: that seems to be a perl6 problem, not enough people with perl5 internals expertise | 14:16 | |
merlyn | they have to have a common look, because the core semantics of Perl are still common | ||
rgs | "not enough people with perl5 internals expertise" is also a perl5 problem | ||
make babies ! | |||
particle_ | this is true | ||
theorbtwo | Heck, it's a large part of the reason for the perl6 project in the first place, as I understand it. | ||
xinming | audreyt: is your svn script for Perl6/Spec in pugs tree? if it is in, where I can find it... If It's lost.. I think I have to write myown. :-/ | 14:24 | |
beppu | If I wanted to type a hyperoperator in emacs, you would I do it: (For example, >>*<< with the >> and << turned into unicode chars.) | 14:30 | |
s/you/how/ | |||
theorbtwo | beppu: docs/Quicref/Unicode, or something like that... | 14:31 | |
beppu | thanks | ||
xinming | it seems, we have to lookup up the character in unicode table many times... :-) | 14:32 | |
theorbtwo | svn.openfoundry.org/pugs/docs/quickref/unicode | ||
beppu | What's the difference between a logical && and a junctive & ? | 14:35 | |
particle_ | a junctive like a set, one value that contains many. | 14:38 | |
& and | are used to create the junctions, eg. (42&7) creates a junction of two values, 42 and 7 | 14:39 | ||
using 'and' semantics | |||
(5|3) creates a junction with 'or' semantics | 14:40 | ||
see S03, 'Junctive operators' section for info on the ops | |||
beppu | my $junction = 42 | 7; # is something that stands for (42|7) ? | ||
14:41
vel joined
|
|||
particle_ | $junction would contain a junction of two values | 14:42 | |
$res = $junction + 4; # $res contains (46|11) | |||
beppu | that's a trip. | 14:43 | |
particle_ | this came out of perl5's quantum::superpositions | 14:44 | |
beppu | I like it. | 14:46 | |
It seems like pugs has already implemented a lot of Perl 6. What's left to implement? | 14:47 | ||
particle_ | there's a TASKS file in the root, for a start | 14:49 | |
beppu | cool. you've all documented this project well. | 14:50 | |
particle_ | i'm just an observer. i got my commit bit at yapc::na last year, but haven't committed anything yet :) | 14:51 | |
theorbtwo | Hm, is it the case that ?($x & $y) == ?($x && $y), always? | 14:55 | |
particle_ | i don't know what a junction returns in boolean context | 14:57 | |
theorbtwo | Nor do I. | 14:59 | |
xinming | :-) I think it might be... 1|2 --> true, 0|0 --> false, 0|1 --> true, 0&1 -> false, 1&2 -> true, :-) | 15:02 | |
I'm not sure... | |||
beppu | I thought _ was going to be a string concatenation operator, but I don't see it mentioned in svn.openfoundry.org/pugs/docs/Perl6...erator.pod | 15:06 | |
How is one supposed to concat strings together? | 15:07 | ||
integral | beppu: ~ now | ||
beppu | i see. | ||
15:08
_bernhard joined
|
|||
beppu | ~ seems to be the prefix for anything stringy.. although, I'm not sure I understand the concept of shifting strings. I tried ~< and ~> in pugs, but I wasn't sure what to make of the results. | 15:09 | |
What does it mean to shift a string left? | |||
particle_ | junctions in binary context aren't tested in t/junction/ | 15:10 | |
theorbtwo | beppu: We're still struggling with that a bit. | ||
In general, you think of the string as a long binary number, shift that, then think of it as a string again. | 15:11 | ||
beppu | that's what it kinda looked like. | ||
theorbtwo | And yes, ~ is supposed to mean stringy, in general, just as + means numeric, and ? means boolean. | ||
beppu | kindof like a hyperoperator for chars... | ||
theorbtwo | Well, kind of, except for overflow. | 15:12 | |
?eval "\x[80]" ~< 1 | |||
15:12
evalbot_10048 is now known as evalbot_10049
|
|||
evalbot_10049 | "\d[0]" | 15:12 | |
beppu | no saturation | ||
theorbtwo | That should probably be "\d1\0". | ||
That is, chr(1).chr(0) | 15:13 | ||
beppu | oh.. you think it should go so far as to prepend chr(1) on overflow? | 15:14 | |
particle_ | chr(1) ~ chr(0) | 15:15 | |
theorbtwo | Er, right, sorry. | ||
I think in perl5. It's a nasty habit, but when I write perl5 I still keep getting warnings about @foo[$bar]. | |||
beppu | I'm trying to imagine how string shifting could be useful. | ||
particle_ | i think in perl5, and occasionally in pir. <barbie>perl6 is *hard*</barbie> | 15:16 | |
beppu | Why would I want to do a bitwise shift on a whole lot of chars at once? | ||
particle_ | beppu: think vec() | ||
dunno, but it's there | |||
theorbtwo | When parsing from bitty specifications. | 15:17 | |
It'd be lovely when I was messing with DVB a while back. | |||
15:17
frederico joined
|
|||
theorbtwo | Perhaps sometime when I'm feeling like going back to it, I'll clean up and release my automagical transcriber. | 15:18 | |
particle_ | what's the name of the win pugs distro, pxpugs? | ||
maybe pxperl | |||
theorbtwo | ...and bitty.pm. | 15:19 | |
15:19
xinming1983 joined
15:20
xinming1983 joined
15:21
aufrank joined
15:22
xinming1983 is now known as xinming
15:35
turrepurre joined
15:36
penk joined
|
|||
audreyt | xinming: see my last commit | 15:40 | |
svnbot6 | r10050 | yiyihu++ | Edit docs/Perl6/Makefile.PL. So that It will update docs/Perl6/Spec from "svn.perl.org/perl6/doc/trunk/design/syn" automatically. | ||
r10050 | yiyihu++ | In docs/Perl6/Spec/, S17.pod(Threads.pod) and S29.pod(Functions.pod) isn't in Spec yet, Added... | |||
r10050 | yiyihu++ | Update files in docs/Perl6/Spec too... :-) | |||
r10051 | audreyt++ | * Perl6::Doc Makefile.PL: tweak it to use LWP::Simple | 15:42 | ||
r10051 | audreyt++ | instead of /usr/bin/svn to save bandwidth. | |||
xinming | :-) | ||
audreyt: thanks | |||
audreyt | also, that probably means we can rm the files from the repo and let people download it themselves | 15:43 | |
I'll do that | |||
svnbot6 | r10052 | audreyt++ | * Threads.pod => Concurrency.pod | ||
r10052 | audreyt++ | * Functions.pod is a better name for Builtins.pod | |||
audreyt | done | 15:46 | |
Limbic_Region | audreyt - is the Pugs release plan changing with all the new directions it is going? | ||
svnbot6 | r10053 | audreyt++ | * now that the Spec files can be fetched automatically by | ||
r10053 | audreyt++ | Makefile.PL, remove them from the repo to reduce out-of-sync | |||
r10053 | audreyt++ | errors. | |||
xinming | audreyt++ | ||
audreyt | Limbic_Region: yeah, the 6.2 level spec has been effectively restructured | ||
Limbic_Region | is it updated anywhere? | 15:47 | |
audreyt | you mean the release plan? | ||
I mean the Synopses | |||
the relevant part of synopses renders the once-complete 6.2-level features | |||
incorrect | 15:48 | ||
Limbic_Region | I mean Pugs Apocryphon 1 | ||
audreyt | oh. the milestones still stand | ||
it's just we can't move toward 6.28.0 without getting the 6.2.0 milestone working again | |||
namely, that binding, assignment and function calls | |||
as well as hashes and arrays | |||
works totally differently now | |||
Limbic_Region | ok - even though we are simultaneously working on future milestones too | ||
audreyt | that always happens anyway :) | 15:49 | |
but there is a logical dependency | |||
Limbic_Region | okie dokie - | ||
audreyt | and as such I'm not comfortable with declaring "full rules support" | ||
without even supporting the new calling convention | |||
ditto for objects. | |||
on the other hand, it's much easier to implement now. | 15:50 | ||
(compared to the pesudoreference autodereferncing passthru | |||
morphing container hoops we had to jump through.) | |||
Limbic_Region waits for Xmas | 15:52 | ||
TimToady | audreyt: your ||= //= change did change the semantics, from "succeed once" to "try once". | ||
?...? in P5 is succeed once. | 15:53 | ||
audreyt | apologies. r8899. | 15:56 | |
TimToady: so, have you thought (or worked on) the idea of formulating the operator-table parser as rules? | 15:58 | ||
15:58
SamB joined
|
|||
TimToady | not much. You'd have to capture the same info that the declarations currently capture | 16:00 | |
audreyt | <%term|%prefix|%circumfix> ... | ||
TimToady | and you'd either have to not promise things you shouldn't promise | ||
or mark it as "for bootstrap only" so allowed to recognize a subset. | |||
audreyt | elaborate on the capture-the-same-info part? | 16:01 | |
TimToady | the hard part is capturing new precedence levels on the fly, I expect | ||
16:01
saorge joined
|
|||
audreyt | hm? | 16:01 | |
TimToady | infix:<!!!> is tighter(*) | ||
audreyt | each precedence level is recursively the lower precedence level's "term" | 16:02 | |
so each new level recompiles the rule | |||
TimToady | yes, but you tend to get into static/dynamic issues. | ||
it can probably be made to work | |||
I just banged my head on it a long time a couple of years ago before I decided not to think about it for a while. | 16:03 | ||
audreyt | I mean, Parsec currently works like that, and granted it doesn't do circumfix | ||
TimToady | I have no problem is someone else wants to think about it. | ||
*if | |||
audreyt | but if it does, then that makes operators->token much simpler | ||
TimToady | operators->token? | 16:04 | |
audreyt | given a set of operators | ||
with their fixity arity associativity info | |||
generate a set of tokens | |||
each represents a precedence level | |||
"token" rules, sorry | |||
TimToady | gotcha. | 16:05 | |
audreyt | currently the opp engine exists somewhat outside-the-system | ||
conceptually | |||
and it'd be cool if it can be exposed to the user under the match framework | 16:06 | ||
TimToady | what I was thinking about a long time ago was more on the order of how you use a fixed set of rules to interpret an optable | ||
audreyt | I'll try to code it up some more tomorrow; just want a sanity check :) | ||
TimToady | but if you're allowed to rewrite the "come from" rules then it works. | ||
audreyt | yeah, I think it's inevitable | ||
of course we can always cheat | 16:07 | ||
and have them recursively call a dynamically interpolating | |||
"construct_the_next_level_from_here" | |||
subrule | |||
which takes a prec as argument | |||
find the next currently existing prec | |||
compile that recursively | |||
TimToady | what you run into while parsing is that then you can hit an intermediate level | ||
audreyt | and return the term rule. | ||
TimToady | between your current prec and the constructed | ||
audreyt | I think you always has to passthru. | 16:08 | |
(that's what parsec does) | |||
(because otherwise it can't be made to work) | |||
TimToady | don't grok passthru while running a fever | ||
audreyt | aww. gesundheit | ||
passthru means if you have three prec levels | |||
* + err | 16:09 | ||
and you see "1 err 3" | |||
it always pass through the *-level and +-level <term> first. | |||
TimToady | you can theoretically construct another level while in the middle of all that. | ||
audreyt | but that level gets a number | 16:10 | |
TimToady | 1 + do sub infix:<!!!> ... | ||
audreyt | so if it's lower than current, it works transparently | ||
but if it's tighter... I see your point. | |||
if it's tighter, we need to recompile. | |||
TimToady | yeah. but again, it's fine for bootstrap or for error reporting. | 16:11 | |
xinming | what does junction return in bool context and list context? | ||
TimToady | list context is easy--it's just a scalar. | ||
audreyt | it doesn't flatten, that is | ||
TimToady | in boolean context it just does whatever the junction specifies. | 16:12 | |
audreyt | and returns a boolean | ||
TimToady | when you say "if any(@x) == 1" you're always evaluating an any() in boolean context, albeit after the == has transformed it to a different any(). | 16:13 | |
audreyt | TimToady: actually, now I think about it, a doubly linked list between level-tokens fixes that. | 16:14 | |
if you insert a new level that's looser when you are parsing one level | |||
TimToady | fine, you've just constructed an op table. :) | ||
audreyt | the reduce can find the newly compiled level by looking up that globally linked list :) | 16:15 | |
er, it's a list of compiled tokens for each prec level, but yeah, operationally it's equivalent :) | |||
(wouldn't do what you expect it to do if it is not :)) | |||
TimToady | how to specify precedence on a token? | 16:16 | |
pmichaud | audreyt: btw, I'm currently reworking (and adding comments) to OPTable.pir | ||
audreyt: (but it's the OPTable.pir that is in the pge-pm branch of the parrot repo) | |||
audreyt | TimToady: each token when compiled gets a rational number | 16:17 | |
TimToady | I prefer strings... | ||
audreyt | TimToady: it uses that number when entering "term" position | ||
ok, a rational number serialized to ASCII | 16:18 | ||
TimToady | isomorphism++ | ||
audreyt | when it enters "term", it calls interpolating-tighter-level | ||
(which can be memoized) | |||
which returns the next tighter token | 16:19 | ||
or the original "term" if it's the currently highest prec. | |||
that function gets the rational string as input | |||
TimToady | I just think strings are easier to diff than things with different divisors. | ||
(for human visual diff, I mean) | |||
audreyt | ok :) | ||
sure | |||
anyway. when it finishes parsing | 16:20 | ||
the "term" | |||
TimToady | plus you get surreal precedence for free, if you need to introduce infinities. | ||
audreyt | the term-token returns the match | 16:21 | |
as well as its rational string | |||
now the upper-token can recheck if a new level as since been introduced | |||
and redispatch to that | |||
again that is suspectible to memoization | 16:22 | ||
Juerd | Results 1 - 2 of about 3 for "surreal precedence". (0.33 seconds) | ||
TimToady | lazy passthru you mean? | ||
audreyt | yes. | ||
TimToady | probably both of them me... | ||
audreyt | pmichaud: ooh, didn't know there's a branch | ||
excellent, I'll sync up | |||
Juerd | Since Google only points to wall.org and a #perl6 log... What's surreal precedence? | ||
audreyt | Juerd: it's an encoding for "is tighter" levels | 16:23 | |
pmichaud | audreyt: I just started the branch this morning -- there are a number of changes I want to introduce but I don't want to block punie/apl/pheme in the process | ||
TimToady | when you add new prec levels on the fly, it's done by lengthing the string to be le or gt shorter strings | ||
basically every string ends with a sentinal that puts it in the middle of the next set of precedence levels. | 16:24 | ||
Juerd | So it's just implementation, not language? | ||
TimToady | yes | ||
Juerd | Pfew. | ||
Thanks :) | |||
TimToady | In P6 everything is relative to existing prec level. | ||
pmichaud | juerd: want a detailed example? | ||
Juerd | pmichaud: Well, one might be useful in a somewhat more permanent place | 16:25 | |
audreyt | Juerd: and I call them "rational string" because | ||
LooserThan {} -> prec - 1 % (denominator prec * 2) | |||
TighterThan {} -> prec + 1 % (denominator prec * 2) | |||
pmichaud | Juerd: okay, I can add one | ||
Juerd | Like, documentation, or a wiki | ||
TimToady | Except you don't get infinities with that. | ||
audreyt | TimToady: where is infinities used? | ||
pmichaud | in PGE, it's looserthan: -> substr prec, -1, 0, "<" | ||
audreyt | and what does it mean anyway? :) | ||
pmichaud | tighterthan: -> substr prec, -1, 0, ">" | ||
TimToady | with string, you can add a character +1 or +1 for tigher/looser, or 0 or 255 for "infinity". | 16:26 | |
It probably isn't the way you want to do parens anyway... | |||
audreyt | it isn't... | 16:27 | |
audreyt tries to think of a use case | |||
but I can get that if I say *3 or *4 above. | |||
TimToady | I think anything with brackets should always switch to top-down. | ||
audreyt | but anyway, it's really trivia :) | ||
TimToady | yes. | ||
it's more inspired by surreal numbers than isomorphic to them. | |||
audreyt | TimToady: uh, wait | 16:28 | |
1 + ( 3 * 4 ) # top-down? | |||
I believe both pmichaud and fglock uses circumfix:<( )> here | |||
TimToady | if you're doing op prec, the () is a term to the +. | ||
audreyt | circumfix can appear at term position... | 16:29 | |
pmichaud | audreyt: yes; TimToady has suggested that bracketing things should be done top-down, I just haven't convinced myself of it yet | ||
audreyt | the parsec one does it with topdown | ||
TimToady | Let's you take the infinites out of op prec. | ||
audreyt | by redispatching anything in postcircumfix or circumfix back to the term table | ||
TimToady | basically anything inside () is infinite tighter than anything outside, so might as well be top down. | ||
It just becomes a rule parameterized by terminator. | 16:30 | ||
or terminator set. | |||
audreyt | or terminator governors. | ||
TimToady | governators... | 16:31 | |
basically the subrule promises "I'll be bock." | |||
16:31
FurnaceBoy joined
|
|||
audreyt | proto 'circumfix:( )' is equiv('term:') | 16:31 | |
TimToady | sure, on the outside. | 16:32 | |
inside/outside is the same surreal experience as left/right listops. | |||
pmichaud | maybe proto 'circumfix:( )' is equiv('term:') is parsed(&subexpression) | ||
TimToady | only with a different governator. | ||
audreyt | pmichaud: how does it work with parrot opp? | 16:33 | |
when you drop into the :(, you get back to the toplevel? | |||
pmichaud | circumfix is in the opp table | ||
audreyt | (prec-wise) | ||
s/toplevel/lowest-prec level/ | |||
pmichaud | a circumfix open is considered lower precedence than any other op except the close | ||
audreyt | ah right. | 16:34 | |
ok, that's what TimToady meant by infinities | |||
pmichaud | how about ternary? Currently PGE treats ternary as a special form of circumfix | 16:35 | |
TimToady | maybe surreal rationals would work... :) | ||
I think it's a special form of infix. | |||
pmichaud | that too :-) | ||
audreyt | ternOp pre post syn = (`Infix` AssocRight) $ do symbol pre y <- ?parseExpWithTightOps symbol post return $ \x z -> Syn syn [x, y, z] | 16:36 | |
translated: | |||
TimToady | where the is parsed just goes and looks for two expressions with :: between | ||
pmichaud | er, !! | ||
(or did you change that again?) | |||
TimToady | *!! | ||
audreyt | it's infix associated to the right, with a customized "is parsed" between them | ||
TimToady | I have to run, any questions hanging fire? | ||
pmichaud | PGE essentially does that as well | 16:37 | |
I have no burning questions atm | |||
audreyt | that is, the custom "is parsed" makes the infix operator itself "fat" | ||
in (1 ?? 2 !! 3), "??2!!" is a infixop | |||
TimToady: fine here :) | |||
pmichaud | audreyt: right, I get it, np | ||
audreyt | only thing I don't understand is that where does it get the in-part | ||
pmichaud | right. I think I'll stick with what I have for now :-) | 16:38 | |
audreyt | I mean, currently I hardcode it so it parses one level looser than it | ||
so | |||
1 ?? 2 => 3 !! 4 | |||
can work | |||
but should it? | |||
(=> is loower than ??!!) | |||
TimToady | not allowed in Perl 5. | 16:39 | |
audreyt | but p5 allows | ||
1 ?? $x = 5 !! 6 | |||
and = is also one level lower. | |||
TimToady | = is tighter | ||
audreyt | it is? | ||
pmichaud | it is? | ||
TimToady | er... | ||
audreyt | no way | ||
TimToady | blame it on the fever | ||
audreyt blames the fever | |||
so, anyway, that is the one inconsistency I've always wondered. | 16:40 | ||
pmichaud | isn't => the pair constructor? | ||
(in p6) | |||
audreyt | pmichaud: yup | ||
same level as = | |||
pmichaud | so it's tighter than ?? !! | ||
audreyt | nope. | ||
see S03 | |||
TimToady | I don't know when that snuck into P5. I distinctly remember deciding the other way... | ||
pmichaud | oh, that's new | ||
audreyt | so, we can "fix"this | ||
by swapping ??!! with = | 16:41 | ||
that's all | |||
fg | |||
for the next level is listfix | |||
and that is surely bad. | |||
$ print(1 ? $x += 4 : 5) | |||
4 | |||
pmichaud | what's the rationale for => same as =? | 16:42 | |
TimToady | ah, just cancelled my appointment, so don't have to run. | ||
audreyt | "blame" says | 16:43 | |
---------------------------------------------------------------------- | |||
r8273 (orig r6653): larry | 2005-11-24 00:07:44 +0800 | |||
- nonchaining binary => but does cmp <=> .. ^.. ..^ ^..^ till | |||
+ assignment = := ::= += -= **= xx= etc. (and also =>) | |||
TimToady | primarily to make a => b => c => d right associative | ||
audreyt | ah. right. I remember that | ||
TimToady | because that's Lisp's '.' | ||
audreyt | "=> now reads "cons"" | ||
TimToady | for some definition of "is" | 16:44 | |
pmurias | pm: IMHO they both imply relationship | ||
pmichaud | I'm just thinking of autoquoting | ||
audreyt | TimToady: oh btw | 16:45 | |
pmurias | pm: and they share 50% of the syntax :) | ||
audreyt | func( name => 42 ) | ||
vs | |||
func( $flah ?? name => 42 !! foo => 10 ) | |||
TimToady | speaking of autoquoting, yesterday I was thinking about BNF: <ident> ::= ... | ||
audreyt | there is no parens, and I wonder if it's a named form or a pair literal. | ||
TimToady | but it was an idle notion. | ||
audreyt | (current spec has it as pair literal) | 16:46 | |
but I guess you can always say | |||
func( *($blah ?? name => 42 !! foo => 10) ) | |||
so pretend I never asked :) | |||
masak | uh, in languages/perl6/lib/grammar_optok.pge, should proto 'postfix:--' really be equiv('postfix:++')? seems strange | ||
audreyt | masak: same as p5 (and everyone else), no? | 16:47 | |
masak | audreyt: I don't know | ||
audreyt | TimToady: so... I think allowing => inside ??!! is useful | ||
theorbtwo | masak: It's not saying that they have equivelent effects, just equivelent precidence levels. | ||
audreyt | and other assignments probably not that bad (p5 does it anyway) | 16:48 | |
masak | theorbtwo: ah | ||
thx | |||
audreyt | TimToady: so maybe juptaxose the levels? | ||
TimToady | except wouldn't that parse as | ||
($blah ?? name => 42 !! foo) => 10 | |||
audreyt | not if => is tighter | ||
both are rightassoc | |||
TimToady | juxtapose doesn't mean swap | 16:49 | |
rw-rw-r-- | audreyt: Awesomest. Spelling of juxtapose. Ever. | ||
audreyt | ok. barter them, then | ||
1 + 2 * 3 # 2*3 first | |||
TimToady | I never make snap judgements about precedence... | 16:50 | |
audreyt | 1 ??!! foo => 4 # foo=>$ first | ||
(treating anything inside ??!! as invisible) | |||
theorbtwo | Oh! | ||
theorbtwo finally sees what you meant about it being infix. | |||
audreyt | sorry if I wasn't clear :) | 16:51 | |
theorbtwo | You see the ??, and grab stuff until the !!, and parse it seperately. | ||
pmichaud | so, ternary really becomes more circumfix than infix, in that $a = $x ?? $b = 5 !! 7 the ?? is tighter, but the = inside of ??!! is looser than ?? | ||
theorbtwo | You were probably clear to everyone who has written a real compiler. | ||
16:51
DaGo joined
|
|||
pmichaud | s/looser/tighter | 16:51 | |
TimToady | you're basically turning ??!! into () from the inside view | ||
audreyt | righ | 16:52 | |
t | |||
TimToady | but I don't think that helps the right side | ||
theorbtwo | No, sorry, that was me being distracting. | ||
audreyt | which is what the problem was | ||
indeed | |||
TimToady | $w = $x ?? $y !! $z would break if we swapped prec | ||
audreyt | ?eval 1 ?? 2 => 3 !! 4 => 5 | ||
16:53
evalbot_10049 is now known as evalbot_10053
|
|||
evalbot_10053 | ((2 => 3) => 5) | 16:53 | |
TimToady | and would definitely not be what a C programmer would expect. | ||
audreyt | how does p5 do that then | ||
pmichaud | right. From a PGE perspective, I think I need to be able to offer the traditional semantics for other languages | ||
audreyt | it's as if the ? side and : side behave with two precs. | ||
pmichaud | even if Perl 6 does it differently | ||
audreyt | ok then... | 16:54 | |
so, the prec stays the same | |||
TimToady | I think I'd rather just get a syntax error on = inside ??!! | ||
audreyt | the evalbot behaviour above remains | ||
16:55
lumi joined
|
|||
audreyt | and the thing inside ??!! is by normal prec level | 16:55 | |
which makes = inside it an error. | |||
TimToady | and => inside ??!! | ||
audreyt | "normal" defined to mean "whatever ??!! does" | ||
TimToady | our conversation looks really exciting??!! | ||
audreyt | indeed??!! | 16:56 | |
pmichaud | (btw, this is why PGE_OPTABLE_TERNARY appears just above PGE_OPTABLE_INFIX and just below PGE_OPTABLE_POSTCIRCUMFIX -- it has aspects of both) | ||
TimToady | to get a syntax error on $x ?? $y = 1 !! $z requires governator of both max precedence and !! | 16:57 | |
pmichaud | PGE sees that as an unclosed ?? | 16:58 | |
(when it hits the '=') | |||
16:58
elmex joined
|
|||
TimToady | good, but I presume the precedence is currently hardwired rather than passed in as a parameter | 16:58 | |
Juerd | Would $x ?? ($y = 1) !! $z still work? | ||
TimToady | sure | 16:59 | |
pmichaud | juerd: yes | ||
Juerd | Ok | ||
TimToady | I don't mind forcing parens where people would misparse visually anyway. | ||
pmichaud | TimToady: depends on what you mean by "hardwired". It's hardwired in the same sense that the circumfix operators are | ||
i.e., one can do looser(ternary:?? !!) or tighter(ternary:?? !!) and it does the right thing | 17:00 | ||
TimToady | okay, it's not top down on ??!! currently. | 17:01 | |
pmichaud | right | ||
TimToady | I'm just saying if it were top down there, you'd have to parameterize with prec as well as !! | ||
pmichaud | right | ||
audreyt | right, that's what I do currently | ||
and I had to arbitarily add 1 to it | |||
and I'm happy it can be gone :) | 17:02 | ||
TimToady | we aim to please. | ||
and sometimes that's fun. :) | |||
audreyt | :) | ||
pmichaud | back to updating the opp | ||
TimToady | I should probably whack some on S03 then. | 17:03 | |
never documented ()= stuff yet either. | |||
'cept on p6l | |||
audreyt | TimToady++ | 17:04 | |
audreyt goes looking at pmichaud's branch | |||
pmichaud | audreyt: no commits there yet -- look again in a couple of hours | ||
TimToady | then it makes it easy to look at. :) | ||
audreyt | perl5.004 has 1?$_=2:4 support | 17:07 | |
(perl1..4 doesn't it seems) | |||
not sure about anything before 5.004. | 17:08 | ||
17:09
kakos joined
|
|||
TimToady | and there's always do if 1 { $_ = 2 } else { 4 } now, so that also says we probably shouldn't change the precedence of = vs ??!! | 17:14 | |
that is, if we have both low and high prec versions, they should stay apart. | |||
audreyt | right. the only wart is 1??2!!3=>4 | 17:16 | |
but that's only because => was much tighte | 17:17 | ||
r | |||
pmichaud | pge would currently parse that as 2 => 4 | ||
audreyt | if it were thought as fat-comma (i.e. one level looser than it currently is) | ||
?eval 1??2!!3=>4 | |||
evalbot_10053 | (2 => 4) | ||
audreyt | then the 2=>4 interpretation is natural. | ||
TimToady | the unnatural thing is 1 ?? "a" !! b => 4 autoquoting b and then throwing it away | 17:23 | |
since most pairs are autoquoters | |||
particle_ | ?eval $a = 1; $b = $c = $a; $b++; say $c; | ||
TimToady | maybe we could detect that and carp | ||
evalbot_10053 | Error: Undeclared variable: "$a" | ||
particle_ | how do i set $x and $y to the same initial value, but let them vary independently? | 17:25 | |
integral | my $x = my $y = 1234; ? | 17:26 | |
TimToady | ?eval my ($a,$b,$c) = 1234 xx Inf | 17:27 | |
evalbot_10053 | (\1234, \1234, \1234) | ||
TimToady | cool | ||
I wonder if postfix xxx is xx Inf? | |||
particle_ | ?eval my( $a, $b ) = ( 0 & 1 ) xxx; say 'false' unless ?($a & $b) == ?($a && $b); | 17:30 | |
TimToady | ?eval my ($a,$b,$c) = 1234 ... :by(0) | ||
evalbot_10053 | Error: unexpected "x" expecting comment, operator, ";" or end of input | 17:31 | |
particle_ | no on xxx | ||
?eval my( $a, $b ) = ( 0 & 1 ) xx Inf; say 'false' unless ?($a & $b) == ?($a && $b); | |||
evalbot_10053 | Error: unexpected ":" expecting operator, comment, ";" or end of input | ||
TimToady | that was "is" in the "have I discovered a missing feature" sense. | ||
evalbot_10053 | (no output) | ||
particle_ | ?eval my( $a, $b ) = ( 0 & 1 ) xx Inf; say 'true' if ?($a & $b) == ?($a && $b); | 17:32 | |
evalbot_10053 | (no output) | ||
particle_ | is there a shortcut for postfix x Inf? | ||
17:33
azuroth joined
|
|||
TimToady | not that I know of | 17:33 | |
particle_ | if xxx is short for xx Inf, one might suspect xx is short for x Inf | ||
TimToady | no, the analogy is the difference between .. and ... | ||
not the difference between . and .. | 17:34 | ||
particle_ | that makes sense | ||
TimToady | but maybe that means Inf is just badly Huffman coded. | ||
audreyt | will that make perl programs not passing cyberpatrol? | ||
particle_ | ?eval my( $a, $b ) = ( 0 & 1 ) xx Inf; ?($a & $b) == ?($a && $b) ?? 1 !! 0; | 17:35 | |
evalbot_10053 | (no output) | ||
audreyt ponders if evalbot should build optimized | |||
particle_ | well, i obviously need to work on my perl6 syntax | 17:36 | |
audreyt | no, that means diverging | ||
TimToady | ?eval my ($a,$b,$c) = 1234 xx ā | ||
evalbot_10053 | Error: unexpected "\RS" expecting comment or term | ||
audreyt | as in, you run into the "we didn't know how lazy Array containers were supposed to work" situation. | ||
TimToady | ?eval my ($a,$b,$c) = 1234 xx | 17:39 | |
evalbot_10053 | Error: unexpected end of input expecting end of input, comment or term | 17:40 | |
TimToady | ?eval my ($a,$b,$c) = 1234 ... | ||
evalbot_10053 | (\1234, \1235, \1236) | ||
TimToady | ?eval my ($a,$b,$c) = 1234 .. | ||
evalbot_10053 | Error: unexpected end of input expecting end of input, comment or term | ||
TimToady | ?eval my ($a,$b,$c) = 1234 .. * | 17:41 | |
particle_ | is there a hyper = ? | ||
evalbot_10053 | Error: unexpected end of input expecting term | ||
TimToady | yes, but hyper isn't particularly lazy | ||
audreyt | autopromotion works though. | ||
TimToady | and my () = isn't a real = anyway... | 17:42 | |
audreyt | ?eval (1,2,3) >>+<< 4 | ||
evalbot_10053 | (5, 6, 7) | ||
audreyt | (for the xxx case) | ||
TimToady | which probably doesn't make differnce for "my", but | ||
state ($a,$b,$c) >>= 1234 | 17:43 | ||
is likely to do the wrong thing at the wrong time. | |||
>>=<< rather. | |||
audreyt | why? | 17:44 | |
= and := are "initializers" per S04 | |||
merlyn | ahh, the docking ring for the spaceship operator. :) | ||
audreyt | and hyper forms can be considered initializers as well | ||
TimToady | well, maybe we can extend to hyper, but state ($a,$b,$c) += 2 is almost certainly bogus. | 17:45 | |
audreyt | sure | ||
but then, it's not as useful. | |||
+= wouldn't be an initializer | |||
as it uses the lhs as rval. | |||
TimToady | ?eval my ($a,$b,$c) >>=<< 1234 | 17:46 | |
evalbot_10053 | Error: unexpected ">" expecting comment, trait, "=", ".=", ":=", "::=", ";" or end of input | ||
audreyt | (currently = is special form not infix and is not hyperable nor foldable) | ||
(which is a bug :)) | |||
now that we have my-declarator-sig ruling, I can go fix it. | 17:47 | ||
TimToady | well don't let the fact that it's the middle of the night slow you down... :) | ||
audreyt | actually I should sleep first, because I tend to produce erroneous code, like that //=, around this time... | 17:48 | |
TimToady | there's a good girl | ||
audreyt | =) | 17:49 | |
particle_ | ?eval my( $a, $b ) = (0 & 1, 0 & 1); ?($a & $b) == ?($a && $b) | 17:52 | |
evalbot_10053 | bool::true | 17:53 | |
particle_ | that's what i'm looking for. | ||
TimToady | though of course one has no clue whether it's actually doing what you think it's doing. :) | 17:54 | |
particle_ | this is true | ||
in fact, it's not | 17:55 | ||
?eval my( $a, $b ) = (0 & 1, 0 & 0); ?($a & $b) == ?($a && $b) | |||
evalbot_10053 | bool::true | 17:56 | |
particle_ | wrong! | ||
Limbic_Region has no idea how audreyt is able to sleep | 17:58 | ||
17:58
fglock joined
|
|||
Limbic_Region is incapable of shutting brain down in less than 2-3 hours before sleep | 17:58 | ||
fglock | TimToady: ping | 17:59 | |
TimToady: ping | 18:00 | ||
Limbic_Region | fglock - he's here but is probably looking at something other than the channel | ||
fglock | audreyt: ping | ||
Limbic_Region | [13:53] <TimToady> though of course one has no clue whether it's actually doing what you think it's doing. | ||
she just went to sleep | |||
[13:53] <TimToady> though of course one has no clue whether it's actually doing what you think it's doing. | |||
[13:47] <audreyt> actually I should sleep first, because I tend to produce erroneous code, like that //=, around this time.. | |||
fglock | I've got a sponsor for bringing TimToady and audreyt to YAPC::SouthAmerica in november - I need to know if they can come (or at least if they will think about it) | 18:01 | |
Limbic_Region is jealous | |||
when in November btw? | 18:02 | ||
they both backlog so I am sure they will get the message | |||
fglock | you may come too | ||
Limbic_Region | well - try convincing that to my wife | ||
audreyt | fglock: I can come. | 18:03 | |
fglock | nov 7-11 | ||
audreyt | (the yellow light in irssi woke me up. :)) | ||
fglock | wow! | ||
sorry to wake you up | 18:04 | ||
audreyt | np | ||
merlyn | so YAPC::SA is the same as CONISLI, and that's nov 7-10? | ||
fglock | merlyn: yes - Brasil-PM is in the CONISLI organizing committee | 18:05 | |
merlyn | 7-11. ok. great, erasing my september dates reserved | 18:06 | |
Limbic_Region | fglock - have a english info reference lying around? | ||
audreyt | but I really need to sleep now :) | 18:08 | |
& | |||
fglock | Limbic_Region: sorry, not yet - the link will be www.perl.org.br/yapc/ | 18:09 | |
18:09
aufrank joined
|
|||
fglock | Limbic_Region: DaWolf and Mago said they will try to get at least some partial sponsorship for you | 18:11 | |
Limbic_Region | fglock - no, but I am flattered | 18:12 | |
money wouldn't be an issue if I could go | |||
it is the fact that I would be leaving my wife home to take care of our recent addition to the family by herself | |||
fglock | yes, I understand | 18:13 | |
kolibrie | Limbic_Region: does that mean no YAPC::NA either? | ||
aufrank | audreyt: have you done any work on adding pugs as a project for google SoC | ||
? | |||
particle_ | audrey's sleeping | ||
Limbic_Region | kolibrie - if it hadn't been during the week I would have come but yeah - no YAPC::NA either | 18:14 | |
fglock | kolibrie: may I add the grammar compiler to PCR package? would you add the copyright text? | ||
aufrank | particle_: it had to happen some time, I guess | ||
kolibrie | Limbic_Region: I'll have to come visit you some time around here then | ||
fglock: you can add it to the PCR package, | 18:15 | ||
what kind of copyright notice do you want | |||
aufrank | what does PCR stand for? | ||
fglock | aufrank: I'm thinking about submitting the p6-p5 compiler modules to SoC | 18:16 | |
TimToady | fglock: I don't see any reason I couldn't come offhand. | ||
fglock | Pugs::Compiler::Grammar | ||
TimToady | Polymerase Chain Reaction | ||
fglock | TimToady: cool - this will be the best YAPC::SA ever (the first one too) | ||
TimToady | my social secretary is checking... :) | ||
aufrank | fglock: sounds like a really good idea :) | 18:17 | |
Limbic_Region | kolibrie - I am going to be sending my wife to the Philippines withour daughter next year so I will be more available to go to conferences and what not | ||
kolibrie - but if you (or anyone else) is ever around my way and wants to be taken out for dinner, drinks, and some decent conversation then let me know | |||
aufrank | which way is your way? | 18:18 | |
kolibrie | Limbic_Region: do you or she have ties in the Philippines? | ||
Limbic_Region | Baltimore/DC area | ||
kolibrie - heh, yeah, she is filipino (having been in this country 2 years and 3 days) | |||
theorbtwo | Happy aniversery! | 18:19 | |
TimToady | Glo says that time seems to be open. | ||
Limbic_Region | theorbtwo - anniversary is in June. Actually, June 12th to be exact which is also filipino independence day - not much chance she is ever going to forget which really stinks for me | 18:20 | |
theorbtwo | Well, happy aniversary of moving. | ||
Limbic_Region really really really wants to visit SA though and spending time with geeks is always fun | |||
thanks | 18:21 | ||
theorbtwo | Er, you were supposed to relay that -- you aren't the one that moved! | ||
TimToady | Is YAPC::SA in PA? | ||
Limbic_Region | brazil I think | 18:22 | |
fglock | TimToady: Sao Paulo, Brazil | ||
aufrank | ooh, brazil | ||
Limbic_Region | yeah - now you know why I am jealous | ||
aufrank | I bet the crab is still better in B'more | ||
fglock | busy place, >10million people - so there must be some perl programmers among them | 18:23 | |
Limbic_Region | yeah - and I am from Maine which definately has better lobster | ||
aufrank | yeah, who needs brazil anyway! | ||
fglock | :) | ||
Limbic_Region is waiting to win the lottery so he can retire, fund Perl/OS, and travel to all these exotic locale for geek meetings | 18:24 | ||
aufrank is betting that we'll standardize on emacs/OS long before perl/OS | |||
TimToady | s | ||
SP is fine too. | |||
Limbic_Region | heh - OS = OpenSource in that case | 18:25 | |
TimToady | Last time I flew into SP, the plane had two official languages, English and Japanese!?! | ||
aufrank | oh... I thought it sounded a little ambitious =P | ||
theorbtwo | TimToady: What was the carrier? | 18:26 | |
fglock | TimToady: they have flights to Japan that go through the US | ||
TimToady | yes, LA is the stopover. | ||
I think it was Varig, but I could be misremembering | |||
theorbtwo | OTOH, I took a KLM plane from the Netherlands to the US, and everything was in Dutch, German, and English. | 18:27 | |
pmurias | nserver irc.freenode.org | ||
sorry accidental enter press | |||
TimToady | In the SP airport I was conversing with a Brasilian family through a Japanese interpreter. :) | ||
Limbic_Region 's first time to Germany involved landing in Frankfurt, exiting the back of the plane where uniformed men with automatic rifles were pulling passengers aside | 18:28 | ||
don't think they were speaking english or german but I knew enough not to ask either | 18:29 | ||
theorbtwo | Blink. | ||
What uniform? | 18:30 | ||
TimToady | I would guess the language contained pharyngials... | ||
theorbtwo | ...and was this a military flight or a civilian one? | ||
Limbic_Region | theorbtwo - military would be my guess - some shade of green | ||
theorbtwo | That describes german police too. | 18:31 | |
Limbic_Region | I was connecting from Amsterdam so that might have had something to do with it | ||
TimToady | It's those Dutch terrorists... | ||
fglock | TimToady: portuguese seems to be difficult to english speakers - but there are a few success stories | 18:32 | |
TimToady | It's actually quite similar in vowel structure. | ||
kolibrie | fglock: r10054 | ||
TimToady | both have rather complicated vowel systems. | ||
Limbic_Region | heh - in the Philippines there is less punishment for trying to overthrow the government then there is for selling a joint | ||
TimToady | but of course it's a romance language, and I never got into any of those... | 18:33 | |
German and Greek and Japanese so far. Maybe Mandarin next. | |||
svnbot6 | r10054 | kolibrie++ | added documentation and copyright notice | ||
TimToady | Or maybe I should go back and actually *learn* German and Greek... | 18:34 | |
Limbic_Region | TimToady - what about ASL? I remember talking with a Korean prostitute in ASL which would have otherwise made the conversation impossible | 18:35 | |
TimToady | Ich habe meine Deutsch ganz vergessen... | ||
... | |||
18:35
chris2 joined
|
|||
TimToady | I think, if I ever had the inclination, which I hope I never will, that I would have no difficulty communicating with a Korean prostitute... | 18:36 | |
theorbtwo shrugs. | |||
I don't see what her profession has to do with it. | |||
aufrank | I'm about to meet with my advisor about plans for the summer | ||
TimToady | It's just that some things are easier to mime than others... | ||
aufrank | and would like to suggest doing a p6-related SoC project | 18:37 | |
Limbic_Region | theorbtwo - striking up a conversation with a korean you met on the street isn't an easy task (if you are an american speaking english) | ||
aufrank | any ideas for a vaguely computational-linguistics SoC I could try to sell him on? | ||
theorbtwo | I wouldn't be at all surprised if prostitutes tend to be one of the more polylingual professions. | ||
Especially ones that hang around airports. | |||
Limbic_Region | her profession led to an easier introduction | ||
TimToady | I don't think I've ever met someone in that line of work that had difficulty striking up conversations... :) | 18:38 | |
Limbic_Region | but the only reason I was inclined to talk to her in the first place was that I was suprised to see her using ASL since SL is not universal | ||
theorbtwo | It's not even universal amongst people who would speak the same spoken language. | ||
IE ASL != BSL. | |||
TimToady | but then, maybe it's only the ones I notice that I notice... | ||
PerlJam | Limbic_Region: I think SL is universal, just the signs are different ;) | ||
Limbic_Region | PerlJam - could be, I only ever bothered to learn ASL | 18:39 | |
aufrank | one of our faculty members here is a native ASL speaker, and he tells us that when they have international conferences, a really robust pidgin forms almost immediately | ||
Limbic_Region | in any case - she is one of the few people in Korea that I ever talked to outside of work | ||
and I lived there for almost 2 years | |||
aufrank | people give talks in this sort of conference-sign rather than their native sign systems, and it all works somehow | ||
Limbic_Region | and it wasn't for a lack of trying either | ||
theorbtwo | Cool! | 18:40 | |
I wonder if this has to do with the... omnipedic nature of signing. It doesn't seem that intuitive, then. | |||
18:41
FurnaceBoy is now known as FB|afk
|
|||
kolibrie | fglock: oh, I changed the example to .pm -> .pmc, too | 18:41 | |
Limbic_Region | oh, come to think of it - she was deaf and mute | ||
fglock | kolibrie: thanks! | 18:42 | |
kolibrie | fglock: glad to do whatever I can | ||
fglock | kolibrie: I can't pay enough attention for actually programming now - too many people around here :) | 18:43 | |
the conference site counts 5746 people | 18:45 | ||
kolibrie | fglock: for modifiers, can I convert every :something into { something => 1 } ? | ||
fglock | yes - that's what it means in p6, actually | 18:46 | |
kolibrie | I was hoping to not change the meaning of the language | ||
fglock | and :something<param> is something=>"param" | ||
kolibrie | and :!something is something=>0 | 18:47 | |
if I understood yesterday's discussion correctly | |||
fglock | oh, I didn't see that | 18:48 | |
bbiab | |||
kolibrie | colabti.de/irclogger/irclogger_log/...l=481#l699 | 18:49 | |
TimToady | Actually, :something<a b> is something => ('a','b') or some such | 18:51 | |
kolibrie | TimToady: fglock: hmm, so in Perl5 that would be something => ['a','b'] ? Since I'm translating to PCR-syntax? | 18:59 | |
fglock: or do you prefer that I leave it a string and you can figure out what it means? | 19:01 | ||
19:03
Arathorn is now known as Aragone
|
|||
Aragone | exit | 19:03 | |
oops | |||
rw-rw-r-- | / | ||
fglock | kolibrie: a hashref is better | 19:04 | |
the modifiers will be parsed by the p6 compiler (or by the "grammar" subset) | 19:05 | ||
kolibrie | fglock: so :i :p<25> :something<a b> becomes { i => 1, p => 25, something => 'a b' } | 19:06 | |
or do you prefer: { i => 1, p => | |||
25, something => ['a','b'] | 19:07 | ||
} | |||
fglock | the second one | ||
kolibrie | fglock: ok | ||
19:12
ZaphodBeeblebrox joined
19:15
penk left
19:26
KingDiamond joined
|
|||
TimToady | kolibrie: yes, you have to maintain the distinction between :foo("foo bar") and :foo<foo bar>, which is more like :foo("foo","bar") | 19:29 | |
kolibrie | TimToady: ah, yes. Glad you're driving | ||
19:31
Southen joined
|
|||
theorbtwo | Bear is driving? | 19:32 | |
aufrank | theorbtwo: clerks the cartoon? | ||
theorbtwo | Aye. | 19:33 | |
aufrank | I didn't know that joke had stuck around | 19:34 | |
Juerd | TimToady: Is it so that postfix <> always implies some other kind af brackets around it? | 19:35 | |
TimToady: Or is it its own postfix op? | |||
19:38
larsen joined
19:41
mago joined
|
|||
pmichaud | juerd: < > is its own "op" -- it's essentially qw/ ... / | 19:42 | |
Juerd | Yes, but even postfix .<>? | 19:43 | |
pmichaud | yes | ||
19:43
hcarty joined
|
|||
Juerd | Okay. So it could be something else than .(<>) or .{<>}, for other things? | 19:43 | |
pmichaud | $foo.<a b c> is essentially $foo('a', 'b', 'c') | ||
sorry, $foo{'a', 'b', 'c'} | |||
Juerd | That's what I mean by implying other brackets | 19:44 | |
pmichaud | it's the angles | ||
Juerd | The As it's $foo{ <a b c> } | ||
The {} are implied | |||
s/The As/As/ | |||
pmichaud | From S02: The qw/foo bar/ quote operator now has a bracketed form: <foo bar>. When used as a subscript it performs a slice equivalent to {'foo','bar'}. | ||
Juerd | "As a subscript" is rather vague. | 19:45 | |
pmichaud | "when used as a subscript" is essentially "when used as a postfix .< >" | ||
Juerd | Does this mean that :foo<a> is not really :foo('a'), but actually :foo{'a'}? | ||
pmichaud | ...looking... | 19:46 | |
:foo<a> is really foo => 'a' | 19:47 | ||
Juerd | Oh, of course, :foo is not a term by itself... | 19:48 | |
pmichaud | as opposed to :foo($a) which is really foo => $a | ||
TimToady | :foo<a b c> is really :foo(<a b c>) | ||
and :foo{ mumble } might be either a closure or a hash composer | 19:49 | ||
Juerd | TimToady: And how would that be written in fat arrow form? | ||
theorbtwo | But :foo is a unary function? | ||
TimToady | :foo isn't a function | ||
It's the front half of a pair | |||
Juerd wonders what foo => <a b c> is | |||
TimToady | same as foo => ('a', 'b', 'c'); | 19:50 | |
Juerd | Is that foo => 'a', b => 'c'? Is it foo => [ 'a', 'b', 'c' ]? Maybe foo => ('a', 'b', 'c')? | ||
I see | |||
:foo<a>, is that foo => 'a' or foo => ('a',)? | 19:51 | ||
i.e., list or not list? | |||
(the other way around) | |||
TimToady | but say 1,<a b c>,5 prints 1abc5 because (...) autointerpolates into a list. | ||
pmichaud | that's (foo => 'a', ) | ||
TimToady | I think it's just foo => 'a' | 19:52 | |
via foo => ('a') | 19:53 | ||
pmichaud | I was taking the , as part of the question. (I could still be wrong) | ||
TimToady | ok | ||
theorbtwo | I really hope that you can put commas between attributes without semantic. | 19:58 | |
There are some places where the lack of commas looks really wrong. | |||
20:00
larsen_ joined,
larsen_ is now known as larsen
20:08
SamB joined
20:15
justatheory joined
|
|||
TimToady | theorbtwo: I presume you mean adverbs. | 20:28 | |
theorbtwo | Er, yes. | ||
TimToady | basically, you can put commas between them where a term is expected, but not where an operator is expected. | 20:29 | |
theorbtwo | Sounds lovely. | ||
TimToady | in term position, they're just named args in a list | ||
theorbtwo | Why aren't they normally written with commas, then? | ||
TimToady | but $x .. $y :by(2), :foo($bar) wouldn't parse | ||
I normally write them with commas, but then I'm not terribly normal... | |||
theorbtwo | Well, unless you meant @x = (($x .. $y :by(2)), :foo($bar)) | 20:30 | |
TimToady | I would, however, tend to leave out the commas if they were the first thing a list and I wanted to emphasize that these are before the first positional arg. | ||
yes, I meant it wouldn't parse the way you were expecting if you expected both to apply to .. | |||
PerlJam | If only there were a way to leave out the comma on a one element list ... ;-) | 20:31 | |
theorbtwo | Hm, can you write 3, as list(3)? | ||
PerlJam | ($foo,) reminds me so much of python | ||
theorbtwo | I'm not sure that's any better, though. | ||
20:31
coumbes joined
|
|||
Juerd | pmichaud: But that would mean that $pair.value would be a List if it was created with :foo<a b>, but not be a List if it was created with :foo<a>... That may be surprising. | 20:31 | |
PerlJam | (which, even though the parens are only for grouping, I think I'd end up using them always anyway) | 20:32 | |
Juerd | PerlJam: You have to anyway, because , has low precedence :) | ||
TimToady | I think adverb defs just have to be prepared to deal with that. | 20:33 | |
PerlJam | Juerd: I don't *have* to, but yes, in most cases it would be needed. | ||
Juerd | Nobody's forcing you to :P | ||
TimToady | If you really mean a list, you can say :foo['a'] | ||
*array | |||
Juerd | TimToady: I'd expect an Array then. | ||
And we established that there's an important difference between them. OTOH, defining a one-element list makes NO SENSE whatsoever :) | 20:34 | ||
That is, I can't think of any good reason to use a single element list | 20:35 | ||
TimToady | sure it does, we just usually call it a scalar. :P | ||
Juerd | Yea. | ||
TimToady | $a is a lovely one-arg list... | ||
Juerd | But only in list context | 20:36 | |
TimToady | lists don't mean anything outside of a context though. | ||
you can perfectly well say it's a list in scalar context too, as long as you define what happens to a one-arg list in scalar context properly. | 20:37 | ||
20:37
zgh joined
|
|||
Juerd | Well, that's also the big difference with $foo being a list or a scalar | 20:37 | |
+$foo and $foo.elems will be different | |||
TimToady | $foo is never a list. | 20:38 | |
Juerd | List. | ||
TimToady | except in the 1-arg sense | ||
Juerd | It can be a List object, I thought? | ||
TimToady | A List by definition hasn't had a context applied to it yet. | 20:39 | |
it's the + or the .elems that apply the context. | |||
And List is just a component of Capture these days. | |||
Juerd | Yes, but if $a is a List, +$a will return the number of elements, while if it's a Str, +$a will numify the string... Or not? | ||
TimToady | so I think users are even less likely to see a List than a Capture. | ||
If we define List to have Array semantics. I don't see all that much reason to. | 20:40 | ||
pmichaud | do we have a really detailed spec for Capture somewhere? I'll probably need a Parrot implementation soon | ||
Juerd | I'm incredibly lost. | ||
I can't find a way to match this conversation to the Array/List one we had a few days ago... | 20:41 | ||
Did things change in between? | |||
(relevant things) | |||
TimToady | \($a,$b,$c) is a Capture, not a List | ||
it happens to contain a List if you look hard enough. | |||
Juerd | But $a, after $a = (1, 2, 3), is a List. | ||
Scalar comma would return a List, audreyt said, and you were there :) | 20:42 | ||
Also, :foo<a b c> would be foo => ( a List object ) | |||
TimToady | well, it's certainly possible that List still has its place in the pantheon, but I don't find it all that useful to think about these days... | 20:43 | |
that could just be my fever talking. | |||
these days I think that a List is probably just a Capture that is missing its other bits. | 20:44 | ||
pmichaud | I like that idea | ||
Juerd | My questions have little to do with the implementation, though. | 20:45 | |
TimToady | Don't use List in a real program. | ||
PerlJam can only think of one thing to pare away from Captures to get List. | 20:46 | ||
what are the others? | |||
TimToady | the invocant and the named args | ||
and anything else anyone like Patrick has stuffed into it for various nefarious purposes | |||
pmichaud | I don't want to stuff things into Capture, I just want to inherit from it :-) | 20:47 | |
20:47
kanru joined
|
|||
TimToady | I'm thinking of mixins as a form of "stuffing in"... | 20:47 | |
cognominal | TimToady: will be able to explore our inner self like in Moose? (inner as opposed to super). | 20:49 | |
TimToady | anybody can look at .meta | ||
cognominal | I mean to call it. | ||
20:50
KingDillyDilly joined
|
|||
TimToady | Moose is just prototyping all the stuff that we intend to hide behind .meta | 20:50 | |
is how I think of it, anyway... | |||
cognominal | then we will use macro to mutate the langage to use all that meta stuff? | ||
Juerd | Nevermind. | 20:51 | |
I'll try again later | |||
TimToady | mostly not, unless you want to define your own declarators. | ||
Juerd | Thanks for trying to explain | ||
TimToady | any method not recognized by Object gets passed on to .meta, so you can usually just say .does instead of .meta.does for instance. | 20:52 | |
cognominal | ho, I always forget that | ||
btw, the list part of a Capture should translate pretty well in the javascript Argument. | 20:54 | ||
KingDillyDilly | Do you all think it's clear enough that this channel isn't about the current Perl? Should #perl be renamed #perl5? | 20:56 | |
Which it will have to be some day. | |||
PerlJam | er, what? | ||
KingDillyDilly | Now we're even, because I don't understand 90% of what's discussed here. :) | 20:57 | |
PerlJam | KingDillyDilly: you just lack the proper context for understanding. Gain the context and you will understand more. | ||
cognominal | KingDillyDilly: the default Perl is Perl5, if we get out of our way to name this channel #perl6, it is because there is somethin special about it. | 20:58 | |
KingDillyDilly | I'll wait until I actually need Perl6. Kind of busy to learn it right now. | ||
PerlJam | KingDillyDilly: then there's no reason for you to be here :) | ||
TimToady | I'm too busy to *not* learn it. :) | ||
PerlJam | TimToady: learn it faster! ;) | 20:59 | |
TimToady | I is peddlin' as hard as might be... | ||
KingDillyDilly | I like to see how much I don't know sometimes. | ||
Juerd | Perl 6 isn't needed. But it'll be incredibly nice to have. | ||
PerlJam | KingDillyDilly: the scope is infinite. | ||
TimToady | No programming language is needed in that sense. | ||
Juerd | Indeed | 21:00 | |
TimToady | bare turning machine for you!!! | ||
Juerd | But some are much nicer to have than others | ||
21:00
justatheory joined
|
|||
TimToady | *turing | 21:00 | |
Juerd | A turning machine :) | ||
They have that at the gym | |||
TimToady | lathe | ||
cognominal | ho, yes Perl6 is needed because now Perl5 looks comparatively so crummy | ||
KingDillyDilly | Behind the scenes, maybe. Perl is pretty good to use. | 21:01 | |
TimToady | I just need Perl 6 to purge the image of flying mugs from my head... | ||
I admit I have a fondness for Perl 5 myself. | 21:02 | ||
Juerd | The image will return when you announce Perl 7 in 2025 | ||
I like Perl 5 because I understand it. | |||
TimToady | Agh. Where's a bus when I need one? | ||
Juerd | I like Perl 6 because it gives me a few more years of learning new stuff. | ||
TimToady | Perl 6 is a Capture that is slowly being bound to the Perl 5 Signature... | 21:03 | |
Juerd | Maybe we should call Perl 5 "Perl, Novice Edition", and Perl 6 "Perl, Expert Edition" | ||
TimToady | Or maybe it's the other way around... | ||
Juerd | That'll automatically create extra reasons to migrate. | ||
Juerd can't call it upgrade. | |||
TimToady | Perl 6, Migraine Edition | 21:04 | |
PerlJam | There are editions now?!?!? | ||
;-) | |||
KingDillyDilly | Anyone here check up on Wikipedia's Perl6 article at en.wikipedia.org/wiki/Perl6#Rules:_...w_regexes? Will there be no regular expressions in Perl 6? They'll really be called rules? | ||
PerlJam | KingDillyDilly: well, they were. | ||
TimToady | we just change back to regex, actually | ||
rules are now more specialized critters | 21:05 | ||
KingDillyDilly | Good. | ||
TimToady | we didn't do it for you :P | ||
PerlJam | I wonder how many people we'll confuse though. | ||
KingDillyDilly | Putting it on my resume anyway. | ||
TimToady | I don't care how many we confuse before 6.0.0 as long as we get it right. | 21:06 | |
PerlJam | KingDillyDilly++ heh | ||
pmurias | TimToady: what do you think of audrey's rules-as-templates proposal? | 21:09 | |
21:10
hcarty left
|
|||
TimToady | I agree with the concept of reversible declarations being very powerful concept right up to the point where my brain explodes | 21:12 | |
The trick, as always, will be to introduce reversibility in a way | |||
that doesn't force people's heads to explode prematurely. | 21:13 | ||
(see Haskell) | |||
PerlJam | where was this rules-as-templates proposal? It sounds like using them as generators instead of matching. | ||
TimToady | basically | 21:14 | |
pmurias | it's in misc/pX/audreyt | ||
TimToady | there's also the notion that you can take a corpus and derive a grammar from it automatically, much like humans learn their syntax. | ||
PerlJam | TimToady: that's about where *my* head explodes :) | 21:15 | |
TimToady | To usefully reverse a pattern matcher, you have to add back in the ideas that were deleting upon pattern matching, of course... | ||
Unless you just want to produce gibberish. | 21:16 | ||
Juerd | PerlJam: Nahh... rule document { .* } | ||
21:17
hlen joined
|
|||
TimToady | Of course, you do realize that that has to generate the longest document first? | 21:17 | |
Juerd | Ehh... :) | 21:18 | |
TimToady | Actually, now it can only produce the longest document. | ||
PerlJam | so I guess perl6 isn't always lazy | ||
TimToady | You'd need .*+ to backtrack. | ||
or .*? to start with the shortest document. | 21:19 | ||
Juerd | Okay, this is where my head explodes. | ||
I'm so glad your head can take a lot more than ours :) | |||
cognominal | juerd, hopefully you can backtrack to a place before you head exploded. | 21:20 | |
TimToady | I just don't always notice when my head has exploded... | 21:21 | |
pmurias | good night | 21:30 | |
KingDillyDilly | Getting back to the channel names, I think Perl 6 will be referred to as just Perl eventually. The #perl might need to be renamed #perl5. | 21:33 | |
Actually, Perl 6 should have been named "Perl eventually" years ago. | 21:35 | ||
21:36
aufrank joined
|
|||
PerlJam | I don't think so. #perl will stay #perl. and #perl6 may eventually go away, but in the mean time it'll still be #perl6. | 21:41 | |
Juerd | Nah, people will just get used to [5] and [6] tags | 21:45 | |
:P | 21:46 | ||
TimToady | can create #perl5 and then #perl is only place where you'd need tags. | 21:55 | |
22:21
kanru2 joined
|
|||
Juerd | #perl could aggregate #perl5 and #perl6, and add tags :P | 22:35 | |
buu | Juerd: TAGS?! | 22:43 | |
KingDillyDilly: Not you again. | |||
#perl (is|should be) a generic help channel for all versions of the perl. | 22:44 | ||
Version is irrelevant. You will be helped. | |||
Juerd | Let's try that. | 22:45 | |
buu | =] | 22:46 | |
Now they may not know the answer | |||
But the logical course of action is for people who do know the answer to hang out there.. | |||
22:46
turrepurre joined
|
|||
buu | But I don't think that diminishes my main point that p6 is just as ontopic as p5 | 22:47 | |
Juerd | The only help I'm getting is Yaakov trying to be funny... | 22:48 | |
22:49
mako132_ joined
|
|||
buu | Juerd: Well, yes | 22:49 | |
But the same applies to p5 and p4 questions | |||
22:54
pdcawley joined
|
|||
KingDillyDilly | Yes, me again. There's nothing in the topic of #perl6 that explains that this channel isn't about the current version of Perl and that it isn't for support of the current version. | 23:00 | |
buu doesn't like Wassercrats. Everyone hate buu. | |||
Juerd | audreyt: My removal of Firefly apparently never happened; dozens of people have been able to enjoy it :) | ||
audreyt: But it's gone now, fyi. | |||
KingDillyDilly | perlbot KingDillyDilly is Wassercrats | 23:01 | |
perlbot | added KingDillyDilly to the database | ||
KingDillyDilly | perlbot Barry is Wassercrats | 23:02 | |
perlbot | added Barry to the database | ||
Juerd | Why is perlbot here? | 23:03 | |
Juerd doesn't like perlbot here, to be honest. | |||
It adds immensely to the noise-to-signal ratio, and its factoids are Perl 5 based. Factoids added here will be useless to most other channels. A similar bot might be useful, but then still I don't think this channel (which is not a help channel, but mostly a channel for discussion) should have such a bot yet. | 23:04 | ||
s/It adds/It could add/ # It's the first time I see it here. I don't know how long it has been around. | 23:05 | ||
KingDillyDilly | I'd like a bot with a "last x" feature to pvt msg you with previous posts. I know about colabti.de/irclogger//irclogger_logs/perl6 though. | 23:06 | |
perlbot has lots of useful features, like "phone" | 23:09 | ||
perlbot phone 1-800-555-5555 | |||
perlbot | Bad number: 1-800-555-5555 | ||
KingDillyDilly | perlbot phone 1234567890 | 23:10 | |
perlbot | That function is broken for now, try back later | ||
buu | Juerd: Why do you think it adds to the noise-to-signal ratio? | 23:13 | |
Juerd | See your current scrollbuffer. | 23:14 | |
Good night | |||
z | |||
buu | Juerd: I've found that KingDillyDilly manages that all by himself. | ||
Juerd | Let's hope that KingDillyDilly stops all by himself too. | 23:15 | |
KingDillyDilly | I've had thoughts of creating a log of #perl and comparing it with a log of #python to see which has the higher noise-to-signal ratio and to deter those most responsible for it. | 23:18 | |
SamB | well, PERL itself is said to have a lower signal-to-noise ratio | ||
23:22
ZaphodBeeblebrox joined
|
|||
KingDillyDilly | Would anyone really leave one language for another because they prefer short symbols to words or shorter words? I prefer extra readability. I'm anti-elsif, for example. Not sure if that relates to what you're saying, SamB. | 23:22 | |
SamB | I was talking about all punctuation | 23:23 | |
buu | SamB: What is PERL? | ||
SamB | you know when they curse in the comics? | ||
buu | No? | ||
SamB | oh, sorry, I guess it is called Perl. | 23:24 | |
buu | Yes it is. | ||
SamB | thats what I get for reading the headings in manpages... | ||
buu | I suspect perl actually has the highest signal to noise ratio of almost any language | ||
For some value of signal and noise of course | 23:25 | ||
KingDillyDilly | I read a debate on whether it's an acronym. I'm still not sure, but somehow it was decided it's not. | ||
SamB | so it doesn't stand for Pattern Extraction and Reporting Language? | 23:26 | |
KingDillyDilly | Kinda no. | ||
arcady | Pathologically Eclectic Rubbish Lister? | ||
buu | SamB: It does not. | 23:28 | |
SamB: The name is Perl, not an acronym. You are of course free to make up any words you want to fit it however. | |||
Juerd | SamB: Read perlfaq1 | 23:31 | |
SamB: Unix tradition is to have manpage headlines in allcaps. The manpage of ls(1) has LS(1) in the first line. | 23:32 | ||
SamB | Juerd: yeah, I know about that | ||
I honestly am unsure why I thought it was PERL | |||
buu | Long standing rumour. | 23:33 | |
SamB | if I call it perl, nobody will bother me ;-) | ||
buu | This is true. | ||
23:34
mako132_ joined
|
|||
KingDillyDilly | Unless you're writing for something that matters. In chat, many people don't capitalize even the first letter of sentences. | 23:34 | |
23:36
Limbic_Region joined
|
|||
KingDillyDilly | Or of their handles. Someone told me that's because it's not a real name. Doesn't make sense to me. | 23:36 | |
23:46
weinig joined
|