6.2.2 is airborne! | pugscode.org <Overview Journal Logs> | pugs.kwiki.org
Set by autrijus on 1 May 2005.
mugwump however, that should not actually work because it's breaking the "types=compile time" rule 00:00
stevan how hard would it be to hack some kind of bless?
I imagine namespaces are non-trivial 00:01
multi sub foo (My::Class $self:) 00:02
although if types=compile time then how would that work with inheritance?
I didnt think Perl would do that much code analysis 00:03
mugwump not if you don't want it to it won't 00:06
but but inheritance is a simple case, it still works with 'compile time' classes, no matter how hazy that concept 00:07
stevan ok
so would a bless, which creates a magic type which can be checked with MMD work for this? 00:08
mugwump I'm thinking a sub-type would be a nice way to do this, see t/oo/subtypes.t 00:09
and abstract the Instance Hack into a Hack::Instance module
stevan mugwump: ok
oooh subtypes remind me of Ada 00:10
ok, I am going to set up the directories in svn 00:12
mugwump nopaste? 00:22
bah, using svn instead :) 00:23
stevan mugwump: I just committed ext/Perl-MetaModel
and associated file
mugwump cool
jabbot pugs - 2859 - adding skeleton for Perl-MetaClass 00:24
mugwump ok, just put some code in Hack::Instances 00:29
don't know if it works :)
mugwump oo's at that uber-pink bot announcer 00:30
obra svnbot6++ pretty
autrijus we have Rules support.
r2859. 00:31
er, r2861, I mean.
obra blinks
autrijus++
autrijus pmichaud++ # doing all the real work 00:32
I just glued it, that's all
stevan autrijus: Pugs is asking for $ENV{PARROT_PATH}, is that the source, or the binary?
autrijus sourcc
source
stevan ok 00:33
stevan crosses his fingers and trys again
jabbot pugs - 2860 - Idea of using sub-types to classify obje 00:34
pugs - 2861 - * real, honest-to-eris, Perl 6 Rules sup
stevan jabbot: you're too slow :P
jabbot stevan: Does it please you to believe I am too slow :P?
stevan jabbot: are you jealous of ingo's svnbot? 00:35
jabbot stevan: What are your feelings now?
stevan :) Pugs.Embed.Parrot compiled without issue 00:36
autrijus: are we doing a release today/tonight/in-the-next-24-hours? 00:44
mugwump on a Monday? 00:45
stevan sunday still for me
mugwump: Hack::Instances looks cool, we just need subtypes :) 00:47
mugwump oh, I thought we had them, given the state of t/oo/subtypes.t
stevan mugwump: I dont think we have them 00:48
mugwump those tests are still failing, then?
stevan they are all TODO
mugwump re-builds pugs to check
oh
so they are. 00:49
stevan no matter what, I think we will need some new features to accomplish this
autrijus stevan: I don't know really... I _think_ in the next 24 hours, if you can do changelog meanwhile
stevan autrijus: I will start on it
autrijus danke 00:51
stevan :) 00:53
Juerd huh? 00:54
whoa
autrijus++
A
whoa
autrijus++
autrijus++ 00:55
(stupid Terminal.app can't handle rapid loop { up; enter; })
And of course
pmichaud++ 00:56
Tomorrow I'll try and convert my script-that-generates-a-64-kilobyte-regex-and-then-scans-/usr/share/dict/words-with-it-script
s/-script//
I converted it to Ruby already, but its regex engine wouldn't even accept the long regex 00:57
So that comparison failed completely.
obra heh 00:59
Juerd D src/pge
svn: Failed to add directory 'src/pge': object of the same name already exists
heh.
autrijus hm? 01:01
Juerd Apparently, it doesn't really delete it
The solution is obviously rm -rf src/pge and then svn up again 01:02
Perhaps that's a useful note in your journal
clkao or use svk
Juerd I'm using svn 1.1.3
clkao: Company policy is to not run perl script :) 01:03
clkao oh, rewrite it to perl6 then
Juerd Perl6 ~~ Perl
Juerd has no real good reason for not using svk
Good night! 01:04
autrijus nite 01:09
jabbot pugs - 2862 - Test for Hack::Instances 01:14
pugs - 2863 - minor syntax fixes for Perl-MetaClass
mugwump blast, my pugs-commit auto-mailer sends out svk property differences for commits I make :-} 01:24
jabbot pugs - 2864 - Combine sub-type tests into t/data_types 01:34
meppl gute nacht 01:51
stevan autrijus: ChangeLog has been commited. As always, take a look and make sure I got it right 01:53
jabbot pugs - 2865 - Alter make_instance API to accept object 01:54
pugs - 2866 - Add test for MMD on tuples
pugs - 2867 - adding changelog details from svn log
pugs - 2868 - adding ChangeLog for 6.2.3
stevan good night all, I will be back in ~10 hours
mugwump waves
stevan mugwump: I will read my Haskell book some more too, so as to better grok Class.hs 01:55
mugwump considering I hardly know Haskell and wrote it, that shouldn't really be necessary ;)
but go ahead by all means :)) 01:56
jabbot pugs - 2869 - Add mkType hack for instances ... still 02:25
mugwump & # meeting 02:33
Khisanth two bots for one repo? :) 03:11
03:26 TreyHarr1s is now known as TreyHarris
autrijus pmichaud: hey 03:31
pmichaud: you mind if I commit the Hs patch to compilers/pge for you to experiment with, and see if we can refactor it away? 03:33
pmichaud: btw, eval_parrot, require_parrot are all support in Pugs now, even built without libparrot :)
pmichaud: and full rx// support via the patched PGE is supported, too, with or without libparrot.
pmichaud hey, autrijus 03:35
did you get my email?
autrijus yes
pmichaud okay
sure, no problem with committing -- we'll see about refactoring it a bit later then 03:36
autrijus Pugs now bundles a PGE.pbc
pmichaud It basically just adds the dump_hs method, yes?
autrijus just so that people with old (like, 0.2.0) version of parrot
can still use latest PGE features
yup
pmichaud yeah, we can put it in for now, but perhaps we should put big disclaimers around it that it may get taken out 03:37
autrijus sure. let me do that
done as r8016 03:40
it also adds a convenience "match" method that matches and dumps 03:41
just so I can call it as a sub that returns a string
sub match (Str $x, Str $pattern) returns Str
pmichaud ah, I see 03:42
makes sense
I'm trying to decide how I want to add closures into PGE
autrijus *nod* 03:43
pmichaud I'm fairly sure I'm just going to do a count-the-braces thing to extract the code, but I'm not sure how/when I want to pass it to the compiler 03:44
pmichaud does a parrot rebuild to check things out 03:46
any suggestions for building the perl 6 expression parser?
(i.e., the one that isn't in Haskell :) 03:47
autrijus maybe writing a parsec->rules compiler 03:48
pmichaud perhaps, but I'd be worried about the code maintainability 03:49
autrijus once we have a working rules we can refactor and tidy up
but of course you can start with the Perl6.grammar too 03:50
pmichaud well, I tend to design bottom-up, so I'll want to be doing rules for the basic tokens
then the tricky part becomes parsing out expressions and doing the operator precedence parser
after that it's all pretty straightforward 03:51
autrijus right... so you want to write the prec parser in imc?
or in p6 and let pugs compile it to imc?
pmichaud hadn't decided yet
to get one working I'd go either way at this point
I can translate from one to the other fairly easily :)
autrijus cool :) 03:52
by hand, I gather :)
autrijus wonders if a imc->perl6 compiler is useful
probably yes
"disassemble"
pmichaud at this level it seems to be pretty easy to work in either language 03:53
autrijus in that case, imc would probably be a faster choice
in term of runtime speed 03:54
pmichaud ahhh, dump_hs just outputs offsets? 03:55
autrijus right. 03:56
ingy hi Shachaf
autrijus because you have the original string
there's no need to use other information
pmichaud what happens for nested captures?
ingy autrijus: meet Shachaf, son of oren :)
autrijus greetings Shachaf-san.
obra heh
autrijus pmichaud: like perl5
ingy er
autrijus counts the pos of left (
pmichaud: by-name captures needs another dump format 03:57
pmichaud hmmmm
ingy Shachaf lives near Seattle but is originally from .il
I'm trying to make a pugs hacker of him
pmichaud quantified captures are likely to pose some difficulties 03:58
autrijus ingy: cool 03:59
pmichaud: oh, and you got my mail that /()/ is broken?
pmichaud /()/ isn't a valid rule, and I don't have good error handling in place yet
so, yes :) 04:00
autrijus it isn't a valid rule?
pmichaud nope. See S05 and A05.
autrijus oh. <null>
pmichaud right
revdiablo my brother is having a problem with an svk sync, getting "can't decode commit message as ascii" then "try --encoding"... anybody have any ideas?
pmichaud I haven't defined <null> yet
autrijus Name 'null' not found
k
pmichaud and normally one would want <?null> anyway
unless we *really* need to capture the nulls :-) 04:01
although <null> may end up being special and non-capturing by default
autrijus so there's <?subrule> support?
eek, exceptions
pmichaud no, there's no <?subrule> yet
autrijus k
pmichaud but it won't be hard to implement
autrijus but, yes, nested captures is a problem
pmichaud actually, I might just do that now
autrijus as p5 doesn't have that
so ideally, in 04:02
pmichaud well, aliases will pose some difficulty for you too :)
autrijus 123 ~~ /(.)*/
we want
Match [Match (0, 3), Nested [Match (0, 1), Match (0, 2), Match (0, 3)]] 04:04
or some such
what are aliases?
er, I meant (1,2) and (2,3) of course 04:05
pmichaud rx/ H $7:=(.) llo (.) /
captures into $7 and $8 instead of $1 and $2
autrijus how does pge handle that?
pmichaud in what sense of "handle" ? ;-)
autrijus in the Match obj
does it "remember" its supposed position? 04:06
pmichaud it puts the elements in @capt[7] and @capt[8]
er, 6 and 7
autrijus that's fine then
pmichaud but entries 0...5 are undef
autrijus I can deal
k
pmichaud hey, tell ya what 04:07
rather than have just one PGE.pbc, how about a PGE.pbc and a PGE-hs.pbc ?
autrijus maybe all we need is a .perl method on the PerlArray.pmc :)
pmichaud both can be created by the makefile
autrijus that is fine by me
but I need to doze a bit 04:08
pmichaud understandable :-)
mugwump autrijus: did you see `mkType'? I'm wondering if there's a way I can make a two-argument version that hangs the new type off the named type
autrijus "hangs"?
mugwump eg, mkType "Instance", "Hash"
autrijus .isa?
mugwump Makes a type "Instance" as if it was defined in initTree in Context.hs
autrijus sure, and that's why we need to refactor Context.hs 04:09
to use not a Tree
but a full Graph
mugwump sure
autrijus as in Data.Graph.Inductive
I can look into that after 6.2.3
mugwump ok. I'll continue with the namespace-clobbering version then
autrijus k
pmichaud well, break/rest time for me as well, plus I need to chart my next steps to writing the parser :) 04:11
I'll be back online tomorrow, unless I wake up extra early somehow 04:12
mugwump Still, tree typing would be more than sufficient for the metamodel 04:13
So, I'll be using "Str" instead as the "magic" type for all classes, but with methods that hint at the type like clsAssocs
*** Error: No compatible subroutine found: "&exists": NonTerm 04:25
:-/
autrijus mugwump: huh? 04:33
are you using
%hash.exists<str> ?
that is illegal
it's like saying
mugwump Oh, I was trying to use %hash.exists() and it wasn't working for some reason
autrijus %hash.exists()<str>
you want to say 04:34
%hash.exists('str')
instead
mugwump my PERL6LIB fooled me too, which didn't help
mugwump & # wellington.pm.org meeting, home, etc 05:43
ingy mugwump: ping 06:41
gaal|work mugwump: ping also 06:57
ingy, hi
ingy hi gaal|work 07:01
gaal|work thanks for the notice :)
ingy the notice?
gaal|work about the yaml thing
ingy sure, thanks for the report 07:02
gaal|work shouldn't mugwump's instance hack use a globally rising counter as part of the id? 07:04
rand isn't very safe 07:05
of course a global coutner isn't thread-safe
ingy &
gaal|work & 07:09
07:23 chady_ is now known as chady
bsb Hi scook0, could you look over some haddock for me? 08:08
scook0 bsb: sure 08:15
what have you got?
11:26 chady is now known as chady_
Limbic_Region greetings and salutations all 13:49
elmex ;) 13:52
:(
Limbic_Region forgot today was "Emoticon Discovery Day" 13:53
stevan Limbic_Region: hey there 14:17
PerlJam reads about the new capture semantics 14:21
Limbic_Region is S-O-R-E 14:23
moving--
stevan Limbic_Region: ouch, I know what you mean
I helped my friend move out a of a 3rd floor walkup in Queens a few weeks ago
pernod Does anyone know what has happened to wagner.elixus.org/~autrijus/darcs/ ? 14:24
( wagner.elixus.org/~autrijus/darcs/pugs, even) 14:25
Limbic_Region stevan - where are you geographically?
stevan Limbic_Region: Connecticut
Limbic_Region anywhere near Dan? 14:26
stevan Dan is in Hartford I think right?
Limbic_Region IIRC about 45 minutes away 14:27
stevan hmm
I may be very close then, since I am about 45 min away from hartford as well
I am on the shoreline, a little east of New Haven
Limbic_Region I was at a wedding thing there last summer and was supposed to get together but time ran short 14:30
autrijus pernod: darcs is currently offline.
pernod: it will be restored at darcs.pugscode.org
wagner as a whole is currently offline 14:32
stevan mugwump: ping? 14:42
cognominal I see @Larry all over the place, should'not that be @*Larry :) 14:45
pmichaud Oh, I suppose that there could be some scopes where @Larry != @*Larry :-) 14:46
autrijus lol :)
pmichaud: hey, is
(xx)?
the same as
(xx)*
when the code has no xx ? 14:47
pmichaud no
autrijus I mean, the str has no xx in it
cognominal but some lexically scoped @Larry will cause confusion some day
autrijus i.e. are both kind of matchfails the same?
PerlJam cognominal: that day could be today :)
pmichaud nope, (xx)? is a single match object, (xx)* is an (empty) array of match objects
autrijus so ? is not the same as {0,1} ? 14:48
pmichaud the only quantifiers that produce arrays are *, +, and **{...}
? is the same in the sense that it "matches zero or one times", but it's not the same as **{0..1}
autrijus ok.
but the dump is the same in demo.pir
$/: < @ 0> 1
both are that
so, (xx)? will produce a matchfail 14:49
pmichaud yeah, I haven't got '?' entirely working for captures yet
cognominal btw, waht is the correct way to test identity instead of the pseudo code: @Larry != @*Larry
autrijus inside that $/[0]
and (xx)* will produce a matchok
inside that $/[0] ?
I find it hard to understand
i.e. if you test for $/[0]
for truth
will (xx)? fail and (xx)* succeed?
PerlJam cognominal: @Larry =:= @*Larry # you mean this?
autrijus if the scope has no @Larry 14:50
cognominal PerlJam: probably
pmichaud no, both would fail
autrijus it fallbacks to @*Larry
pmichaud: so how exactly is the match obj tree different?
pmichaud $/[0] is a single match object
with (xx)?
and $/[0] is an array with (xx)*
autrijus sure, I understand when they succeed 14:51
with (xx)*
$/[0] will not be a Match obj
but an Array obj
is that the gist of it?
or is it still a Match obj? 14:52
PerlJam autrijus: (xx)* generates an Array of Match always is my understanding.
autrijus so $/[0].does(Match) is false? 14:53
$1 is no longer a Match?
pmichaud it's an array of match
(sorry, phone call took me away for a sec) 14:54
(xx)? always produces a single match object
that match object may succeed or fail, but it's always there
osfameron which is pretty cool
pmichaud (xx)* produces an array of match objects
autrijus ok. so if I test both for boolean
pmichaud that array may be empty
autrijus (xx)? fails because the match boolifies to false
pmichaud right
autrijus (xx)* fails because empty array numifies to 0, then boolifies to false
pmichaud exactly 14:55
autrijus danke.
I'll implement it right away.
PerlJam autrijus++
pmichaud and again, I'm not sure if '?' is working in captures in PGE yet -- haven't tested that. With all of the funny things going on, I'm happy that captures "work" for just about any interpretation of the word :)
autrijus pmichaud: you know there's 7000 p6rule tests in pugs tree we can activate at any moment :) 14:57
pmichaud I'll be glad to see them activated!
autrijus cool
then when they fails miserably we can split the blame :)
pmichaud who gets the blame for the successes? ;-) 14:58
autrijus no one notices successes ;)
pmichaud at this point I'm not counting failures, just successes :)
PerlJam pm: ask "svn blame" it'll tell you :)
autrijus PerlJam: you mean "svn praise" of course
(they are aliases)
iblech autrijus: FYI, pugs -we 'say "abc" ~~ /abc/' segfaults for me (Linux, GHC 6.4, newest and fresh Parrot and Pugs) 14:59
PerlJam autrijus: however you want to look at it ;)
that [ (\w+) ]**{3..7} would generate an array in $/[0] is still bizarre to me. 15:00
pmichaud pj: what should it do?
autrijus iblech: try r2887
iblech: also try without embed parrot 15:01
pmichaud it turns out to be totally correct
autrijus (rm src/Pugs/Embed/Parrot.hs and .o if you want to try taht)
iblech autrijus: ok
pmichaud and no, it wasn't that way in Damian's original proposal -- I had to come up with examples as to why it should work that way
autrijus pmichaud++ # code!
PerlJam I don't have an answer to that yet, but it seems to me that you lose some of the advantages of the "static" nature of how to determine if you're going to get an Array of Match or a Match
autrijus but a match can always act as an array, no? 15:02
pmichaud pj: / [ (\w+) ]**{0..7} / you can tell it's an array because it's in a quantified subpattern
statically
pj: here's the alternative 15:03
PerlJam It's another end-weight problem given that the ]**{...} may be a far lexical distance from the () that's bracketed within the []
iblech autrijus: Still segfaults with PUGS_EMBED=parrot, will try w/o Parrot embedding now
autrijus iblech: fbsd works here
pmichaud pj: consider m:w / mv <file>+ /
how do we get spaces between each pair of <file> invocations? 15:04
i.e., with the :w ?
Well, we can do:
m:w / mv ( <file> )+ /
jhorwitz autrijus: see leo's changes for linking w/ parrot?
pmichaud but that gets kinda ugly, and we're building lots of extra capture objects as a result
autrijus jhorwitz: I already synced with him in #parrot
jhorwitz excellent 15:05
pmichaud pj: so, the obvious thing to do is m:w / mv [ <file> ]+ / and have the '+' distribute to its inner captures
it then becomes the same process for subpattern captures
m:w / mv [ (\w+) ]+ / captures an array of space-separated names into $1 15:06
PerlJam pm: sure, I understand the reasons *for* such a feature. That doesn't mean I'm completely comfortable with it yet. In my mind, it's another one of those features we'll have to implement and use before we really know what we should have done (or if what we did was the right thing)
pmichaud Well, I fairly well convinced myself that the other way isn't at all useful
iblech autrijus: W/o embedded Parrot: "pugs: user error (Cannot parse PGE: Just (PGE_Match 0 3 [] [])" 15:07
pmichaud Believe me, I got approval from Damian/Larry *before* implementing it in PGE :-)
autrijus iblech: I'm pretty sure you have an old PGE.pbc 15:08
[not|autrijus]~/work/pugs/src/pge$ md5 PGE.pbc
MD5 (PGE.pbc) = 203a20bb817cb3d9c2a35520ce468363
iblech autrijus: same here
autrijus do you have pugs installed? try uninstall it 15:09
or install again
also try
[not|autrijus]~/work/pugs/src/pge$ parrot run_pge.pbc xx x
PGE_Match 0 1 [] []
the "Just" is an old pbc
gaal|work misc_:ping 15:10
PerlJam make
oops
iblech autrijus: Gives "Just (PGE_Match 0 1 [] [])" here.
autrijus: I'll try uninstalling Parrot and Pugs, then rebuilding Parrot, then rebuilding Pugs
autrijus iblech: weird. 15:13
I have this eerie feeling
maybe it's loading the wrong .pbc file.
misc_ gaal|work: pong 15:14
autrijus fixing.
iblech Indeed. Having rebuilt and reinstalled Parrot, I just built Pugs (with PUGS_EMBED=parrot). Running "parrot src/pge/run_pge.pbc xx x" gives again the Just (...) thing. 15:15
autrijus ok. fixing 15:16
fixed. committing 15:18
committed. r2889 15:19
try again?
pmichaud autrijus -- need me to make a similar change in the parrot trunk? 15:21
autrijus pmichaud: did so already
as for -Hs.pbc
no
pmichaud yeah, I meant for -Hs.pbc
with it automatically created via make
autrijus well, if you do that, I'd need to link against config_null.o 15:22
because otherwise the -Hs.pbc in parrot tree will clash with the one in pugs tree
pmichaud okay, I'll let you handle it then :-)
iblech Strange. pugs still segfaults, and "parrot src/pge/run_pge.pbc xx x" dies with "Parrot VM: Can't locate PGE-Hs.pbc, code 2.". Should I make clean?
autrijus I'll see what I can do :)
iblech: there is no PGE-Hs.pbc in your dir?
try cd into src/pge/ first 15:23
then run parrot there
PerlJam iblech: segfaults out-of-the-box or when you do something specific?
iblech Ok. After the cd, the command work fine (outputs "PGE_Match 0 1 [] []")
PerlJam: Segfaults when I do "pugs -we 'say "abc" ~~ /abc/'"
autrijus iblech: what about external? 15:24
PerlJam My freshly built pugs says: pugs: user error (*** Running external 'parrot' failed:
etc.
autrijus PerlJam: your parrot is not in PATH 15:25
I think.
PerlJam it is.
autrijus what's the err msg?
PerlJam PackFile_unpack: Bytecode not valid for this interpreter: version mismatch 15:26
Parrot VM: Can't unpack packfile run_pge.pbc.
main: Packfile loading failed
autrijus oh wow wtf. :-/
0.2.0?
pbc interop is broken in just one day?
PerlJam oh duh! I have and older parrot in my path
autrijus oh ;) 15:27
pmichaud gotta keep up, pj :-)
PerlJam no, I just need to not leave old parrot builds lying around 15:28
iblech autrijus: Works with external Parrot.
autrijus iblech: I have no idea then, unable to reproduce here.
PerlJam does the "make clean" chant
autrijus iblech: however fork() is fast in linus
er linux
so external parrot is probably good enough 15:29
pmichaud: hey. do you like $1.1 or not?
iblech :) -- Will rm -rf pugs and parrot and see if it works then, it's probably only some weird temporary bug depending on the phase of the moon :) 15:30
pmichaud autrijus: I just wrote a message to p6l indicating I'd prefer we not add that
or, at least, not yet
autrijus $1.1 is probably just people who want to count from 1 as base can keep doing that.
which imho is a win -- but maybe a small win 15:31
pmichaud yeah, but I wonder about things like $1.$x.1 and $1[0].1 and the like...
autrijus well no, of course it must be literal
I'll leave it to @Larry then
iblech autrijus: Ok, wiped Parrot and Pugs completely, installed both again, pugs still segfaults (if PUGS_EMBED=parrot) 15:37
autrijus iblech: :-/
I'll probably refactor so it doesn't use unsafePerformIO anymore
PerlJam maybe I'm hypersensitive to these things but Damian's capturing semantics document reads like it has a lot of special cases. I wonder if we've just moved our foolish inconsistencies from perl-the-language into the subset known as rules? 15:38
pmichaud pj: I think it's just the way the document is written 15:40
autrijus 7 "except"s
that's a pretty high rate :) 15:41
pmichaud well, many of those are actually flag-related
well, at least two of them are
autrijus I just see one :)
(:g and :x)
pmichaud oh, you're right 15:42
I misread
autrijus :)
pmichaud well, two of them are "except C<?> and C<??>" -- I actually wrote my version to avoid that
autrijus does PGE handle :g
or does it properly belong in the upper (pugs) layer?
pmichaud Damian says that any quantifier except ? and ?? produce an array of matches; I write that +, *, and **{} produce arrays of matches
autrijus whilst :g may be handled quite easily, I wonder how :exhaustive works 15:43
pmichaud :g will probably be handled above pugs
autrijus ok, that's what I'm doing currently
just want to avoid duplication of work
pmichaud sorry, I meant "above PGE"
autrijus nod
pmichaud :exhaustive is going to be done by repeatedly calling the match objects "next" method and getting the next match 15:44
and then junctioning the results appropriately
PerlJam pmichaud: and :all ? :-)
gaal|work forum2.org/gaal/pugs/smoke-cygwin.html r2668 btw 15:45
2670 actuall
y
pmichaud pj: ":all" ?
PerlJam Perhaps it's called :any The one that matches every possible match 15:46
pmichaud I think that's :exhaustive
PerlJam oh I thought that was something different
autrijus there's :ov 15:47
PerlJam :ov for :overlay?
pmichaud :overlap
PerlJam ah, that's the one I was thinking of!
(after checking S05)
pmichaud it's still just repeated calls to the match object 15:48
PerlJam yeah, I guess it's just :ex from the first char, then :ex from the second, and so forth until done 15:49
pmichaud right, and PGE supports being able to anchor matches from specific offsets
(it has to in order to support subrules)
PerlJam It's a good thing pugs is around and implementing all of this stuff. Looking over the synopses I see all sorts of things that I've forgotten. 15:51
autrijus :) 15:53
15:55 Sniper{PaLa} is now known as Snip`
autrijus won't the same thing happen? 15:56
er, wrong window.
iblech m19s28.vlinux.de/iblech/pugs/smoke.html -- Linux, 4787 ok, 72 failed, 901 todo, 13 skipped and 2 unexpectedly succeeded 16:08
stevan mugwump: ping? 16:14
16:15 misc_ is now known as misc
pmichaud okay, time to write a shift-reduce parser with operator precedence :) 16:32
wolverian isn't that kind of reinventing the wheel? 16:33
pmichaud do we have one in parrot?
Corion Oooo - r2891 gets one more program to compile and thus two more unexpected successes :) 16:34
wolverian I don't know. isn't there on on CCAN? :/
s,on,one,
Corion runs a second smoke to confirm ;)
wolverian (assuming you were going to write it in C.. okay, I'm just being silly.)
pmichaud :-)
no, it's in parrot :)
wolverian ah, okay. can't you write it in perl6 then? :) 16:35
pmichaud probably, but at the moment I'm more comfortable doing it in PIR. Besides, it won't be hard to write
just a day or two (depending on interruptions)
wolverian ah, okay. :) 16:37
pmichaud well, off I go. back later
wolverian cheers. have fun. 16:38
crysflame hello notice 17:20
Corion r2897 - datenzoo.de/pugs/win2k.html - 4781 ok, 78 failed
Juerd I personally think we should drop the entire Net:: prefix 17:26
Almost everything is concentrated around it nowadays
WWW::, HTTP::, CGI:: all already escaped
And IO::Socket::INET isn't in Net:: either 17:27
Nor are P::C::S::*
Corion P::C::S ?
Poe
Ugh.
Juerd And it's time for "cute" names again. Project names
IRC::Something
Corion Pugs should not get POE
Juerd So that there can be multiple IRC modules, of which none is preferred just because of the name.
Corion: Agreed.
Corion Juerd: "cute" project names are useless as you can't search on them unless you already know what you are searching for 17:28
Juerd Corion: IRC::Blah
Corion Juerd: Yeah, that would work
Juerd Corion: Rather than Net::IRC, as there can be only ONE OF EACH NAME
Corion Yeah
Juerd And too generic names should thus be forbidden
Corion "discouraged" :)
Juerd Do you know how many people want to use DBIx::Simple for their module and then find out it's taken?
Corion Juerd: You're a mean person! :)
Juerd And do you have any idea how surprised I was to find it wasn't already when I made mine? 17:29
Corion Hmmm. pugs: user error (Cannot find the parrot executable in PATH) (for t/undef.t)
Juerd (And do you know how stupid in hindsight I think the name was?)
Corion ... it's true, but why does Pugs even try?
Juerd: You're not alone - I also have a ::Simple module ...
Juerd Also, why the hell do people all recommend the horribly coded CGI.pm?
Because the namespace is taken and no other module, no matter how well it was crafted, can ever take over! 17:30
PerlJam Juerd: so ... do you think that there should be some sort of community peer-review before a module gets an "official" name and place on CPAN?
Juerd PerlJam: Not exactly
PerlJam: But yes, in order to get a generic name, I think peer review is needed. A place on CPAN should be available for all code in existence 17:31
misc wouldn't it be more efficient to change CGI.pm code ?
Juerd But perhaps (probably!) we should start prefixing PAUSE ids
Corion misc: Nobody will ever touch CGI.pm again :)
Juerd misc: Nah, its interface is wrong as well as its internals
obra Juerd: you're read larry's suggestions about module naming for perl6?
Juerd misc: Providing backwards compatibility means doing the same stupid things
obra and versioning, etc. 17:32
Juerd obra: No?
obra Juerd: what's a _good_ CGI module this year.
misc call it CGI-ng, and that's it ?
obra oh. there's an apocalypse.
before recommending a cpan overhaul, it's worth a read
Corion I just saw the four horsemen ride outside of the window
Juerd Then I read it.
But I can't remember it.
Juerd has all apocalypses printed out eve
n
obra nods
PerlJam obra: Are you referring to the Module-version-author thingy? 17:33
obra yes. but pay attention to the fact that author is author+namespace 17:34
Juerd Oh, but that's entirely the wrong way around, hierarchy-wise.
obra so there could be CPAN but also peer-review-pan
PerlJam obra: indeed.
obra Juerd: think of it as a triple, not a hierarchy
Juerd class Dog-1.2.1-cpan:JRANDOM;
class CPAN::JRandom::Dog-1.2.1 17:35
I think it's important that it is actually part of the namespace itself
obra www.cpan.org
org.cpan.www
Juerd Because you will want to load two.
iblech r2900! :)
Juerd BUT
PerlJam If everyone decides that CGI-0.1-Juerd is the best CGI module ever, how does it get the generic CGI name? Or does it?
obra there are no more generic names. 17:36
obra suspects you'll end up being able to order your namespace search path
PerlJam Then I can only see problems with few good solutions.
Juerd PerlJam: Well, there's "use approved;"
PerlJam: That adds aliases
(dreaming on)
I don't like the triple idea AT ALL 17:37
Well, I like the version part.
And the namespace part
obra once I went back and read about how larry actually designed it all, I decided I liked it quite a bit 17:38
Juerd But there simply shouldn't be two Net::IRCs, and there shouldn't be a single one without consensus
I hated it the first time, I still do
I just had forgotton about it
obra yes, but that's a matter of policy, not of technical enforcement
note also that what happens if Net::IRC goes through a major API change? 17:39
the new scheme can cope easily
the old cpan scheme can not
Juerd Ah well, more cute names then.
obra and API versioning is isomorphic to independent authorship
Juerd It's the only possible solution.
Top-level cuteness, I mean
PerlJam obra: Except that "use CGI" becomes almost meaningless.
elmex Net::IRC is ugly 17:40
Juerd PerlJam: "use something that happens to be called CGI and let's hope it matches the interface I'll be assuming"
PerlJam Juerd: exactly
osfameron ick
Juerd The cute or author part must really be part of the namespace.
The version can live outside 17:41
(But TBH, I wouldn't mind it being part too, with aliasing for the versionless one. I've so often wanted to load two versions of the same module)
Corion Author is a bad idea, because authors change
so "cute" names are all that remains ... 17:42
Juerd Corion: Then cute name.
PerlJam Corion: but the version will change with the author
Corion PerlJam: But I don't want to update all my scripts just because the author changed
integral What about when authors change their names?
elmex ./pugs -BParrot -e 'my ($i,$b); loop ($i = 0; $i < 1000; $i++) { $b += 3.37 } say $b'
Juerd integral: That doesn't happen, period :)
integral hmm, iirc japhy wanted to change his CPAN id 17:43
iblech BTW -- is (for example) my $h = { say => {...} } valid, i.e. does it autoquote say? (because r2898 broke Net::IRC, because now there's ".to")
PerlJam integral: to "japhy"?
integral PerlJam: yeah
Juerd "Patrick++ for designing a nicely designed PGE API! 17:44
"
integral DNA fingerprints?
Corion Not everybody has the foresight to have his CPAN id the same as his primary nick :)
Juerd I agree
PerlJam integral: He should be happen with the name that his parents gave him! ;-)
Juerd But "nicely designing a nicely designed ..." would be funnier
integral plus how do you type names which are in Chinese? 17:45
Corion pugs -e "delete %*ENV<FOO>" # whoops
romanji 4 life, dawg!
obra right. but "use CGI/CPAN" has meaning
Corion Can somebody check if Pugs spins in an endless loop for them too? Especially on nonWin32 systems 17:46
Does svnbot6 evaluate Perl6 code already? Then I could take it for a spin :) 17:47
mj41 PUGS_EMBED=parrot. How I can fix "undefined reference" when linking?
Corion BTW, it doesn't matter if the environment variable exists or not - pugs -e "delete %*ENV<PATH>" # spins as well 17:48
PerlJam integral: that's where the ability to use regular expressions as part of the module name come in. "use ThreeGorges-1.2-/\C[FUMANCHU]/"
iblech autrijus: P5 regexes do not capture correctly
integral cringes 17:49
iblech autrijus: Try my $a = "a b c"; $a ~~ rx:P5/^(.) (.) (.)$/; and output $1, $2, and $3
Corion iblech: Commit a test for it ? :))
iblech Corion: t/rules/perl5.t :) 17:50
(fails badly)
Corion worksforme: 17:51
pugs -e "my$a = 'a b c'; $a ~~ rx:P5/^(.) (.) (.)$/; say for ($1,$2,$3)"
(win32 shell syntax)
outputs: a\nb\nc
\n
iblech newest svn revision?
Corion r2899
Corion starts a fresh smoke 17:52
PerlJam Corion: I think that's broken anyway (the output you saw)
Corion PerlJam: Why?
PerlJam Because it should match <any><space><any><space><any> if it's a perl 5 RE
blah, ignore me
eating + thinking just isn't working for me right now. 17:53
Juerd Still?
PerlJam (I saw 'a b c' but my brain was obviously thinking 'abc'
)
Juerd Practice some more
PerlJam Juerd: I have practiced many times, the outcome is always the same--a thinko 17:54
(oddly enough my ability to eat is never affected ;-)
PerlJam finishes off the last of the left-over fajitas, bbq-baked-potatoes and spanish rice. 17:55
iblech Corion: r2901 (or r2900) gives me: "Failed 1/1 test scripts, 0.00% okay. 195/880 subtests failed, 77.84% okay." when I manually harness t/rules/perl5.t 17:58
Corion iblech: Ow. :) rLatest is Just compiling, so I can check soonish :) 17:59
iblech (make unoptimized)++ 18:00
Corion iblech: Yeah - I only notice that after I've been already waiting 3 minutes, and then figure I could just wait until it's done ;) 18:01
iblech: # Looks like you failed 195 tests of 880 18:03
So I confirm, r2901 RE support is broken ;)
autrijus ...and r2902 is fixed.
Corion autrijus++ :)
putter hmm, rules... would it be useful to have the Perl6::Rules test cases ported? 18:04
iblech autrijus++ # fast!
PerlJam putter: yes (didn't someonen do that already?)
Corion autrijus: Do you have any explanation on why pugs -e "delete %*ENV<FOO>" # spins in an endless loop?
putter: Go for it!
autrijus Corion: because delete as a macro is not implemented
pjcj Ha! I wondered whether Damain knew that his draft zero would be implemented before he got to draft one.
Corion autrijus: "as a macro" ? 18:05
putter PerlJam: grep'ed pugs for "rule" and didnt see much...?
pjcj autrijus++ # again
autrijus Corion: $ENV.delete('FOO') # normal form
PerlJam pjcj: I bet he did.
autrijus the way you write it needs a macro
Corion autrijus: Aaah - will try that one instead then!
autrijus and we don't yet have real macro
I guess we can do it at parser level
but will be ~messy
Corion autrijus: %*ENV.delete('FOO') # should work too, right? 18:06
autrijus yes.
Corion autrijus: The test is for %*ENV, not for funky hash syntax, so I don't care if my code is ugly :)
autrijus ok :)
iblech Corion: yes, and %ENV.delete("FOO") (w/o the "*"), too, as $... falls back to $*... if needed 18:07
autrijus putter: there's a rule test in t/rules/Disabled
Corion Yay. And suddenly, two more tests can be promoted from skip() to is() :) 18:08
autrijus putter: however I have no idea if it's still uptodate or not
Corion Oh. And I think I should somehow mark getEnv() and my faked setEnv(), so that the sequence getEnv('X'), setEnv('X'), getEnv('X') -- actually works and returns the new value. 18:09
autrijus: How do we handle backpropagation into the GHC runtime library? I have a half-working setEnv for Win32, which GHC doesn't have (yet) ... 18:10
... do we wait for them to pick it up?
putter ah, so there are two sources of tests. p5's re_tests, and p5's Perl6::Rules t/. The latter is much smaller, but exercises a few more p6 features (though it is still far from feature complete).
the former (p5's re_tests) is the thing in Disabled. 18:11
autrijus Corion: you can submit to ghc mailing list
Corion autrijus: Ah - I'll look into that when I get it working :)
Limbic_Region autrijus - so I found 3 bugs (all in t/pugsbugs) when writing Config::Tiny 18:14
I think porting existing p5 code is a good thing ;-)
autrijus Limbic_Region++ 18:15
Limbic_Region would like to have more of this elusive thing called free time though
Limbic_Region has given up trying to keep his karma neutral btw so upvote me all you want :P
gaal_ forum2.org/gaal/pugs/smoke-cygwin.html
putter I'm thinking of doing Perl6::Rules first. 40ish test files, 5000+ cases. search.cpan.org/src/DCONWAY/Perl6-Rules-0.03/t/ 18:20
stevan jabbot: seem mugwump 18:27
jabbot stevan: Tell me more about that.
stevan jabbot: seen mugwump
jabbot stevan: mugwump was seen 13 hours 53 minutes 4 seconds ago
putter Test organization esthetics question: Perl6::Rules has 40ish test files. These could become pugs t/rules files, and thus the initial organization of t/rules. Or they could be glomed together to keep the t/rules namespace clear for subsequent work. Most of the files are tiny, with a couple of big unicode test files. The small ones atleast could be glomed together. 18:29
Unless there is objection/disinclination, I'm inclined to keep the files separate. 18:31
meppl guten abend 18:33
stevan putter: my suggestion is to do t/rules/perl6_rules/ and keep the test files seperate 18:36
we can always merge them together or move them around later (svn++)
putter stevan: good idea. tnx. 18:39
Corion Hmmm. Where do I get liftIO from ? 19:03
(looks like I'll need it in Compat.hs :( ) 19:04
autrijus pmichaud: $x.$j.2 is $x[$j][2] of course... no? 19:08
pmichaud autrijus: well, if $1.1 refers to $/[0][0], then... 19:09
Corion Ewww. This is the first time I used =<< on intuition, and it seems to do what I think it does ... Weird
autrijus pmichaud: it's just a shorthand of array notation, no?
Corion: you'll get used to it
Corion autrijus: I don't know. I hope Perl6 flies before that ;)
autrijus pmichaud: would probably need to use $1.0 for that.
I may be completely offbase though
pmichaud autrijus: I'm (again) just asking questions -- I'm not advocating a particular interpretation. Actually, my (weakly held) position is that we don't want to do this just yet 19:10
Corion BTW, I'm using the Wide variants of the Win32 API, in the spirit of Pugs using Unicode in all places ...
pmichaud autrijus: but it just seems weird that we'd use $1 as an alias for $/[0] but have $2.2.1 as an alias for $/[1][2][1] 19:11
If we're going to use . notation for subscripts, it seems to me our subpattern captures should be $0, $1, $2, ...
autrijus the $1 is a legacy :-/
but you can write 19:12
$/.0.0.0
pmichaud when it comes to p6l, I like to simply point out the ramifications of decisions and let others decide what the answer should be
autrijus not sure if it helps (prolly not)
nod
pmichaud and yes, $/.0.0.0 is not bad at all
I kinda like that
autrijus but I need to sleep. 19:13
see ya :) &
autrijus waves
pmichaud later! great work on the pugs+rules stuff. I guess we can now say that "Pugs rules". :-)
putter pmichaud: do these perl6_rules-isms look plausible? tnx. $0<foo> $0{'@?chars'} ($0.keys == 1) @$0 %$0 $0<foo><bar>[3] 19:23
PerlJam pm: what did you mean by "multiple @LOAD pragmas in a single compilation unit aren't well defined"? (from PGE.pir) 19:24
putter: what's $0 ?
pmichaud putter: do you mean if we used $0, $1, ... for subpattern matches, or something else for $0? 19:25
pj: If you load a .pir file that has multiple subs marked as @LOAD, it's not clear that all of them get executed, or the order in which they may be executed
PerlJam pm: I thought that @LOAD subs are analogous to BEGIN blocks. They're loaded as soon as fully parsed and in the order that parrot sees them. 19:26
putter Hmm. Looks like $0 has been renamed to $/. So that should be $/ rather than $0. Sorry.
pmichaud pj: well, I thought that too, but there were a couple of platforms where it wasn't working
pj: originally I had @LOAD subs in each of the PGE/*.pir files, but when they were combined into one via .include not all of the subs were being executed (on some platforms) 19:27
putter: $/<foo> is okay, it's anything captured by the <foo> subrule
PerlJam pm: do you know which platforms? 19:28
pmichaud $/{'@?chars'} would be anything captured by a <@?chars> rule (this could probably only be done via a $<@?chars>:= alias )
I dunno what @$0 and %$0 would be, but @{$0} and %{$0} are okay. 19:29
sorry, @{$/} and %{$/}
$/<foo><bar>[3] is the 4th subpattern capture of the <bar> subrule inside of the <foo> subrule of the last match 19:30
pj: no, I don't remember exactly which platforms -- whatever "particle" on #parrot was using. Windows/cygwin, methinks 19:31
putter pmichaud: sounds good. thanks.
pmichaud: re @?chars, a test is: ok(" a b\tc" ~~ rx/@?chars:=( \s+ \S+ )+/, 'Named simple array capture'); 19:32
pmichaud pj: but I know that leo said that it needed to be specced out further and better defined and implemented 19:34
putter: ohhhh, that
putter: just a sec, I need to review the spec
what's that ? after the @ ? 19:35
PerlJam I thought $?vars were for asking compile-time questions 19:36
putter pmichaud: "Magical lexically scoped values live in variables with a C<?> secondary sigil." - sNN 19:37
pmichaud ah, that captures into @?chars in the current lexical scope then. It doesn't appear in the match object 19:38
putter Why it's used in the tests...??? I'm finding a number of p6 obselecences.
PerlJam putter: Welcome to the wonderful world of language evolution! :-) 19:39
pmichaud probably because the capture syntax and semantics were totally redefined a couple of months ago, and whoever wrote the tests was working from the outdated A05 and S05 specs
well, not totally redefined, but substantially redefined
but I hadn't ever seen anything like @?chars 19:40
putter sighs.
pmichaud heh
Apparently I hurt larry (latest message to p6l)
I have to switch machines -- bbiab 19:41
PerlJam pmichaud: Careful, he might make you put on the language-designer hat and go sit in a corner for a while.
pmichaud pj: you're right, I'd best be careful here. :-) 19:42
back in a sec
Limbic_Region pmichaud ping 19:57
pmichaud pong
Limbic_Region I haven't been following p6.internals for sometime and perl6.compiler at all 19:58
I was suprised (but happy) about the recent move of PGE to PIR
what is the SDL of PGE in a nutshell
pmichaud ...sdl? 19:59
Limbic_Region system development lifecycle
road map IOW
pmichaud oh. Well, I wanted to get PGE far enough along that we could reasonably be building and testing the p6 grammar
that's basically done now
PerlJam pmichaud: you've implemented subrules? 20:00
pmichaud pj: sure, you haven't been watching the announcements either, I guess? ;-)
PerlJam no, not really. :)
pmichaud subrules, aliases, <ws>, \b, \B, all work
Corion Yay ;) 20:01
pmichaud www.nntp.perl.org/group/perl.perl6.compiler/685 20:02
oh, wait, wrong message
Limbic_Region so is there anything that needs to be refactored or some sketchy spots awaiting further specifications?
pmichaud www.nntp.perl.org/group/perl.perl6.compiler/710
l_r: I don't think there's any real sketchy spots 20:04
at the moment PGE has three parts -- a parser, an optimizer, a (PIR) code generator
the parser is pretty rudimentary -- it's a good candidate for being rewritten when we have p6 far enough along to do that
the code generator is also straightforward if a little convoluted. The best thing that can happen there is performance improvements 20:05
same for the optimizer -- being able to adjust the rule expression tree
i.e., the optimizer could look for things such as ..... and convert them to the equivalent of .**{5} which is much faster 20:06
we don't completely have a handle on character classes yet
putter mmm, rule expression tree... putter looks forward to Grammer::Transform.
pmichaud well, the parser just converts a rule expression into an expression tree 20:07
then it's a fairly simple matter to walk the expression tree to generate the code for each component of the tree 20:08
each expression "node" is an object; the class identifies the type of expression (e.g., group, dot, literal string, alt rule, etc), each object also carries attributes that identifies its quantifications and linkages to subexpressions 20:09
putter looks forward to never again having to manually convert a grammar. $g2 = Grammar::Transform::to('right recursive','syntax variant bison')($g1). 20:13
or something vaguely like that. p6 grammars should now be expressive enough that even if one cant actually run them on p6 (eg, left recursive?), they might serve as a lingua franca. 20:14
pmichaud yes, I expect that p6 grammars and PGE may become a new standard for specifying grammars. It's a bit more flexible than BNF 20:16
PerlJam I've long expected that perl6 will become the new standard for specifying grammars the only problem that stands in the way is "Hey, that's great ... if only it wasn't perl" :) 20:19
pmichaud it's not perl :)
it's PGE
it's Parrot 20:20
PerlJam That's tantamount to saying it's perl :) 20:21
pmichaud with the exception of closures and external aliases, PGE could be run from any language that runs on parrot
and we could even get closures to work in other languages
Corion Good night! 20:22
putter pmichaud: are there any rule tests in the parrot source aside from parrot/t/library/pge.t and the 3 files in t/p6rules/ ? 20:23
putter tries to avoid duplicate/non-useful work. 20:24
pmichaud putter: no, there's not many rule tests. That's the biggest thing that PGE needs at the moment 20:30
putter pmichaud: ok. I'll continue... puttering. 20:31
pmichaud excellent 20:33
PerlJam pm: read the first sentence to Larry's latest post on p6l :-) 20:36
pmichaud pj: just a sec
yeah, it'll be interesting to see if we switch from 1-based to 0-based vars. PGE's already set up so I can easily make that switch if need be :-) 20:38
I wonder how loudly I'd be shouted down if I suggested that match objects deserve their own sigil? :-) :-) :-)
PerlJam Um ... are there any characters left that could be used as a sigil? 20:39
(excluding unicode of course)
pmichaud there's the full unicode range :)
PerlJam I wouldn't mind if they had a twigil of ~ though. 20:40
cognominal hum, what is the meaning of => in Haskell?
pmichaud yeah, I was just thinking that
PerlJam cognominal: I think it's something like "is typed" but I haven't looked at haskell in a while. 20:41
integral *cough*if we binned % and @ you could use those...
pmichaud anyway, this is why I leave such things to the language designers. Back to my engine 20:42
PerlJam integral: not gonna happen in "standard perl 6"
integral pity :-)
cognominal autrijus was not supposed to release a second apocryph, btw? not that he is not busy. but I want to be sure I did not miss anything 20:43
PerlJam cognominal: from www.haskell.org/tutorial/classes.html: (==) :: (Eq a) => a -> a -> Bool
This should be read, "For every type a that is an instance of the class Eq, == has type a->a->Bool". 20:44
cognominal thx perljam 20:45
xinming anyone here can give me a url where to find the grammer details for perl6? 21:13
mugwump What exactly are you after?
PerlJam xinming: svn.perl.org/perl6/grammar 21:14
xinming hmm... In fact, something which is about the differences between perl 5 and perl 6
thanks
PerlJam xinming: oh ... You want A05 21:15
mugwump Hmm, that Grammar seems rather ... incomplete ;)
PerlJam dev.perl.org/perl6/doc/design/apo/A05.html
mugwump: you've got to start somewhere
Corion Nobody seems to have noticed that I (possibly) broke the build, so I can sleep well :) 21:16
xinming I ever heard that the first rc of perl6 might be out this year, maybe in Sep,or Oct... 21:17
integral sssh, don't jinx it ;-) 21:18
PerlJam xinming: the first *alpha* release might be out then
xinming: Though I guess that we have all the pieces in place now to do a full bootstrapping so it could happen sooner if we're lucky.
mugwump in a sense, the closest we've got to anything resembling a full grammar specification is the src/Pugs/Parser.hs and friends 21:19
integral ah, yes, corion did break the build =) 21:20
PerlJam mugwump: I want a way to autoconvert between src/Pugs/Parser.hs and Grammar.Perl6 :-)
mugwump: then we're quite a bit closer to realizing a real perl6
mugwump that could work, yes. dumping Perl 6 code from the Haskell sources would sure be a fast way to get to the self-hosting stage 21:21
I believe the introspection capabilities are there to do it, but it's getting into the realms of super-voodoo Haskell :) 21:22
anyway. stevan, I see your extra work on Perl6::MetaClass... nice 21:24
21:26 khisanth_ is now known as Khisanth
integral err, when I edit src/Pugs/Types/Hash.hs, ghc doesn't recompile it :-/ 21:38
hmm, and Pugs.Types.Hash isn't mentioned in the list of modules :-/ 21:39
ah, Pugs.AST #includes it, fscking up ghc --make's dependencies. *grr* 21:40
elmex ./pugs -BParrot -e 'my ($i,$b); loop ($i = 0; $i < 1000; $i++) { $b += 3.37 } say $b'
integral crosses his fingers 21:42
yay, it typechecks
integral unbreaks the build :-) 21:48
hmm, the UTF-8 isn't making its way to irc (the chars should be a āˆ€ and āˆƒ, contrarespectively)) 22:15
mugwump It got mangled by my svn commit mailer too 22:17
"Change ?\226?\136?\131 to ?\226?\136?\128 ..."
looks nice in the diff output though
integral it's very nice having those chars in the source :-) Much nicer than having to use LaTeX or something 22:19
stevan mugwump: ping 22:44
mugwump hi
stevan hey
did you see my comments in the MetaClass source? 22:45
mugwump yes, I'm just "replying" to them
stevan BTW - what exactly is this "theory" stuff? set theory? category theory? or just plain meta-class stuff?
stevan was a fine art painting major, they didnt even offer math as an elective at my school :) 22:46
mugwump I'm stating rules using maths operators because they are succinct and pretty 22:47
stevan ok
mugwump note that these MetaClasses are not really intended to represent user classes... they are one level removed from that 22:50
stevan yes
mugwump cool
stevan I considered using 'Class' and 'Roles' as examples, but I thought that might confuse the test
mugwump this is why I was using "Class" and "Role" in the examples rather than "Foo", "Foo::Bar" etc 22:51
stevan whoops, that I shouldnt have changed
mugwump np
the first real test case for the code is to get a set of classes suitable for implementing duck typing ... ie, like docs/class/ducktyping.png 22:52
The Perl::MetaAssoc class represents one half of a relationship ... eg a UML relationship line/arrow on that diagram is a Perl::MetaAssoc on each end and the link between them is the "Pair" 22:55
stevan I am not sure I understand where the .png would be represented with Perl::MetaClass
mugwump Each box is a MetaClass
stevan however I am reading the kwid right now
hmm, ok
maybe it would help to understand what would be good names for the test t/10_MetaClass.t 22:56
for instance do you see Roles as subclasses of Class? 22:57
or vice-versa?
mugwump A Class is a sub-class of a role
stevan ok 22:58
and Role isa?
mugwump well, a role (and a module) are also both packages 22:59
stevan ok
and a package isa? Metaclass? are we at the base of the tree?
mugwump nothing in the Class Model can be a Class Meta-Model object 23:00
stevan ok
iheartcanada perl6 is out?
mugwump (they are represented by Class Meta-Model objects, of course, so in a sense they *are* Meta-Model objects, but they don't link to them)
iheartcanada 6.2.2 <-? 23:01
obra iheartcanada: yes. it's done.
iheartcanada obra: you guys are messing with me right?
stevan iheartcanada: been done for a long time now,... where you been?
iheartcanada wow
mugwump iheartcanada: we're still very pre-alpha, but it's moving quickly. objects for instance are still in the works
iheartcanada i thought it's in development
stevan iheartcanada: it is in dev, very active develeopment
see autrijus's journal over the past 3 months for detailed info :) 23:02
iheartcanada *nod*
i just use it to make the occational webpage
but i'd love to use perl6 if it's stable enough and supported by mod_perl
mugwump well, my guess is it will probably be at least a year before Perl 6 is ready for wide scale use 23:03
iheartcanada i look forward it that day :)
*yawn*
back to worrrk
mugwump you're probably better off for now making sure you're getting in line with what others are doing with Perl 5
eg, templating systems, frameworks, etc 23:04
iheartcanada *nod*
mugwump the skills will be transferrable
iheartcanada sweet
mugwump stevan: so, part of the challenge of implementing that duck typing model is to bridge the roles based and class based inheritance. 23:07
stevan ok 23:08
mugwump so, we've got a method which is defined by its method signature 23:09
ie, its name, its parameters and return values (which are all types)
(er, the name is a symbol :)) 23:10
a role is simply a group of these method signatures
This is the core of duck typing. Properties are considered incidental
stevan mugwump: don't roles have properties as well? 23:14
mugwump you can of course use properties in role declarations 23:15
and implementations
those properties are being tacked onto the object/class that "does" the role
stevan ok 23:16
yeah I did a perl5 implementation of Traits, which didnt use it, they did not allow properties though
only methods
mugwump sure. These things are a little harder in P5 :) 23:17
stevan yup
mugwump As far as I can see, all a trait is is a property(as in characteristic, not data member) of something in the Class model 23:18
stevan mugwump: so I am going to change the names in 10_MetaClass.t to be Package , Role, Class, etc 23:21
now that I have a better understanding of that
mugwump sure, change the names if you like, but don't worry about making them "complete" 23:22
the complete classes that describe the Perl 6 class model, we will want to put in modules :)
stevan yes
what namespace should that be 23:23
mugwump Perl6::Class?
etc?
stevan :)
sounds good to me
mugwump having said that, they don't actually exist in a namespace per se, they're just data objects 23:24
stevan yeah
I looked at that part of Pugs/Class.hs, but I am ignoring it right now until I get my head around the rest
mugwump so maybe the 'main' Perl::MetaModel namespace
stevan Perl::ObjectModel? 23:25
mugwump Perl::FoundationClasses?
mugwump revolts at his own suggestion
stevan LOL
ok commiting the better example names 23:30
Shillo Hullo, all. :) 23:43
cognominal what is a ! in haskell 23:48
stevan mugwump: any thoughts on next steps? or am I proceeding the right direction 23:49
mugwump the next steps would be making basic Role/Class/Property/etc Perl::MetaClass objects 23:52
stevan mugwump: I think I need to flesh out some corners first
mugwump I'm about to update MetaAssoc, hopefully that will shed some more light
sure
stevan ok
like Properties, where are we storing the visibility?
mugwump on the metamodel, it doesn't really matter that much, we don't care all that much. 23:54
er, sorry to repeat myself in the same sentence 23:55
in the haskell it was written as the properties collection was a map from the label of the property to the visibility and the actual property definition, ie the visibility isn't a characteristic of the property, but more its definition.
however that's somewhat obstruese 23:56
Shillo cognominal: I'm still Haskell-newbie, but I think it's a strictness marker.
cognominal: Says that when you evaluate constructor, all its components much be initialised strictly.
(i.e. non-lazily)
stevan mugwump: so maybe putting it in the MetaProperty makes sense? 23:57
mugwump er, abstruse :)
yes, that is fine
cognominal Shillo: so I can ignore it at first reading :)
stevan ok I will hack that in
Shillo cognominal: Yep. Mostly it's performance thing.
Shillo heads to sleep. Laters. :) 23:59