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.
svnbot6 r10448 | Darren_Duncan++ | ext/Relation/ : correct private method call syntax to be \!meth() rather than .meth() 02:30
putter wrong time of day for questions, but I'll backlog... 02:56
p6 is a lisp-(5+5+5+1+5), yes? 02:57
that is,
env,package,lexical,lexical-sigilless,attribute
with $@%&::, but not @@ 02:58
{my @@x; my @x;} is a multiple declaration error? or not?
audreyt it's multiecl 02:59
not an err
multidecl in general is now ok as long as the storage class compat
putter looks at watch, wonders if audreyt has switched timezones ;) 03:00
audreyt no, just woke up
putter ah!
obra Wow. A pugs smoke in 20 minutes.
audreyt yeah, amazing, isn't it. 03:02
"make ghci" in 20 seconds.
obra how does that compare to your timings? I'm running with .5G 03:03
putter inside methods, submethods, and multimethods (putter tries to remember the difference between multimethods and multisubs...), $x is searched for in lexical,attribute,(and if not strict: current package(which is a Class), global package) 03:05
audreyt obra: 18 here
attribute is just lexical.
"has $x"
means making a $.x accessor
"my $x" 03:06
is class scope (noninherited) attr
under strict $x is _always_ lexical
mm both embed is borken on macintel 03:07
putter class A { my $x = 3; has $.y; method m1...} ... class A { my $x = 4; method m2...} m2 can see $y (just $y, not $.y), yes?
err, m2 can see $y (just $y, not merely $.y), yes? 03:08
audreyt I don't think $y enters the picture here, no
$y isn't in scope at all
"has $y" is just shorthand for "has $.y" 03:09
has no bearing on the lexical scope
putter hmm. I thought in m1, $y was short for $!y.
a closely related question is whether m2 can use $!y. 03:10
audreyt er sorry, typo 03:11
"has $y" is shorthand for "has $!y"
your example has "has $.y"
making it a public field
now if it's "has $!y" to begin with, then yes, current spec has it that you can refer to it as simply "$y in both m1 and m2. 03:12
also, the m2 declaration should have "class A is extended" or something
putter hmm. I thought even with a public field, one could say $!y to directly access without going though the accessor.
putter if m2 can say $!y for a not-in-a-surrounding-block has $!y... attributes are looking a bit un-lexical, no? 03:15
audreyt it's conceptually extending the lexical scope
you may be correct in saying that $y can refer to $.y. 03:16
but I think it's broken
putter or are class decl blocks doing some kind of weird lexical fusion in addition to package var fusion... putter squints...
audreyt i.e. though conceptually that may be sound, I think it's too confusing.
I also think one should write "has $x" but use it as "$!x" not just "$x"... 03:17
putter err, I thought $y referred to $!y, _not_ $.y...
audreyt but at least TimToady specced the latter point clearly
well, S12 can be read as that "has $.y" is just "has $y" with automagic accessor
it's a bit vague
putter 's head hurts. goes back to read spec... 03:18
audreyt TimToady: whats the motivation in letting undecoarated "$x" refer to private atts?
putter thanks audreyt :)
audreyt and if that's going to stay, can we get it to _not_ apply to "has $.y" style public atts?
np :)
putter hmmm. I do like abbreviating $!x to $x. But it does make $x a one-missing-visually-small-character-typo away from $.x, inviting "why isn't my accessor being called!#$%@$!" bugs. :/ 03:24
audreyt yup.
yay, I got my US 5yr visa. 03:29
now going to submit for norway visa...
audreyt wishes for a more portable passport ;)
putter regardless, $!x is at least un-lexical in that more than the current block nest needs to be consulted. so it still seems a lisp-(5+5+5+1+5). :) 03:30
"audreyt's visa tips for the world traveler" blog entry?
re multidecl not an err... I thought {my $x; my $x;} had become a compiletime error. or am I out of date... 03:32
audreyt it's now okay
putter ok. putter looks for vaguely remembered obsolete test... 03:33
audreyt bbiab 03:35
putter given the pugs speedup, it might be worth doing a postmortem-like summary of what went into it. 03:36
audreyt aka, release notes :) 03:37
putter lol
audreyt macintel ghc (wish post-install scripts that sets everything up for pugs): perlcabal.org/~audreyt/tmp/ghc-6.5....n8.tar.bz2 03:40
s/wish/with/ 03:41
obra++ for testing
putter re the sigilless-lexical namespace, the ways one creates names are sub and 0-ary-method decl, and &,:: parameters. yes? anything else? 03:44
dduncan regarding travelling ... 03:47
while I said I wanted to recently, I now know that I can't make it to YAPC NA this year, or any conference in the next few months ...
financial reasons fundamentally, though the late reg would still be difficult anyway 03:48
but I'll try to participate in the hackathon remotely
putter hmm. it might be nice to have a list of namespace "quirks". eg, &/:: as params creating bare names; search for package/module/class/role/subset/enum/type/grammar is different than for scalar/array/hash/code/rule/token/regex; @@ is a singular "not a namespace" sigil; ... 03:50
spinclad cmarcelo: pong (or just ask here, or /msg me, and we could shout across the clock at each other. not the swiftest of converse, i know)
cmarcelo @localtime spinclad 03:51
spinclad: hey. =)
spinclad good @turningearth, cmarcelo
cmarcelo (not lambdabot here =( )
audreyt I wouldn't mind getting it invited here
how do we do that? 03:52
cmarcelo audreyt: ask dons i think
spinclad how would it know my $localtime?
cmarcelo spinclad: he ask you with CTCP
spinclad makes sense
so... comments? complaints? sekrit meetings of cabals to hold out here in plain sight? things i should be designing in? 03:55
cmarcelo spinclad: just a question, why the third-party/judy doesnt have the auto* infrastructure from original distribution? just asking because to test it know i'm "hardwiring" HsJudy's Makefile to get to your impl., and for make a cabal package from it, i think it'll be kind of odd to use impl. from /home/work/pugs/... [if you didnt understand something i said, ask again, i'm newbie at english too]
cmarcelo @localtime spinclad 03:55
lambdabot Local time for spinclad is Sun May 28 23:55:48 2006
spinclad good to 1 second 03:56
putter re lookup for package(/module/class/role/subset/enum/type/grammar) names - given {module A { module One {}} module X { module A {} sub f(){ ... A::One ...} } }, does this succeed or fail? ie, do we commit once we find A, and then fail when it doesnt have a One, or keep looking?
audreyt ?eval [+] 1..100
lambdabot Parse error
evalbot_10448 5050 03:56
audreyt heh, that's rather unfortunate ;) 03:57
cmarcelo hehe
audreyt > foldl1 (+) [1..100]
lambdabot 5050
audreyt putter: conceptually the latter modules has to say "is extended" to extend the same module 03:58
and it has to be within the same compilation unit to be seen
cmarcelo spinclad: ops! "i'm newbie at english too" doesnt intended to mean that you are.. =D 03:59
putter I like both options. Power vs clarity. Module shadowing would be really nice. But... I'm not sure this really gets us that? If it does, it seems worth the clarity/typo-catching cost.
ah
hmm...
spinclad i started out only checking in the src/ and doc/ trees, on audreyt's suggestion. I don't know what best practice for third-party check-ins of one project into another is; planning to submit back to judy.sourceforge when my patch is ready. I have the original .tar handy 04:00
perhaps check in the .tar here... 04:01
audreyt no... just check in the auto* infrastructure
or, alterntely, check in the whole tree layout 04:02
and rm the inessential parts :)
putter does that really answer the question? X::A is distinct from A. the question is how the name ::A::One is resolved inside of X. simple ::A inside of X is resolved to X::A. so is ::A::One then a resolution error, as there is no X::A::One? or is ::A::One considered an atomic pattern, and failing to find a X::A::One, we keep looking, and find A::One? 04:04
spinclad src/ here is up to 9880 with temp files (not to check in), doc/ is 860, autom4te.cache is 2000, aclocal.m4 is 264, the biggest other is test/ at 696. 04:05
audreyt putter: wait a second
cmarcelo isn't autom4te.cache autogenerated?
audreyt putter: sorry I misunderstood yer q 04:06
spinclad at this point we'll have most of the dist tree checked in; simplest to check it all in from .tar so anyone can do ./configure && make ?
audreyt putter: inside module X, A::One always refer to either X::A::One or GLOBAL::A::One
never A::One, I think
spinclad: yes. 04:07
spinclad cmarcelo: could be, i'm looking at my local tree that i've been making in
audreyt spinclad: check in the whole judy-tarball-extracted
spinclad ok, will do now
cmarcelo tks 04:09
putter hmm. that was an unexpected answer. package names get resolved by crawling up the package nesting (after a lexical crawl). With global being the last package of the package crawl. so I would have expected either 04:12
putter a resolution failure (X::A exists but not X::A::One), or success with (some enclosing package, maybe global)::A::One), but not a mix 04:13
audreyt thinking. 04:20
I was under the impression that only ::A is searched from inner to outer 04:21
but it seems that it can be argued that A::One is merely looking for lexical ::A, and then get One from it
not sure. 04:22
(again less than well-specced)
which way would you prefer?
putter hmm 04:24
incremental and fail is simple. one problem with it is you can use package search to shadow an A::fun, but if A gets reorganized so it's A::One::fun, then boom, A::One::otherfun will start failing. err, no. but replace fun with Pkg. Eg, shadow Control::Basic and Control::Caller disappears. 04:31
while unfortunate, I'm not really pursuaded
basically, while in most things p6 is very "include anything folks have found useful", our namespace management story is still a bit crippled. 04:33
ie, we dont have something like "namespaces are first class objects, creating an binding algebra, which is scoped, ...". we have bits of it, and 04:34
implementing... hmm, lexically scoped multisub/method alternatives... may get us thinking about it more? but a lot of namespace challenges are still... filed under unspecced, or "for perl7". 04:36
it seems.
so... I'm still too fuzzy to have a real preference. sorry... 04:37
btw, is there a story on a connection between lvalue subs and Captures? I'd be tempted to return a Capture when want.LValue, but then there is want.rw, suggesting you can't always know when your context is lhs or rhs? Scalar as a Capture? 04:42
other btw, congrats on pugs speedup. audreyt++ ;) 04:43
etal++
spinclad cmarcelo, audreyt: done, r10449 04:45
svnbot6 r10449 | spinclad++ | - Judy: checking in rest of unpacked tarball
putter eep. 1pm. good night all. will backlog. &
spinclad (the autom4te.cache may be autogenerated, but it's in the tarball)
putter err, 1am. :) 04:46
spinclad putter, sweet dreams
cmarcelo spinclad: tks 04:49
spinclad np, this way makes sense to me 04:52
putter typing while asleep... s/Capture/Signature/. and resolution in pkg crawl should probably match that in earlier lexical crawl. which is incremental, non-atomic. ah well. 05:28
spinclad svn question: shouldn't r10449 have updated third-party/judy/Judy-1.0.3 to know about its new children? it seems to still only know about src/ and doc/. 06:43
cmarcelo spinclad: what do you mean by know? here "svn info test" and "svn info test/README" indicate that both are under version control... 06:47
spinclad true, but I was seeing C<svn ls> in Judy-1.0.3 only listing src and doc, and C<svn ls -R> likewise. but i see it acting properly now, listing all its svn children. seems to have changed while i wasn't looking. 07:07
spinclad (and other similar anomalies have cleared themselves up in the meantime) 07:11
so, i don't seem to have a question anymore, only a mystery: "what was it thinking?" 07:12
cmarcelo hehe =) 07:14
spinclad anyway, 3am here... think i'll go to bed early for a change, night, all & 07:15
ludan hello 08:48
svnbot6 r10450 | cmarcelo++ | HsJudy 10:02
r10450 | cmarcelo++ | * added JudyL functions to Judy/Private.hsc
r10450 | cmarcelo++ | * make test: a few tests to check Judy1 (via BitSet) and JudyL
cmarcelo audreyt: commited some work. could you take a look and see if it's in right direction? specially, are these kind of tests enough for now? i'll try to get all functions being called at least once in these test files... 10:05
fglock cmarcelo: are you in Campinas, Brazil? 13:28
putter another question for the backlog - 16:23
S03/Precedence has a "method postfix" line. most/all? of them dont seem to really be postfix. but I'm most puzzled by .= 16:24
.= is both a "method postfix" and an "assignment" infix. one is no-leading-whitespace, the other required-whitespace. but they both seem to be infix, no? so what are the called? they can't both be infix:<.=>; or is somethhing weird going on with the method postfix one? 16:26
16:28
observation next - there seem to be a few places where Snn says "list context" but I think it now means Capture context. 16:29
next - it might be nice to have a table of what contexts exist, and where/how they are used. anyone? 16:30
next - it might also be nice to have a table of all the namespaces, how variables are declared into and used from them, and what the lookup strategy is. 16:31
next - is S10's ArgList now a Capture? $+ARGLIST ? 16:34
next - could we get a section on [Cc]ontainers? the existing Snn info on them seems scattered, and "by implication when discussing something else". I'm still quite unclear on the concept(s?). 16:38
putter next - does anyone else keep getting Signatures and Captures confused, or is it just me. also cognitive interference between the names "captures" and "closures". Perhaps Lhs and Rhs ? :) Not really. I dont have a good alternative. I merely note it's been a month or few now, and I'm still tripping on them. 16:42
to repeat from earlier, 16:43
next - what is the connection, if any, between lvalue subs and Captu, arg!$#!, Signatures? 16:45
next - re the sigilless-lexical namespace, the ways one creates names are sub and 0-ary-method decl, and &,:: parameters. yes? anything else? 16:47
putter next - puzzled followup on something audreyt said - extending a class requires "is extended", ok. but has to be in the same compilation unit to be seen?!? I thought the story was anything can be extended anywhere? 16:51
next - the whole "just how lexical are attributes" conversation from earlier today. 16:52
putter and... I think that's it for now. 16:53
:)
guidance appreciated.
szbalint signatures - captures get me confused too. 16:54
putter ah. (not just me!:) 16:56
the concepts seem clear - generalized left and right hand sides of "assignment". but the names... 16:57
maybe I'll try to just think of them as lhs and rhs. 16:58
part of the problem might be that if one thinks in terms of lhs/rhs, the lhs "takes" the values, rhs "provides", and the word "capture" has very strong "taking" vibes. 17:04
szbalint: anything similar?
next - this has come up before, but perhaps now... it would be really really nice to have a complete package/module/class/role/type is/does/subset graph for just the core of the prelude. even if it has lots of "this is uncertain" caveats. even if it is sure to change. just so folks don't have to keep reverse engineering the 17:09
Snn just to get an even fuzzier version of it.
just having it all in one place, fuzziness and all, would be quite nice. 17:11
putter random thought - some languages are so verbose, name oriented, (scheme, python?), that code can aspire to be self documenting, with comments merely filling in the gaps. some languages are 17:16
putter are so terse (apl), that documentation and implementation are almost entirely separate, with documentation handled almost entirely by comments. 17:17
p6 seems inbetween, with the ability to go either way. what does that mean for writing maintainably documented p6 code? do we need any new doc infrastructure to handle it? 17:19
Eg, ... I don't know... footnotes? #(1,4) comments and #1:... lines? ...? 17:20
putter Footnotes, is they have pod-ish "link to section of another file" capability, might allow one to place code introduction, design discussion, implementation notes, etc, in a separate-but-linked file, avoiding code clutter, but capable of being presented together (via popups and such). 17:29
literate programming witht the default state being unwoven rather than woven. 17:30
szbalint putter++, lhs rhs seems to make me visualize it better.
putter :)
Alias_ WinSCP++ 17:32
putter cheers & 17:38
KingDillyDilly Way ahead of you guys. perlmonks.com/?node_id=321138 18:03
KingDillyDilly Yeah, well, as long as you know 18:27
pasteling "putter" at 66.30.119.55 pasted "fyi, Data.Yaml.Syck Makefile.PL errors" (156 lines, 6K) at sial.org/pbot/17414 22:31
putter so.... after a make test was clearly running slowly, went back and uncommented the config.yml Test precomp line. Reran Makefile.PL, make. In Makefile, ByteString got built this time, and no errors from Syck, but still Could not find module `Data.ByteString'. And this time, make failed with 23:22
Skipping DrIFT.Perl5... The interface for `DrIFT.Perl5': Can't find interface-file declaration for Data.ByteString.ByteString... . thud. 23:23
putter so, no joy. ah well. another day. 23:24
&
audreyt narrowly missed putter :/ 23:40
I wonder if just nuking dist/build/DriFT will work. or nuke dist/
audreyt fixed in trunk. 23:42
svnbot6 r10451 | audreyt++ | * First-time build of fps should precede HsSyck. 23:45
r10451 | audreyt++ | Reported by putter++
cmarcelo audreyt: hey. if you're not busy, could you take a look on my changes on third-party/HsJudy to see if it's that what you mean by low-level FFI and sanity checking? 23:48
audreyt looking. 23:49
cmarcelo tks 23:50
audreyt mm 23:54
does it compile for you?
I'm getting duplicate declaration of WordPtr 23:55
I'll rename WordPtr to JudyValue. 23:56
or just Value, since it's private 23:57
cmarcelo audreyt: i'll check it again, but it compiles fine here.. 23:59
svnbot6 r10452 | audreyt++ | * Rename WordPtr to Value to avoid name clashing with newer GHC,
r10452 | audreyt++ | which also defines WordPtr in its Foreign.Ptr.