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