Check your feather email | spec.pugscode.org | paste: sial.org/pbot/perl6 | pugs.blogs.com | www.treehugger.com/files/th_images/paradigm.jpg Set by rodi on 29 September 2006. |
|||
00:13
bradb joined
00:26
nekokak joined
00:36
mako132_ joined
|
|||
TreyHarris | @tell audreyt I wanted to change util/run-smoke.pl to save a backup to smoke.last.html first, but i don't know how to do that portably--is there an example of moving/copying somewhere i should refer to? | 01:24 | |
lambdabot | Consider it noted. | ||
01:29
cjeris left
|
|||
audreyt | TreyHarris: File::Copy | 01:30 | |
lambdabot | audreyt: You have 1 new message. '/msg lambdabot @messages' to read it. | ||
audreyt | and builtin rename | ||
lambdabot: @messages | |||
lambdabot | TreyHarris said 5m 56s ago: I wanted to change util/run-smoke.pl to save a backup to smoke.last.html first, but i don't know how to do that portably--is there an example of moving/copying somewhere | ||
i should refer to? | |||
TreyHarris | audreyt: thanks | 01:32 | |
actually, probably rename alone is enough, you probably don't want to copy your smoke, just move it aside. i guess i didn't think it through :) | 01:33 | ||
01:34
buu joined
|
|||
audreyt | :) | 01:36 | |
01:43
pfenwick joined
|
|||
TreyHarris | is the name smoke.last.(htm(l?)|yml) legal on all the systems we support? | 01:45 | |
01:46
weinig is now known as weinig|sleep
01:47
cmarcelo joined
|
|||
cmarcelo | hello. any MOP "specialist" in here? | 01:49 | |
Khisanth | TreyHarris: wouldn't it be simpler to name it smoke.(modification time).html? | 01:50 | |
TreyHarris | Khisanth: they are rather large, I don't think people want smokes piling up. But if you're checking for regression, having your last smoke is handy | 01:51 | |
01:59
mac93 joined
|
|||
audreyt | cmarcelo: #moose has them | 02:09 | |
cmarcelo | freenode's? | 02:10 | |
audreyt | irc.perl.org's | 02:11 | |
svnbot6 | r13774 | fglock++ | [v6.pm] | 02:13 | |
r13774 | fglock++ | - autoboxing: $array = (1,2,3); $array = [1,2,3]; $hash = { a => 'b' }; $code = { 1 }; | |||
r13774 | fglock++ | - 'Code' class | |||
cmarcelo | i'm going there :)... i'm trying to get around MO::Overview, I took a break to study OpenC++ (paper were simpler than M::Over) so I got an idea about MOP but still lots of "existential doubts".. :o) | ||
audreyt | ok :) | 02:21 | |
svnbot6 | r13775 | trey++ | [util/run-smoke.pl] | ||
r13775 | trey++ | make smoke will now rename the last smoke as | |||
r13775 | trey++ | smoke.last.html and smoke.last.yml. | |||
r13776 | trey++ | Added indention of message to match other messages. | 02:25 | ||
02:57
mauke_ joined
03:07
mako132_ joined
03:12
mauke_ is now known as mauke
03:14
etzel_ is now known as etzel
03:41
Gothmog_ joined
04:26
mac93 joined
05:11
Aankhen`` joined
05:31
imago joined
05:44
kanru joined
|
|||
svnbot6 | r13777 | lanny++ | [docs/Perl6/Spec/Functions.pod] | 05:52 | |
r13777 | lanny++ | - reference discussion beginning colabti.de/irclogger/irclogger_log/...el=64#l107 | |||
r13777 | lanny++ | * Changed SortCriterion to Ordering and moved to Type Declarations | |||
r13777 | lanny++ | * Added Any to Function Packages and placed eqv() and cmp() within | |||
r13777 | lanny++ | * Added :repl to pick() and modified docs | |||
r13777 | lanny++ | * Modifed sort() docs | |||
r13777 | lanny++ | * Added min() and max() | |||
lambdabot | Title: #perl6 2006-10-01,Sun, tinyurl.com/jjuay | ||
05:57
MacVince joined
06:05
kanru joined
|
|||
gaal mooses | 06:24 | ||
07:10
iblechbot joined
07:11
elmex joined,
imago joined
|
|||
lumi | gaal: Moose | 07:17 | |
07:20
zakharyas joined
|
|||
svnbot6 | r13778 | audreyt++ | * Support for instance default expressions (which are evaluated in | 07:20 | |
r13778 | audreyt++ | Class composition time, not in instance creation time): | |||
r13778 | audreyt++ | class Foo { | |||
r13778 | audreyt++ | has $.x = 10; | |||
r13778 | audreyt++ | } | |||
r13778 | audreyt++ | * In diamond inheritance, BUILD/DESTROY from a parent class won't be | |||
r13778 | audreyt++ | executed more than once. | |||
r13779 | audreyt++ | * More triaging under t/oo/; help needed for unTODO | 07:23 | ||
07:24
kane-xs joined
07:26
marmic joined
07:32
MacVince joined
07:35
jferrero joined
|
|||
masak | audreyt++ # instance default expressions | 07:36 | |
audreyt: what kind of help needed for unTODO? | |||
07:39
cognominal joined
|
|||
masak | um, I'm about to commit marking three tests as :todo<feature> and one as :todo<bug> in t/oo/ | 08:09 | |
but I actually have a very vague idea about the difference between these | |||
or how to tell | |||
help appreciated | 08:10 | ||
08:19
mdiep_ joined
08:31
buetow joined
08:32
Psyche^ joined
08:35
Psyche^ is now known as Patterner
08:54
bradb joined
|
|||
Juerd | audreyt: feather now listens on 443 for both ssl and ssh | 09:16 | |
webmind | how does it know the difference ? | 09:18 | |
09:21
xinming__ is now known as xinming
|
|||
Juerd | webmind: With SSL, the client initiates communication, with SSH, the server does. | 09:32 | |
09:39
chris2 joined
|
|||
Juerd | feather runs 14 irssis :) | 09:43 | |
09:48
drrho joined
09:53
imago_ joined
|
|||
audreyt | mauke: a :todo<feature> is something that is missing | 09:53 | |
a :todo<bug> is something that "works" but incorrectly | 09:54 | ||
when in doubt, call it a bug :) | |||
webmind | Juerd, so what do you use to select between te two ? | 09:55 | |
masak | audreyt: oki | ||
09:56
rodi joined
|
|||
audreyt | dinner, bbiab | 09:57 | |
svnbot6 | r13780 | masak++ | * marked a few failing t/oo/ test cases :todo<bug> | 10:00 | |
Juerd | webmind: sslh, distributed with Net::Proxy. It was demonstrated at YAPC::Europe | 10:02 | |
webmind | ah k, cool | 10:03 | |
audreyt | Juerd: woot, thanks! (re sslh) | 10:06 | |
mauke: unTODO help, as in look at yellow boxes in smoke matrix | 10:13 | ||
and remove the :todo on those tests | |||
since they are now passing and no longer todo | |||
10:16
imago_ is now known as gunya
10:51
ruoso joined
10:56
kane-xs_ joined
11:13
xinming_ joined
|
|||
masak can live with everyone calling him mauke :) | 12:19 | ||
though I'm trying to think of a way to highlight those lines too | 12:20 | ||
so I can react sooner when people say something to me | |||
12:21
Limbic_Region joined
|
|||
Khisanth | masak: can't set that in your client? | 12:25 | |
12:26
xdg joined
|
|||
Limbic_Region | salutations all | 12:27 | |
masak | Khisanth: not that I can see. I'd need some sort of "people sometimes call me" feature (or rather "highlight lines containing:"). I'm running X-Chat. | 12:29 | |
Khisanth | that is in the preferences window :) | 12:30 | |
masak looks again | |||
Khisanth | under Chatting>General | ||
second text entry from the bottom | |||
masak | Khisanth: thx. found it | ||
can you please call me mauke once so I can see if it works? | |||
Khisanth | hello mauke | 12:32 | |
masak | it works! :) | ||
Khisanth | that is actually more difficult to type since tab completion goes to you first :P | ||
masak | really? strange... | ||
Khisanth | yes I have it set to complete based on the last time a person has spoken | 12:33 | |
and you are the last person with a "m" nick speaking | |||
masak | Khisanth: maybe some clients only take the first person matching "ma", alphabetically | ||
regardless of who spoke last | 12:34 | ||
Khisanth | xchat's default tab completion does that | ||
masak | (but that would make me "Maddingue" instead, so that theory doesn't work) | ||
Khisanth | heh looks like they are completing to masak but have an off by 1 error! | 12:35 | |
masak | :) | ||
svnbot6 | r13781 | masak++ | [t/builtins/lists/reduce.t] | 12:46 | |
r13781 | masak++ | * removed :todo<unspecced> for an unexpectedly passing test | |||
12:56
iblechbot joined
|
|||
svnbot6 | r13782 | audreyt++ | * The statement-level "does Foo;" and "is Bar;" inside a class | 12:58 | |
r13782 | audreyt++ | declaration are now compile-time macros instead of runtime mixins, | |||
r13782 | audreyt++ | exactly as if they've been declared in the class declaration head: | |||
r13782 | audreyt++ | class Moose does Foo does Bar {...} | 12:59 | ||
r13782 | audreyt++ | class Moose { does Foo; does Bar; ... } # same thing | |||
r13783 | audreyt++ | * unTODO. | |||
13:00
eggzeck[laptop] joined
|
|||
Limbic_Region imagines a pedagog teaching: class Debbie does Dallas; | 13:04 | ||
svnbot6 | r13784 | audreyt++ | * more unTODO. | ||
Limbic_Region | ok - sorry for the inappropriate Monday morning humor - but it is Monday | ||
masak | Limbic_Region: :) | 13:07 | |
svnbot6 | r13785 | masak++ | s/_initializement/_initialization/ | 13:10 | |
r13786 | masak++ | and some further s/ement/ation/ within the test file | 13:13 | ||
r13787 | audreyt++ | * Some more triaging; t/oo/roles/ done. | |||
13:21
DHGE joined
13:27
BooK joined
13:31
vel joined
|
|||
clkao | audreyt: hey. if $c has an incovant, should foo($c;$c) discard the invocant on the second capture ? | 13:33 | |
clkao goes to buy some milk | |||
13:38
Odin-LAP joined
|
|||
Limbic_Region | um, the nmake smoke output looks different - did something change recently? | 13:50 | |
13:51
rodi joined
13:56
jferrero joined
|
|||
svnbot6 | r13788 | audreyt++ | * Runtime mixin "$x does Foo" simply eval back into $x for now. | 13:58 | |
14:17
iblechbot joined
14:22
mako132 joined
|
|||
audreyt | clkao: |$c;|$c you meann? | 14:28 | |
(otherwise it's just two positionals) | |||
when there's already an invocant, the invocant became 0th positional | |||
in that feed | |||
clkao | yes | 14:29 | |
audreyt | @tell markstos I've fixed pugs so method/multi.t mostly passes -- the one that didn't (*%h) was because all methods implicitly gets a (*%_) | ||
lambdabot | Consider it noted. | ||
Limbic_Region | circa 95% on my Win32 audreyt | ||
clkao | audreyt: ok... but only the the second |$c ? | ||
audreyt | Limbic_Region: *nod* I have ~67 test files to triage | ||
clkao: correct | |||
Limbic_Region: was 120 just 4 days ago, so it's getting there | 14:30 | ||
Limbic_Region | audreyt - there is another Win32 smoker that isn't doing as hot though | ||
not sure what the differences are | |||
audreyt | *nod* | ||
clkao | audreyt: is it in the spec | 14:31 | |
Limbic_Region | oh, and the weird not loading Test.pm.yml correctly has apparently been fixed | ||
audreyt | clkao: merely "The invocant does not participate in multi-dimensional argument list" | 14:33 | |
clkao: so i's also acceptable to die onsecond |$c I think. it's documented in TimToady's brain only at this moment... | |||
Limbic_Region | heh - the Java instructor from last week had never heard of multi-method dispatch | ||
clkao | the behaviour about unshifting it into pos args | ||
hmm. ok. | |||
audreyt | Limbic_Region: it's called method overloading there. | ||
exactly same thing | |||
clkao | but ya. i think we need to take the capture bit from P::Runtime::Mtch | 14:34 | |
for runtime cptures | |||
audreyt | yup | ||
clkao | pesky keyboard | ||
wht should it be called? pugs::runtime::capture? data::capture? | |||
audreyt | Data::Capture sounds just fine | 14:35 | |
P::R::Capture will work too | |||
svnbot6 | r13789 | rodi++ | Typo (unterminated C<...> at line 1160). | ||
clkao | but sounds less neutral for normal p5 use in conjunction with data::bind | ||
audreyt | so D::C it is | ||
clkao | but d::c should be a role right? and PC::Match does it | ||
audreyt | I think it can be simple inheritance. | 14:36 | |
Match is Capture, that is | |||
clkao | ok will try to spend one hour on it. and $work | ||
audreyt | moose!yay | 14:37 | |
audreyt just fixed various weird OO bugs in pugs | |||
Limbic_Region | audreyt - yes, I know but this instructor claimed over 20 years experience in programming and listed smalltalk and other OO languages amongst his many known languages | ||
audreyt | markstos++ # t/oo/* | ||
Limbic_Region: "MMD" is a very not popular jargon for this concept | 14:38 | ||
neither "multi dispatch" | |||
clkao | any particular reason PC::Runtime is trying to use its own version of class::insideout? | ||
audreyt | ask fglock, there's a reason | ||
clkao | @tell fglock any particular reason PC::Runtime is trying to use its own version of class::insideout? | 14:39 | |
lambdabot | Consider it noted. | ||
svnbot6 | r13790 | ajs++ | Unicode normalization as promised on IRC. This is not final, and may not even remain. Some determination should be made about comparioson and smart matching (do thye use normalization / do they compare normalized forms?) | 14:41 | |
r13791 | ajs++ | Clarified comparisons of normalized strings | |||
audreyt | (for the record I don't like the name MMD when "multi" and "method" are orthogonal and unrelated concepts) | 14:42 | |
ajs_work | So, there's the Unicode normalization stuff for discussion, should anyone care to review. | ||
Based mostly on www.unicode.org/unicode/reports/tr15/ | |||
lambdabot | Title: UAX #15: Unicode Normalization | ||
14:43
theorb joined
|
|||
clkao | audreyt: what was blocking the type-based sub::multi do you remember? | 14:44 | |
audreyt goes excising all such "multimethod" occurances in S06 | 14:45 | ||
clkao: Class::MultiMethod calculus in Moose | |||
clkao | ya, but i remembered there was somehitng not working so i stopped | 14:46 | |
audreyt | that escaped me... | ||
clkao | maybe i should start blogging as secondary brain | ||
the 'invocant' in match is the whole matched string right? | 14:47 | ||
audreyt | yes | 14:48 | |
14:48
xinming joined
|
|||
audreyt | alternately it's uninitialized by default and only calculated on demand | 14:49 | |
when stringied , etc | |||
clkao | *nod* | ||
14:50
Su-Shee joined
|
|||
Su-Shee | hi. | 14:50 | |
audreyt | Su-Shee: greetings | 14:52 | |
ajs_work | The Unicode documentation is so simple and readable. Who wouldn't know what "conjoining jamo of various types" meant? :-/ | ||
14:53
zakharyas left
|
|||
clkao | i noticed the hash overload in PC::Match is returning the arrays as well, like 0 => 'foo', 1 => 'bar', along with the named one. is it the right behaviour? | 14:53 | |
audreyt | Su-Shee: are you tryshee at gmail? would you like a commit bit? :) | 14:55 | |
Su-Shee | I am indeed "tryshee" - but how did this end up here?! :) | ||
rodi | audreyt is all-knowing. | 14:56 | |
PerlJam | Su-Shee: didn't you see the sign when you came in? It reads "Beware! There be Smart People inside. Enter at your own risk!" | ||
rodi | which reminds me: audreyt, is my next baby going to be a boy or a girl (baby is due December 31!) | 14:57 | |
Su-Shee feels stripped to the bare bones of her existence. ;) | |||
rodi | We need to figure out what color to paint the nursery. | ||
PerlJam | rodi: it's going to be perl6! ;-) | ||
svnbot6 | r13792 | audreyt++ | * Pugs.Eval.Var: Much improve multi dispatch system; | ||
r13792 | audreyt++ | now the presence of a slurpy named hash (*%_, which is | |||
r13792 | audreyt++ | default for all methods) no longer totally disables | |||
r13792 | audreyt++ | argument-counting compatibility check. | |||
r13792 | audreyt++ | Also, (Str @x) now constraints the incoming argument | |||
r13792 | audreyt++ | to Array, not Str, as it should be. | |||
audreyt | rodi: yes, your next baby is going to be a boy or a girl, or both (less likely though). | ||
rodi | LOL | ||
PerlJam | audreyt: it could be neither. | ||
audreyt | that's even less likely, but yeah | ||
Su-Shee | rodi: choose green. ;) | 14:58 | |
PerlJam | rodi: show me a recent picture of your pregnant wife and I'll be able to make a good guess. | ||
ajs_work | S03 doesn't say it now, but I think eq (and thus smart-match) should (by default) coerce to Unicode normalized form before comparing. That is our Bool multi infix:eq(Str $a,Str $b){$a.uninorm === $b.uninorm} | ||
PerlJam | rodi: um ... a picture that includes her belly :) | ||
audreyt | Su-Shee: commit bit sent; you can test out commit to svn on svn.openfoundry.org/pugs/ by editing the AUTHORS file too add your name and commit it in. welcome aboard :) | 14:59 | |
lambdabot | Title: Revision 13792: / | ||
rodi | PerlJam: hehe, no good belly shot on the laptop- I | ||
I'll try to get one, though. | |||
audreyt | ajs_work: maybe all Str is inherently normalised. | ||
I'd prefer that. | |||
ajs_work | audreyt: I was thinking that, but the overhead seems prohibitive. | ||
especially when passing entire programs around | 15:00 | ||
PerlJam | rodi: Haven't you guys done an ultrasound or anything? | ||
ajs_work | Ultrasound is just a bad superhero name ;) | ||
audreyt | ajs_work: but the default unicode level is grapheme | 15:01 | |
svnbot6 | r13793 | audreyt++ | * HTML::Entities: Add a Str constraint to help multi tiebreaking. | ||
audreyt | which already implied that precomposed chars need to work the same as non- | 15:02 | |
ajs_work | audreyt: thinking about that... | ||
rodi | PerlJam: I'm caught. We have, and I already know it's a littly boy :-D but I like to hear how different people guess. For instance, this weekend we went to the renaissance festival, and one fortune teller called out that it was a boy... | 15:04 | |
But audreyt's response was the best yet. "yes" | |||
And Su-Shee, I think we *are* going to paint the nursery green :) | 15:05 | ||
PerlJam | rodi: heh, I was going to guess boy too sight unseen. But typically girl babies hang lower in the belly than boy babies (or so all the women around have said through many pregnancies) | ||
ajs_work | So a Str probably contains what you put into it (no surprises), but also probably has a slot for caching its normalized representation. That would speed up lots of work, and you could use a simpler type or turn off the caching (perhaps via a role) if it's a problem in terms of memory. | ||
audreyt | Su-Shee: I think #094 will make a nice nursery painting colour... | 15:06 | |
ajs_work | I *do not* think compatibility normalization should be performed by default, since ? and fi are different things. | ||
Su-Shee | I'd choose rainbow colours - satisfies any possibilities and looks cool .. colorful. :) | ||
audreyt | ajs_work: yes, actually Str manages multiple buf underneath | ||
each maybe weirdly encoded | |||
but that (and caching) is likely VM specific | 15:07 | ||
ajs_work | audreyt: Ok, that's cool then. And eq simply operates on the appropriate underlying buf for the current Unicode level? | ||
audreyt | I think so, at least that's the plan I've been nudging #haskell people toward | 15:08 | |
clkao | audreyt: in the capture faq, \($x) == \($x: ) | ||
audreyt | clkao: yes, that's as currently specced, but that may go away. | ||
clkao | does that mean invocant gets in positional anyway? | ||
ajs_work | I will look into how Parrot does | ||
audreyt | \$x === \($x:) # this for sure | ||
clkao | ya | ||
but the \($x) bit? | |||
Su-Shee | Hm. Matching Unicode. I wanted to give me a treat and buy friedl 3. | 15:09 | |
audreyt | ajs_work: it doesn't do normalization. I think it hooks ICU, but normalization is only exposed via explicit calls to compose/decompose | ||
ajs_work | audreyt: Ok. That's probably fair, since the semantics are language-level. Parrot does what any language will need to start from. | 15:10 | |
audreyt | exactly. | ||
PerlJam | Su-Shee: There's an MRE3? | 15:11 | |
PerlJam checks ora | 15:12 | ||
Su-Shee | PerlJam: Yes, rather fresh of the press. | ||
ajs_work | Well, I'm off to do work-work. Thanks for the feedback. | ||
PerlJam | Su-Shee: I see. Aug 2006 | ||
Full chapter devoted to PHP. | |||
what a waste ;-) | 15:13 | ||
Su-Shee | Hm. Ok, I'm going to check this out in the bookstore first. ;) | 15:14 | |
PerlJam | The last 4 chapters are devoted to perl, java, .net, and php. Those are probably the most useful chapters. | 15:16 | |
clkao | audreyt: it seems to be a bit hateful. as it needs to hold ref to values all the time to do anything sensibly | 15:17 | |
Su-Shee | I've got the first two Friedls, it's more a question of "I buy them always.." than the need for another regex-book. :) I'm waiting for Friedls "mastering perl6 regex" or something like that. | 15:18 | |
PerlJam | Heck, jfriedl should do the same as Robert Sedgewick. Have a whole series of books: MRE in perl, MRE in Java, MRE in python, MRE in C (yikes!), MRE in ruby, MRE in PHP, MRE in .net, etc. | ||
(Sedgewick had a slew of "algorithms in X" books) | |||
15:19
rodi joined
|
|||
Su-Shee | Yeah, but most draw heavily from perl - I'm really curious if they start to adopt the new things of perl6. | 15:19 | |
PerlJam | I imagine they will with time (assuming perl6 is ever "released" or that at least the perl6 regex engine is released) | 15:20 | |
audreyt | clkao: sorry, I'm fading now... tomorrow perhaps :) | ||
PerlJam: dmq's been working a lot lately on things that will enable native p6re support on p5re engine | |||
PerlJam | audreyt: what about on a pcre engine? :) | 15:21 | |
audreyt | which will make PCR much faster (and since Pugs just uses p5/pcr, that'd be fast as well) | ||
PerlJam: that would work as well, but p5re is iterative and reentrant and nice now :) | |||
(also part of the work was allow wswapping in of pcre sensibly) | 15:22 | ||
Su-Shee | PerlJam: I _will_ advertise and advocate for perl6. :) a perl6 book will be released in german by the end of the year. | ||
PerlJam: which hopefully makes people more aware. | |||
audreyt waves and goes to sleep :) & | |||
PerlJam | g'night audrey | 15:23 | |
Su-Shee | n8! :) | ||
masak | goodnite aud' | 15:26 | |
15:43
Eimi joined
|
|||
gaal | hola all moose | 15:49 | |
[particle] mooses at gaal | 15:52 | ||
gaal | yo [particle] | 15:53 | |
16:03
Eimi joined
16:15
buetow joined
16:22
jsiracusa joined,
hexmode joined
16:23
foo\ joined
16:32
Psyche^ joined
16:33
shobadobs joined
|
|||
Su-Shee | hm. does CGI.pm work right now or am I simply too stupid for cut and paste? I have to set the header manually. | 16:36 | |
16:38
BooK joined
16:41
amnesiac joined
16:49
Psyche^ is now known as Patterner
16:57
holoway joined
17:00
silug joined
17:15
buetow joined
17:25
etzel joined
17:27
cm joined
17:32
Narcisse joined
|
|||
obra | seen audreyt | 17:35 | |
jabbot | obra: audreyt was seen 2 hours 13 minutes 51 seconds ago | ||
17:36
hexmode joined
|
|||
[particle] | * audreyt waves and goes to sleep :) & | 17:38 | |
17:40
vel joined
|
|||
ashleyb | Hi, I'm new around here, just getting involved, could some one clarify for me: what are the definitions of "pugs" -- What has me confused is using the word "pugs" for the perl 5 implementation of perl6 (as opposed to the haskell implementation) , so what does "pugs" mean? | 17:57 | |
gaal | pugs is the implementation written in haskell, primarily running its own runcore | 17:58 | |
TimToady | it's also the whole project, which includes pugs. | ||
lambdabot | TimToady: You have 1 new message. '/msg lambdabot @messages' to read it. | ||
gaal | but it can also emit code in javascript and some other backends (though those are less featurefull) | 17:59 | |
wilx | I thought Pugs was audrey's dog's name. Or some such thing. | ||
ashleyb | so the whole perl6 project is called pugs? | ||
gaal | also, the perl-on-perl stuff lives in the same repo | ||
TimToady | nope, just this particular svn part of it | ||
but there's a lot of stuff under that svn repostitory that aren't directly part of the Haskell implementation | 18:00 | ||
ashleyb | so pugs refers to what ever is in the svn repo? | ||
TimToady | the whole Perl 6 project is just called "Perl 6". :) | ||
ashleyb | so is v6.pm part of pugs? | 18:01 | |
TimToady | that would include the parrot project, which is not part of the pugs repository | ||
ashleyb | ok | ||
TimToady | and all the wikis and such in various spots | ||
Juerd uses that same definition for feather :) | |||
"and that includes Parrot, of course" | |||
[particle] | v6 uses the pugs repo for development, releases of v6 are on cpan. | 18:02 | |
(this as also true for some other pugs-related perl5 modules) | |||
TimToady | basically, this whole Perl 6 thing is just a flooding algorithm, and wherever is downhill from here, that's where we go. :) | ||
gaal | also, the test suite | ||
TimToady | just that different people see different versions of "downhill" | 18:03 | |
[particle] asks, "why is the world in love again?" | |||
gaal | answer: bicycles | ||
ashleyb | ok so the pugs name got stuck in some of the perl5 modules like "Pugs::Compiler::Rule" - but this is p5 not haskell -- right? so what is the etymology of that package? | 18:04 | |
TimToady | ashleyb: do you have a commit bit yet? | ||
ashleyb | nope not yet, but let me guess this is your lasso trick coming up? | ||
TimToady | actually, it's audrey's lasso trick... | 18:05 | |
ashleyb | *smiles* | ||
TimToady | but she has recruited a bunch of meta-lassoers | ||
[particle] | ...but you're getting pretty good at it, TimToady :) | ||
[particle] is a bit-carrying member of that posse | 18:06 | ||
ashleyb | so what's the deal with the name "Pugs::Compiler::Rule" ? | ||
gaal is disappointed not to find a good image of a masthead knot online | |||
ashleyb | if it doesn't require ghc | ||
gaal | (kind of a metalasso) | 18:07 | |
[particle] | ashleyb: i believe it was to differentiate itself from the Perl6:: modules already on cpan | ||
TimToady | that's using "pugs" as the name of the repo rather than the name of the Haskell impl | ||
integral | .oO( the 'g' in 'Pugs' isn't for GHC ) |
||
gaal | it's for golfing, actually :-) | ||
though -fglasgow-exts also acts as -fgolfing-exts, so I wonder | 18:08 | ||
[particle] yells "six!" and swings his club | |||
TimToady | I believe it was decided at the time that the Perl6:: on CPAN had acquired a rather ACME::ish feeling. | ||
ashleyb | *laughter( | ||
*laughter* | |||
TimToady | (as if Pugs:: isn't ACME:: all over again. :) | 18:09 | |
SamB | TimToady: so, if you are the koyote you will be in trouble? | ||
TimToady | pugs is dog friendly | ||
ashleyb | ok so this feels like a wiki page coming on "what is pugs?"... | 18:10 | |
18:11
larsen joined
18:13
cm_ joined
18:20
Qiang joined
|
|||
ashleyb | rakudo.org/perl6/index.cgi?glossary...and_jargon | 18:23 | |
lambdabot | tinyurl.com/lyeet | ||
ashleyb | does that look right? | ||
for "pugs" | |||
18:24
lanny joined
|
|||
lanny | I am corrupted. I'm starting to write @forms[-1] in my perl5 code. :( | 18:24 | |
TimToady | looks good to me. are you perchance the ashleyb at halcyon? | 18:26 | |
18:26
polettix joined
|
|||
TimToady | @messages | 18:29 | |
lambdabot | audreyt said 1d 3h 54m 5s ago: I'm dropping support for [+]<< because << recurses into subarrays and so [+] never got a chance... | ||
ashleyb | nope not the ashleyb at halcyon -- sorry. | ||
TimToady | google finds a lot of ashleys...alas. | 18:30 | |
anyway, if you send an email address one of us can get you an invite | 18:31 | ||
private msg is okay or foo at bar dot com form | |||
to avoid spam | |||
18:32
cm joined
|
|||
TimToady | email to [email@hidden.address] works too | 18:32 | |
and I already get gigabytes of spam on that address, so I don't care if you see it. | |||
Su-Shee | Hmpf. In order to get a beginner's guide .. someone has to write one, right? | 18:34 | |
18:34
weinig|sleep is now known as weinig
|
|||
TimToady | to write a good beginner's guide usually takes at least two people, one of which is a beginner, and one of which is not. | 18:35 | |
Su-Shee takes the beginner writing beginner's stuff-part. I simply need it. | 18:37 | ||
18:40
Qiang_ joined
18:42
b_jonas joined
18:46
cm_ joined
19:07
weinig is now known as weinig|bbl
|
|||
gaal | An Incremental Approach to Compiler Construction - scheme2006.cs.uchicago.edu/11-ghuloum.pdf | 19:07 | |
lambdabot | tinyurl.com/mpaac | ||
19:08
iblechbot_ joined
19:11
putter joined
|
|||
putter | Slides for Steele's recent talk on Fortress are up iic.harvard.edu/documents/steeleLec...public.pdf | 19:12 | |
lambdabot | tinyurl.com/j9fco | ||
putter | & | ||
19:49
spoop joined
20:00
vel joined
|
|||
TimToady | ext/URI/t/escape.t seems to be looping | 20:02 | |
20:06
Limbic_Region joined
20:19
mdiep joined
20:22
ofer0 joined
20:24
jferrero joined
|
|||
TimToady | examples/algorithms/quicksort.pl ain't so quick at running infinite loops either. | 20:37 | |
TreyHarris | TimToady: yep, confirmed | ||
i didn't look at the smoke i started 3 hours ago until just now | |||
stuck on ext/URI/t/escape.t | |||
TimToady | I chewed up an hour of CPU on that one--sounds like you chewed up more... | 20:38 | |
TreyHarris | yeah :) | ||
TimToady: so, I don't want to draw you into the rat hole that's been going on on p6-l until you're ready, but I am wondering: do you have clearly in mind whether typing of sigs and args in Perl 6 exists just for multis to work correctly and for additional checking when required, or for autocoercion too? it's a question i often get asked when i talk about Perl 6, and I usually just handwave and talk about the sorts of things that *could* be done... | 20:41 | ||
oh, the other one I get, immediately after describing autoboxing and captures: "so why does Perl 6 still have @vars and %vars? just for some extra namespaces? it looks like you can do everything with $vars now..." (course, you could do everything with scaler vars in perl 5 too, it was just much more keyboarding. In Perl 6 it's rarely any more keyboarding at all.) | 20:43 | ||
PerlJam | TreyHarris: @foo and %bar are annotations for humans about default expectation IMHO. | 20:46 | |
wolverian | could be useful to the type inferencer too, I suppose. | 20:49 | |
TimToady | TreyHarris: I have clearly in mind that multis are the primary use of sigs/captures, but not the exclusive use. They're really pattern matching primitives. | ||
As for the sigils, Perl will lose its plural markers about the same time English does. | 20:50 | ||
PerlJam | heh | ||
ajs_work | TimToady, so you're saying that foo is a scalar and foos is an array now? Does that make fooz a hash? ;) | 20:51 | |
TimToady | orz | ||
20:52
SubStack joined
|
|||
wolverian | foo's 2th = "a"; | 20:56 | |
20:56
yts joined
|
|||
wolverian | s,th,nd, # oops | 20:56 | |
TreyHarris | TimToady: ok, makes sense. the reactions I've generally gotten when I mention the possibility of autocoercion seems to be either a) elation from people who have always wanted it, or b) revulsion from those who have used it in another language (usually C++). so i think there's a huge opportunity here if we can do it right, but a lot of danger too... | 21:00 | |
21:01
crem_ joined
|
|||
TimToady | at the moment we've said that only the basic P5 Str/Num autocoercions happen implicitly. Others must be explicit, or at least declared implicit. | 21:01 | |
but that's also why we've said that Foo() implies coercion rather than construction, and you have to say Foo.new() to force construction. | 21:02 | ||
Use Foo() if you don't care whether it's a new object or not. | |||
TreyHarris | yup. and it would always be easy enough to add a multi to give the appearance in user code of autocoercion while leaving the actual coercion explicit | ||
TimToady | yes, that's probably how implicit conversions are defined. | 21:03 | |
possibly even with "multi * (Bar --> Foo)" since it's an 'is deeply' kind of thing. | 21:05 | ||
so you're binding semantics rather than a particular syntax. | |||
so the actual name doesn't matter. | 21:06 | ||
prefix:<?> and prefix:<true> are really the same semantic operation. | |||
mugwump | mmm. have you got any idea about how true aliases like that could work? eg, equivalent unicode vs ascii operators | 21:07 | |
aiui at the moment you'd have to define both | 21:08 | ||
21:09
araujo joined
|
|||
TimToady | it's easy enough to alias normal subs with ::=, but things in syntactic categories tend to also need macro capabilities, so that tends to force separate declarations if the macroness differs. I don't think we've specified what ::= does with "is parsed". | 21:11 | |
but if the default behavior for the syntactic category is desired, then | 21:12 | ||
&*prefix:<?> ::= &*prefix:<true> may have sufficient info. | |||
except it might poke ? into the wrong precedence level. | 21:13 | ||
21:29
Limbic_Region joined
|
|||
mugwump | TimToady: do references notionally point to $object.WHICH ? | 21:53 | |
21:53
Odin- joined
|
|||
mugwump | ie, say I change one of an object's 'primary' values, does that invalidate pointers to the object? (or, perhaps even create a new object) | 21:54 | |
I'm starting to wonder if making the return value of a function define its identity is the right approach | 21:59 | ||
(the .WHICH function) | |||
There was a gut feeling that it was more of a constructor thing some time ago when I first looked at this | 22:00 | ||
22:03
putter joined
|
|||
mugwump | Here's the code that illustrates; | 22:06 | |
class Dog { has $.dogtag; has $.size; method WHICH { $.dogtag } }; my Dog $spot .= new(:dogtag<spot123>, :size<35>); say $spot.size; say Dog.new(:dogtag<spot123>).size; | |||
?eval class Dog { has $.dogtag; has $.size; method WHICH { $.dogtag } }; my Dog $spot .= new(:dogtag<spot123>, :size<35>); say $spot.size; say Dog.new(:dogtag<spot123>).size; | |||
22:06
evalbot_r13766 is now known as evalbot_r13793
|
|||
evalbot_r13793 | OUTPUT[35 ] Bool::True | 22:06 | |
mugwump considers timing out this question and referring to the list | 22:08 | ||
22:10
beppu_ joined
|
|||
mugwump | note that the output of the above program would have been [35 35 ] if .WHICH provided a definition of object identity | 22:12 | |
putter | does anyone know the current state of literal unicode named characters? | 22:14 | |
mugwump | your adjectives seem to disagree there | 22:15 | |
how can a character be literal and named? | |||
putter | :) | 22:16 | |
actually, string escape is what I was aiming for | |||
"\c[LATIN CAPITAL LETTER A]" | |||
mugwump | that's self-referential! :) | 22:17 | |
putter | lol | 22:18 | |
[particle] | mugwump ::= "\c[IRC LITERAL WISE GUY]" | ||
putter | also unspecced apparrently. and googling the list hasn't yet turned up anything. | ||
mugwump | right, but they're defined as rule tokens. | 22:20 | |
?eval "\c[NUMBER SIGN]" | 22:21 | ||
evalbot_r13793 | "#" | ||
putter | oops, I'm wrong. S02 defines \c. | 22:25 | |
22:30
mako132_ joined
|
|||
lumi | mugwump: Couldn't it be that, when overriding .WHICH, you're asserting its uniqueness? That is, it's your responsibility that .WHICH is good enough for identity | 22:40 | |
mugwump | That's right. But if you change the object in such a way that its .WHICH changes, what happens to things that were treating your .WHICH as the point of uniqueness? | 22:41 | |
lumi | I guess that .WHICH should be unique and consistent throughout object lifetime.. | 22:43 | |
mugwump | that would make life easy, sure | ||
lumi | Yup, although in Perl, rules are always made to be broken | 22:44 | |
mugwump | And then, how does object construction work? You create a not-quite object, call .WHICH, check in a hash to see if an object with the same .WHICH already exists, and if so just return that? | 22:45 | |
And does the value returned by .WHICH have to be unique for all types or just all types in the same class hierarchy? | 22:46 | ||
lumi | That would be some sort of memoization | ||
TreyHarris | also consider: | ||
?eval class Foo { has $.a is rw; method changeme ($self is rw:) { $self = Foo.new(:a(42)) } }; my Foo $moose .= new(:a(17)); say $moose.a; $moose.changeme; say $moose.a | |||
evalbot_r13793 | OUTPUT[17 42 ] Bool::True | ||
TreyHarris | a method is free to change its invocant | ||
lumi | Yes, but "that's your responsibility" means it's your responsibility :P | 22:47 | |
I mean, either a programmer respects its contract with the language, or the language puts out a contract on them | |||
Er, s/its/their/ # or other gender-neutral pronoun | |||
22:47
SubStack joined
|
|||
svnbot6 | r13794 | putter++ | [t/regex/from_perl6_rules/] | 22:48 | |
r13794 | putter++ | Undelete the 15 tests deleted "quasi-intentionally" by r13604. | |||
lumi | You shouldn't use your mutable attributes to identify yourself | ||
mugwump | Well, there would be one behaviour in this case that could be considered correct | 22:49 | |
That is, changing an object in such a way that .WHICH changes makes a new object | |||
And the old object goes away if nothing was referring to it. | |||
lumi | Oh, .become | 22:50 | |
TreyHarris | yes. the point is that there's TIMTOWDI currently on object identity. and I personally don't think this is a place where we want TIMTOWTDI, since there's a good change that we'll have the same issue that inside-out objects had with all the modules that assume that "object" means "blessed hash"..... bad coupling forced by convention, not by the language.... | ||
s/change/chance/ | |||
lumi | So you'd rather "object" mean "have this .WHICH"? | 22:51 | |
(This is just a query) | |||
mugwump | If you define .WHICH, are you not stating the basis of an object's identity? | 22:52 | |
lumi | It sounds like you are | ||
TreyHarris | lumi: who are you asking, me? | ||
mugwump | actually it's probably (.WHAT, .WHICH), but I guess that was implied | 22:53 | |
lumi | However, I don't think it's the object system's job to take care of memoizing for you always, especially since this is a classless society :) | ||
TreyHarris: Yes, sorry | |||
mugwump | it's not the object system's job, or it seems like a hard problem? | ||
TreyHarris | no, i think "object" is very well-defined in S12. an object is a value. i don't think we have the duality of object values versus simple values in Perl 6 like we do in Perl 5, so I think it would be harder to write a module that couldn't deal with any arbitrary objects than one that could. This is a Good Thing. | 22:54 | |
lumi | mugwump: It's not a hard problem, but it does sound like a lot of overhead.. but possibly by defining .WHICH you're asking for that? | ||
mugwump | yes, that's the idea. | 22:55 | |
TreyHarris | (The duality we might see is of modules that do Deep Magic only dealing with :repr<P6opaque> objects. But that will be much more rare than the multitude of modules on CPAN today that assume blessed-hash reprs.... | ||
lumi | So: method WHICH {...} would mean "Please memoize objects for me using this key" | 22:56 | |
I'm possibly misusing the word "memoize" | |||
mugwump | It could, but my gut feeling is that the side effects imply it's more of a property of the constructor | ||
TreyHarris | lumi: method WHICH means "if you ever see this thing I return again, you can assume that what returned it is me" | 22:57 | |
22:57
nothingmuch joined
|
|||
TreyHarris | $x === $y is defined as $x.WHICH eq $y.WHICH | 22:57 | |
lumi | TreyHarris: So I guess it's fair to assume that the optimizer, for one, would take your word for it? | 22:58 | |
TreyHarris | I would think so, if the optimizer operates at that high a semantic level.... | ||
mugwump | What === means is currently uninteresting. I'm more interested in =:= | ||
.WHICH just seems too late | 22:59 | ||
but maybe it's not. Maybe it's OK, when constructing objects, for Perl to call .WHICH on the resultant object, and if there was already an object with that ~~ .WHAT and ~~ .WHICH, then change the invocant before returning from .new | 23:01 | ||
TreyHarris | i need to scroll back clearly, as I didn't realize we were talking about the underlying variable, I thought we were talking about objects. objects don't exist at compile-time. well, objects the compiler instantiates itself do.... but i'm talking about ordinary code | ||
23:01
Odin- joined
|
|||
TreyHarris | ohhh... I see | 23:01 | |
< mugwump> TimToady: do references notionally point to $object.WHICH ? | 23:02 | ||
I'd be floored if that were true | |||
Because it would mean that you couldn't fake it out with class-internal memoization or singletonizing | |||
mugwump | those would be easy to implement, though | ||
TreyHarris | because you could never refer to "that other object with the same .WHICH as me" to do the indirection with.... | ||
mugwump | but if "another" object has the same .WHICH, it's the same object, by definition | 23:03 | |
TreyHarris | I've assumed that autoboxing and "there are no references in Perl 6" means that the only valid question to, "in C<$obj = Foo.new()>, what does $obj contain?" is "a Foo". asking a deeper question about $obj's value apart from Foo is specious... | 23:04 | |
mugwump | well, not if Foo is a singleton class | ||
which could be written: class Foo { method WHICH { } } | 23:05 | ||
lumi | Because then it's "the Foo" | ||
putter | looks like svnbot is on vacation again... | ||
TreyHarris | how does that matter? "$obj1 = Foo.new(); $obj2 = Foo.new();", the answer to what's in $obj1 or $obj2 is still "a Foo", it just happens to be the same Foo.... | 23:06 | |
mugwump | and? | ||
lumi | But then .new is lying | ||
TreyHarris | you said "not if Foo is a singleton class" | ||
lumi | I guess that's irrelevant | 23:07 | |
mugwump | right, but if Perl spots that the .WHICH has a prototype of (), ie it's always a constant, then it doesn't even have to call .new | ||
TreyHarris | lumi: do the specs say that new must return a nonpreexisting object? | ||
mugwump: what about "for ^2 { my $obj = Foo.new() }"? the only Foo goes out of scope | 23:09 | ||
mugwump | that's fine | ||
nobody said singletons had to be immortal | |||
I think you're getting containers and objects slightly confused. | |||
$y = $b = Foo.new() - gives you two containers pointing at the same object | 23:10 | ||
lumi | TreyHarris: No, they don't, only my brain, and $larry not ex camera | ||
TreyHarris | mugwump: i understand that.... and $y := $b = Foo.new() doesn't | 23:11 | |
23:12
Aankhen`` joined
|
|||
lumi | I think I just lost you | 23:12 | |
mugwump | that's right, in that case you've got two lexicals for the same container | ||
23:12
mako132_ joined
|
|||
TreyHarris | right. but what does that have to do with my confusing container and object before? yes, of course "$obj = Foo.someFactory() # better? :)" puts something besides all of the Foo's representation into the container. but what I'm saying is that the answer to the question of "so what *is* stored in $obj then?" is "you can't ask that question, it's just a Foo." or "it's implementation-dependent" if you like :) | 23:14 | |
mugwump | You never care what things are, just how they behave | 23:15 | |
That's why I said "notionally" | |||
lumi | I guess it's an implementation detail, then | 23:17 | |
mugwump | Right. I think where we've arrived is that if the value that .WHICH returns ever changes for an object, the result is undefined. | 23:19 | |
TreyHarris | mugwump: but what about value types? | ||
mugwump | what about them? | 23:20 | |
lumi | Value types == immutable types? Or not necessarily? | ||
TreyHarris | ?eval my $val = 3; say $val.WHICH; $val += 2; say $val.WHICH | ||
23:20
evalbot_r13793 is now known as evalbot_r13794
|
|||
evalbot_r13794 | OUTPUT[3 5 ] Bool::True | 23:20 | |
TreyHarris | in effect, it just did the ($self is rw:) game I wrote above. | 23:21 | |
created a new object, and installed it into $val. because it refuses to allow 3's value to change. | |||
(I know that's not what's going on below the covers, I'm just speaking 'notionally' again.) | 23:22 | ||
I don't think you can tell the difference between an object that changes its .WHICH and an object that implements a value type. | |||
mugwump | that last comment is exactly what I'm getting at | 23:23 | |
lumi | Isn't it notionally, "VAR($val) = $val.+(2)" or so? | ||
mugwump | but how can you tell if the value of .WHICH would have changed? | ||
lumi | I mean, = happens at um, container level | ||
TreyHarris | ?eval my $obj = 3; say VAR($obj); $obj += 2; say VAR($obj) | 23:24 | |
evalbot_r13794 | OUTPUT[3 5 ] Bool::True | ||
mugwump | ok, my use of =:= before was incorrect; | 23:25 | |
?eval my $x = 5; my $y = 5; say "yes" if ($x =:= $y) | |||
evalbot_r13794 | undef | ||
TimToady | ?eval my $x = 5; my $y = 5; say "yes" if $x === $y | ||
evalbot_r13794 | OUTPUT[yes ] Bool::True | ||
TreyHarris | mugwump: I'll let TimToady answer your original question, but *my* answer would be: if it's a value type, then yes, changing one of its primary keys would cause you to suddenly have a new object. if it's a mutable type, then no, you can change its primary key but it's up to you to change WHICH as well if that's what you want. | 23:27 | |
(maybe not really a "new object", but as far as any code outside the class itself can tell...) | |||
mugwump | well, there are ways in which you could tell | 23:28 | |
TreyHarris | mugwump: but you shouldn't count on any of them | ||
mugwump | consider the case of a content hashed filesystem. | ||
in that, you have a "file" object, for which its .WHICH is defined as sha1_hex(self.contents) | 23:29 | ||
TreyHarris | sorry, back in 10m or so..... | ||
23:30
particle___ joined,
particle___ is now known as ___particle___
|
|||
mugwump | or, if you prefer, the sha1_hex is computed and placed into an object attribute $object_id | 23:30 | |
which is returned by .WHICH | |||
so, if I then create an object with .new(:object_id<...>), am I referring to the same object? | 23:31 | ||
lumi | Probably you are | 23:33 | |
23:34
dvorak joined
|
|||
mugwump | see also colabti.de/irclogger/irclogger_log/...el=70#l130 | 23:37 | |
lambdabot | Title: #perl6 2006-07-16,Sun, tinyurl.com/eozda | 23:38 | |
23:38
drbean joined
|
|||
mugwump | (note that the difference between now and then are that now I'm interested in what happens if WHICH changes...) | 23:40 | |
23:40
foo\ joined
|
|||
mugwump | I'm wondering if WHICH is actually a per-class macro, not a function | 23:49 | |
TreyHarris | mugwump: i guess i'm wondering when/why you would care, so long as outside of the class, you can safely use .WHICH to semantically identify a object. what is a case where you need to know the difference? | 23:55 |