Pugs t-shirts www.cafepress.com/pugscode | Pugs 6.2.9 released | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | www.geeksunite.net Set by stevan on 15 August 2005. |
|||
luqui | xinming, well mostly because it's just good compiler design | 01:44 | |
like you said, it helps us bootstrap | 01:45 | ||
xinming | luqui: then, What will pugs be in the future? | ||
luqui | and it means we have somewhere to go if parrot ends up not being so hot | ||
I think pugs will always be a bootstrap | |||
since Perl 6 really ought to run in Perl 6 | |||
xinming | luqui: So, Pugs might take place of "Parrot" :-) | ||
luqui | I mean, be compiled by a perl 6 program | ||
I doubt it | |||
Pugs just keeps our options open, so mono, jvm, *vm, etc. can take Parrot's place if they need to | 01:46 | ||
(javascript included in that list :-) | |||
it also gives us nice portability and interoperability options if parrot does succeed, too | |||
I guess the real answer is "because it's silly not to" | 01:47 | ||
xinming | luqui: hmm, I'd like pugs can be keep pugs. :-) with too much options, might confuse some people. Just like me. :-P | 01:48 | |
xinming is going to read tutorials. | 01:50 | ||
luqui | which tutorials? | 01:51 | |
ingy | hola | 01:52 | |
xinming | luqui: maybe haskell, maybe Synopsis. :-) | 01:53 | |
luqui | hi ingy | ||
xinming | ingy: hi | ||
luqui | ahh, indirect object syntax :-) | ||
ingy | hi luqui | 01:55 | |
I have become famous overnight | |||
luqui | you weren't famous before? | ||
obra | Maybe pugs will run on the new ruby vm | ||
ingy | Wikiwyg | ||
luqui | what you kill is what you get? | ||
:-p | |||
*what I kill | 01:56 | ||
ingy | it del.icio.us/popular/ and all over google after 3 days | ||
it's creepy | |||
luqui | well...cool | 01:57 | |
xinming | seen autrijus | 01:58 | |
jabbot | xinming: autrijus was seen 1 days 22 hours 24 minutes 39 seconds ago | ||
xinming wish autrijus will take care of himself. | 01:59 | ||
s/wish/wishes/ | |||
luqui: you still there please? | 02:38 | ||
luqui: I think I found a bug in Synopsis, But I am not so sure, I just have to confirm first. ;-) | 02:39 | ||
luqui: hmm, I was wrong, Sorry for the confusion... | 02:40 | ||
xinming is blind... @_2 | 02:41 | ||
A leading [ or + indicates an enumerated character class: | 02:53 | ||
A leading - indicates a complemented character class: | |||
can anyone here give me an example for this? | |||
luqui | <+[a-z]> # alpha | 02:55 | |
<-[a-z]> # any character that is not a-z | |||
xinming | luqui: thanks | 02:56 | |
Khisanth | so no more <[^a-z]>? | 03:24 | |
hmm <[^_^]> | |||
xinming | <[$_$]> | 03:28 | |
<[@_@]> | 03:29 | ||
:-) | |||
<[/\/| $]> | 03:30 | ||
Khisanth | <[@_@]> for some reason I am associating that one with autrijus :) | 03:32 | |
jql waits for <[a-z] (-) [aeiou]> | 03:52 | ||
svnbot6 | r6441 | putter++ | PIL-Run - t/01-sanity/04-if.t passes. iblech++ | ||
r6442 | fglock++ | * perl5/ Array - implemented boxed lazy Array | |||
luqui | jql, you wait for that to be implemented? | ||
or specced? | |||
jql | suggested | ||
luqui | it was suggested long ago | 03:53 | |
and it was part of perl 6 for a long while | |||
jql | umm... | ||
no, not with the new set ops | |||
which are new afaik | |||
luqui | (right, the semantic equivalent_) | ||
jql | well, that's what I meant | ||
operator unification | |||
luqui | still, we killed char class set ops altogether | ||
other than union | |||
hmmm.. | 03:54 | ||
jql | unicode bleh | ||
luqui | actually, the only thing we killed was intersection, I suppose | ||
svnbot6 | r6443 | putter++ | EvalX.pm: unbreak t/01-sanity/03-equal.t | 03:59 | |
allent17 | anyone in here familiar with bioperl? | 04:10 | |
luqui | why? | ||
you going to do a perl6 port? | |||
allent17 | ha, nah, just need a little help | ||
luqui | you should probably go ask at #perl | ||
QtPlatypus | Though porting bioperl to perl6 would interesting. | 04:15 | |
luqui | sure... if only I knew the first thing about it | 04:19 | |
and if only it were useful without being really really fast | |||
(I guess that's the first thing about it) | |||
QtPlatypus only knows the first thing about it. | 04:20 | ||
luqui knows that it's his bedtime | 04:21 | ||
Khisanth has only heard complaints about bioperl | 04:27 | ||
QtPlatypus | What sort of complaints? | 04:34 | |
Khisanth | they were mostly non constructive and shallow though :) | 04:37 | |
QtPlatypus | Damn. | ||
Its just that bioperl is one of the application areas where it would be nice to get imput from. | 04:39 | ||
tewk | ll | 05:21 | |
Boy I'm good at that | 05:22 | ||
QtPlatypus | Good at what? | 05:24 | |
Apprently generating random non-sequturs. | 05:55 | ||
putter | ok, p5. $n = '$P::x'; $$n = 3; Question - what variable is now 3? | 05:56 | |
bah. $n = 'P::x'; thanks. | 05:57 | ||
jql | $n = '$P::x' would work, too | 05:58 | |
:) | |||
perl ain't picky | |||
putter | ;) though sometimes, as now, not-picky == dont notice bug until loooong after its created. :/ | 06:01 | |
06:20
jp-autar1 is now known as jp-autark
|
|||
putter | ah well. PIL-Run subs will have to wait for tomorrow (aka later today). | 06:43 | |
& | |||
xinming | @objectĀ».=meth(@args) # calls mutator method on each | 11:20 | |
does this mean, @object[0] .= meth(@args), @object[1] .= meth(@args), @object[2] .= meth(@args)... ? ? | 11:21 | ||
masak | xinming: i think so | 11:45 | |
dang, perl6 operators can really blow one's mind | 11:46 | ||
xinming | masak: maybe because I am not clever. T_T | 11:48 | |
?eval [*](1..100) | |||
evalbotzy | 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000 | ||
xinming | ?eval [+](1..100) | 11:49 | |
evalbotzy | 5050 | ||
xinming | I like this :-) | ||
elmex | <gnaa>perl6 is too complicated and parrot will never be finished.</gnaa> | 11:53 | |
QtPlatypus wonders perl6 will optimize [+](1..100) -> ((1+100)*100)/2 | 11:55 | ||
I guess not would be hard to match. | |||
nothingmuch | antishithemins are making me droooooowwwwzzzyyy | 12:05 | |
QtPlatypus: with peephole optimizations and *value* inferrence it should be easy | 12:06 | ||
if I had more time i would start writing a PIL optimizer plugins | |||
and the optimization framework | |||
QtPlatypus nods | 12:07 | ||
masak | xinming: oh, i think you're clever. it's just that perl6 operators require that and more | 12:08 | |
nothingmuch | QtPlatypus: if you're tempted i posted a mail about the optimization pipeline sometime in early july, on p6l | 12:09 | |
QtPlatypus will take a look. | 12:10 | ||
GeJ | Talking about optimizations, do you know if there will be a way to code a lib/module/whatever in PIR and use() it in a perl6 script? | 12:11 | |
maybe there's an API already specced? | |||
nothingmuch | GeJ: there will be, 100% surely | 12:12 | |
and right now pugs has eval_pir | |||
scook0 | I would be very surprised if it were not possible | ||
nothingmuch | but i don't think a module interface is implemented yet | ||
the interface should look like 'use pir:SomeModule' | |||
and the 'pir' foreign interface plugin defines: | |||
where to look | |||
how to load | |||
how the interface is exposed | |||
QtPlatypus | The macro interface can almost do it. | 12:13 | |
scook0 | nothingmuch: `use pir:SomeModule`? | ||
wouldn't you just compile to PBC (or whatever), put it in your path, and say `use SomeModule`? | |||
(I suppose I'm just nitpicking...) | 12:14 | ||
nothingmuch | sorry, back | 12:20 | |
i don't know | |||
GeJ | nothingmuch: hum, yummy... :) Unfortunately, it may generate more flame from those who blame perl for being cryptic when they take a perl golf entry as "regular" perl code. :) | ||
nothingmuch | i guess 'use SomeModule' should work if it was perl | ||
but if it's handwritten pir it's a different "domain" of code | 12:21 | ||
whether in effect it's cached bytecode from the perl somemodule, or compiled bytecode from the pir somemodule is an implementation detail | |||
and in fact what I'm writing to p6l at the moment | |||
xinming | Any one here can give me an example of sub.wrap? | 12:51 | |
scook0 | xinming: hmm, let me think | 12:55 | |
ok, let's say we have `sub eat_meal { ... }` | 12:56 | ||
and that's all working fine | |||
then at some stage we discover that we need to wash our hands before eating a meal | 12:57 | ||
so we say: | |||
my $h = &eat_meal.wrap( { wash_hands; call } ) | 12:58 | ||
and from now on, any time we call eat_meal() | |||
it will call wash_hands(), then call the original code | |||
then when we don't need to do this any more | 12:59 | ||
we say: | |||
&eat_meal.unwrap($h) | |||
and it goes back to normal | |||
kvakke | wow | ||
scook0: what is $h? | 13:00 | ||
scook0 | kvakke: a unique value | 13:01 | |
that lets you identify this particular `wrap` | |||
so that you can undo it later | |||
without affecting other wrappers | |||
kvakke | ok, that's really cool | ||
xinming | scook0: It seems like sub func will do { ... } { ... }; | ||
nothingmuch | scook0: we're thinking of a wrap mutiny | 13:02 | |
xinming | s/seems/seems to be/ | ||
nothingmuch | .wrap should not be mutating | ||
&sub.=wrap is the mutating variant | |||
kvakke | I installed pugs yesterday, now I don't know what to do with all the power... | ||
nothingmuch | furthermore you can edit the stack | ||
scook0 | nothingmuch: ooh, .= goodness | ||
(functional programming)++ | |||
nothingmuch | and have access to the wrapper stack from within each wrapped thingy | ||
s/wrapped/wrapping | |||
s06's .wrap is too much like Hook::LexWrap which, with all due respec, is a pretty lousy interface | 13:03 | ||
&sub_with_wrapper should have the .nested_sub method to retreive the original wrapped sub | |||
scook0 | nothingmuch: the only issue is whether it affects everybody's view of &sub | ||
nothingmuch | and also have things like '&further_augmented = &sub_with_wrapper.remove_deep_wrapper(name)' | 13:04 | |
scook0: you can replace the symbol, or use .- | |||
scook0 | (which I suppose depends on the exact semantics of .= ) | ||
nothingmuch | (which are the same) | ||
xinming | hmm, What about sub func will (first|...) `forgot the automatic hooks` ? | ||
nothingmuch | &some_sub.=wrap(sub { "i'm a wrapper"; call }); | ||
and then later | |||
scook0 | xinming: it was just a simple example | ||
nothingmuch | &some_sub.=nested_sub; # or a better name | ||
scook0 | you can actually do more complicated stuff | 13:05 | |
nothingmuch | the subs should also give you access to the whole stack, so that if you wrap a with b to get b', and wrap b' with c to get c', you can ask c' to remove the b wrapping, and get c'', which is c wrapped around a | ||
scook0 | xinming: the example in S06 converts Fahrenheit to Celsius | ||
actually, the `mutator mutiny` thing reminds me of one of my pet peeves: | 13:07 | ||
the fact that s/// does mutation | |||
svnbot6 | r6444 | fglock++ | * PIL-RUN - (1,2,3) stringifies correctly; 'Array' implemented. | ||
scook0 | and it's actually /harder/ to substitute on a copy | 13:08 | |
nothingmuch | scook0: i agree, but It | ||
's very useful none the less | |||
do you have an idea you could raise to p6l? | |||
scook0 | nothingmuch: bah, too tired for that now | 13:09 | |
wolverian | scook0, I suspect it's mostly to make map { s/// } ... trivial | ||
(and fast) | |||
nothingmuch | wolverian: s/trivial/dangerous/; ? | ||
as for fast - static analysis is your friend! | 13:10 | ||
wolverian | if you can fix it, please do! | ||
scook0 | (well, if we can't even change `==` for historical reasons, I don't see what chance `s///` has) | ||
wolverian | I like how == behaves currently. | 13:11 | |
scook0 | perhaps I'll just `no substitutions 'mutation'` or something :) | ||
xinming | scook0: thanks, I will think more on your words. | 13:12 | |
scook0 | wolverian: I prefer == for generic-equals, but then again I don't really have a Perl background | ||
wolverian | nothingmuch, I meant s/// for @foo; above | ||
scook0, right, I do. | 13:13 | ||
nothingmuch | wolverian: ah, that's something completely different =) | ||
wolverian | and I'm sure neither of us is right. :) | ||
nothingmuch | phew, long post | ||
wolverian | nothingmuch, yes. I haven't slept too well. :) | ||
nothingmuch is also drowsy | |||
anti-histhemines | |||
i hope my p6l post is Good Enough | |||
wolverian | histamines | 13:14 | |
I slept about six hours and had a lactose intolerance test in the morning, so I couldn't eat after 8pm last evening | |||
nothingmuch can't spell | |||
oi | |||
scook0 | nothingmuch: better than `antishithemins` -- took me a few seconds to figure that one out :) | 13:15 | |
wolverian | basically, they gave me a large jug of lactose :) | ||
nothingmuch | ouch | 13:16 | |
that's horrible if you do have lactose intolerance | |||
do you know what lactose intolerance actually works like? I was shocked | |||
wolverian | I know the mechanism, yes | ||
nothingmuch imagines bacteria making a joyous feast in wolverian's tummy | 13:17 | ||
wolverian | little bacteria farting in your stomach :) | ||
right. :) | |||
nothingmuch | stomache or intestines? | ||
iblech, fglock, putter, stevan, autrijus, parrot people - the p6l post concerns you | 13:18 | ||
wolverian | right, intestines. | ||
scook0 | bye chaps -- bedtime for me | 13:20 | |
nothingmuch | ciao scw | 13:21 | |
uh, oops | |||
tab completion makes it into an even bigger mess | |||
ciao! | 14:28 | ||
svnbot6 | r6445 | fglock++ | * PIL-Run - fixed some problems with internal recursive lists | 14:52 | |
r6446 | fglock++ | * PIL-Run - 1..1000000000000000 works | |||
kvakke | ?eval [+] (1..10) | 15:44 | |
evalbotzy | 55 | ||
Juerd | The parens are unnecessary. [op] is a listop, like print. | 16:02 | |
?eval [+] 1..10 | |||
evalbotzy | 55 | ||
Juerd | ?eval [**] 1..10 | 16:03 | |
evalbotzy | 1.0 | ||
Juerd | :) | ||
?eval [**] reverse 1..10 | |||
evalbotzy | Inf | ||
Juerd | Woo! | ||
?eval Inf + 1 | |||
evalbotzy | Inf | ||
Juerd | ?eval ~Inf + 1 | ||
evalbotzy | Inf | ||
QtPlatypus | I thought they did bigint support | ||
?eval 2**32 | |||
Juerd | QtPlatypus: *this* big? | ||
evalbotzy | 4294967296 | ||
QtPlatypus | ?eval 2**64 | ||
evalbotzy | 18446744073709551616 | ||
Juerd | ?eval "Inf" + 1 | 16:04 | |
evalbotzy | Inf | ||
QtPlatypus | ?eval 2**128 | ||
evalbotzy | 340282366920938463463374607431768211456 | ||
QtPlatypus | ?eval 2**2**2 | ||
evalbotzy | 16 | ||
Juerd | ?eval 10**9 | ||
evalbotzy | 1000000000 | ||
QtPlatypus | ?eval 2**2**2**2 | ||
Juerd | ?eval 10**9**8 | ||
evalbotzy | 65536 | ||
Inf | |||
QtPlatypus | ?eval 2**2**2**2**2 | ||
evalbotzy | 20035299304068464649790723515602557504478254755697514192650169737108940595563114530895061308809333481010382343429072631818229493821188126688695063647615470291650418719163515879663472194429309279820843091048559905701593189596395248633723672030029169695921561087649488892540908059114570376752085002066715637023661263597471448071117748158809141357427209671901518362825606180914588526998261414250301233911082736038437678764490432059603791244909057075603 | ||
QtPlatypus | ?eval 2**2**2**2**2**2 | ||
evalbotzy | Inf | ||
Juerd | ?eval 10**9**3 | ||
evalbotzy | 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||
Juerd | ?eval 10**9**4 | ||
evalbotzy | 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||
Juerd | ?eval 10**9**5 | ||
(irc message limit. hehe) | |||
evalbotzy | (no output) | ||
Juerd | ?eval 10**9**6 | 16:05 | |
evalbotzy | (no output) | ||
Juerd | ?eval 10**9**7 | ||
evalbotzy | pugs: out of memory (requested 1048576 bytes) | ||
Juerd | ?eval 10**9**8 | ||
evalbotzy | Inf | ||
QtPlatypus | ?eval 10**10**100 | ||
evalbotzy | Inf | ||
Juerd | weird! | ||
10**9**8 is inf, but 10**9**7 uses too much memory. | |||
pdcawley_ | Boggle | 16:11 | |
coral | ?eval 10**9**8**0.1 | 16:18 | |
evalbotzy | 9.032825325192743e14 | ||
svnbot6 | r6447 | fglock++ | * PIL-Run tabs cleanup | ||
coral | ?eval (10**9**8|10**9**8)**0.1 | 16:19 | |
evalbotzy | Inf | ||
svnbot6 | r6448 | fglock++ | * PIL-Run - registered type 'Bit'; bool::true/bool:false works | 16:40 | |
elmex | ?eval print "i'm stupid" | 16:44 | |
evalbotzy | i'm stupidbool::true | ||
elmex | ?eval print "\001ACTION pukes on the floor\001\n" | 16:46 | |
evalbotzy | ACTION pukes on the floor bool::true | ||
elmex | ?eval print "\001ACTION dances around\001" | ||
evalbotzy | ACTION dances aroundbool::true | ||
elmex | *G* | ||
wolverian | I like flaming threads that burn down to intelligent discussion. | 16:50 | |
elmex | ?eval print "\001ACTION dances around\001"; "" | 16:51 | |
evalbotzy | ACTION dances around'' | ||
elmex | ?eval print "\001ACTION dances around"; "" | ||
evalbotzy | ACTION dances around'' | ||
elmex | hmm | ||
?eval print "\001ACTION dances around"; undef | |||
evalbotzy | ACTION dances aroundundef | ||
svnbot6 | r6449 | fglock++ | * PIL-Run - 'a' x 10000000000 works | ||
elmex | wolverian: what discussion? | ||
wolverian | elmex, the thread that started with Kevin Tew's "Python PMC's [sic]" on perl6-internals | 16:52 | |
elmex | ah :) | ||
Khisanth | ?eval "\001ACTION dances around\001" | 16:53 | |
evalbotzy | 'ACTION dances around' | ||
elmex | weird | ||
python will be the first finished (serious) language that runs on parrot ;) | 16:54 | ||
Khisanth | ?eval print "\001ACTION dances around"; sub foo {return ""} foo | ||
evalbotzy | ACTION dances around'' | ||
Khisanth | ?eval print "\001ACTION dances around"; sub foo {return "\001"} foo | 16:55 | |
evalbotzy | ACTION dances around'' | ||
Khisanth shakes his fist at the bot | |||
elmex | *g* | 16:56 | |
Khisanth | hrm those would have work on some clients | 16:57 | |
elmex: how far along is python on parrot? | 16:59 | ||
svnbot6 | r6450 | fglock++ | * tabs cleanup | 17:05 | |
r6451 | putter++ | PIL-Run - namespace now hierarchical. 01-sanity/05-sub.t passes. | |||
fglock | putter: ping | 17:06 | |
putter | fglock: pong | 17:07 | |
fglock | can you help to find out why 1..10.reverse doesn't work? I think the pil is not being read properly | 17:08 | |
putter | sure, looking... | ||
hmm, before I get to that, it looks like the hierarchical namespace patch broke even basic lists (3,4) ... | 17:10 | ||
fglock | it still works here. did you update Value and Container ? | 17:11 | |
putter | sigh. usual putter problem. usual putter comment. usual fglock suggestion. usual fix. usual putter post-fix comment. | 17:12 | |
fglock | I usually use 'svn up ../..' | 17:13 | |
putter | ;) thanks. good idea. or just svn up .. , so pugs doesnt get updated. | 17:14 | |
fglock | there are 3 list constructors working: (1,2,3) (1..10) (1 x 10) | ||
putter | err, where is reverse defined? it doesnt seem to be in Prim... | 17:15 | |
fglock | I don't know how to specify 1..10:by(2) syntax | ||
PrimP5.pm - MULTI SUB reverse (@xx) { @xx->reverse }; | 17:16 | ||
putter | 1..10:by(2) wont parse anyway. adverbs on operators dont work yet (I only did them for f calls). | ||
ok, so 3 problems. reverse(@xx) { @xx->reverse } should have been reverse(@xx) { $xx->reverse } since @xx is now in p6 land, which becomes a $xx scalar ref in p5 land. yeah, it sucks/confusing. perhaps it should change. 2nd, its the other version, reverse($xx){...}, which is called currently. that gave the ... "unimplemented" message. 3rd, method calls arent implemented in EvalX. so (3..4).reverse reduces to reverse() which give | 17:23 | ||
s "cant call reverse on undef!". shall I add method calls? ;) | |||
svnbot6 | r6452 | putter++ | PrimP5.pm: minor reverse() fixes | ||
xinming | ?eval my @ary = (3, 4, 5, 6); @ary >>-<< 1 ; @ary; | 17:25 | |
evalbotzy | [3, 4, 5, 6] | ||
xinming | ?eval my @ary = (3, 4, 5, 6); @ary = >>-<< 1 ; @ary; | ||
evalbotzy | Error: unexpected ">" expecting term | ||
fglock | cool - reverse(1..10000000) works | ||
method calls? sure! | 17:26 | ||
xinming | hmm, How to decrease 1 for each element of an @ary? | ||
wolverian | @ary>>-- | ||
xinming | ?eval reverse(1..10) | ||
evalbotzy | '01 9 8 7 6 5 4 3 2 1' | 17:27 | |
xinming | :-) It seeems it do reversing too much... | ||
wolverian | @ary >>-= 1 # I assume | ||
xinming | wolverian: hmm, I know this, But... | ||
?eval my @ary = (3, 4, 5, 6); @ary >>-= 1; | 17:28 | ||
evalbotzy | Error: unexpected ">" expecting operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
xinming | ?eval my @ary = (3, 4, 5, 6); @ary>>--; | ||
evalbotzy | Error: Can't modify constant item: VInt 3 | ||
wolverian | xinming, seems to be pugsbugs. check if there are tests for those and add them if not, please :) | ||
xinming | wolverian: Certainly I will, I just ask here for confirmation. | 17:29 | |
wolverian | xinming++ | ||
I will now go buy some food before the store closes. bye! | |||
xinming | hmm, Some times, you normally use $::('nick')++, what does this mean exactly? | 17:30 | |
what does ++ mean. | |||
fglock | xinming: I think there is a 'vote' counter | 17:31 | |
karma fglock | |||
jabbot | fglock: fglock has neutral karma | ||
fglock | mm maybe not | ||
xinming | thanks anyway | 17:32 | |
nothingmuch | hmm, no replies =( | ||
fglock | nothingmuch: people need time to think about it | 17:33 | |
putter | fglock: :) one line change. (3,4).reverse now works. | ||
nothingmuch | they've had a whole day, i only thought about it for 20 mins or so before I wrote it all down | ||
xinming | the test has been there. | ||
nothingmuch | (which took another half hour or so, but whatever) | ||
xinming | someone had it written. :-P | 17:34 | |
svnbot6 | r6453 | putter++ | EvalX.pm: add invocant to args. | ||
putter | ok, that wasnt the clearest commit message I've ever done. | ||
fglock | what's next? is it possible to add simple signature check, such that 'a'..'z' is called different than 0..100? | 17:36 | |
putter | I'd like to get the last two sanity tests running, so one can make test-perl5 ... | 17:37 | |
fglock | I'll take a look at the tests | 17:38 | |
putter | if you get a chance and could take a look at 06-use, I'll skip ahead to plowing through getting Test.pm to compile... | 17:39 | |
xinming | submethod and method can be the same name in a class, so, Which one has higher priority? | 17:40 | |
submethod. :-) | 17:42 | ||
nothingmuch | xinming: i think a submethod and a method cannot co-exist in the same namespace | 17:45 | |
it just doesn't make sense | |||
xinming | nothingmuch: they can. :-) | 17:48 | |
nothingmuch | xinming: that's horrible | ||
i'm guessing submethod takes over | |||
but only from within the class | |||
xinming | You may mix methods and submethods of the same name within the class hierarchy, | ||
that's from S12 | |||
nothingmuch: Yes, I tried, submethod has a higher priority. | 17:49 | ||
nothingmuch | xinming: please post on p6l and ask why the hell that is allowed | ||
"You may mix methods and submethods of the same name within the class hierarchy" | 17:50 | ||
xinming | nothingmuch: well, I won't. :-) I wish submethod and method can be the same name in a class. :-) | ||
nothingmuch | not the same namespace, though, right? | ||
xinming | nothingmuch: hmm, right... | ||
nothingmuch | it means that classs a { method foo { } }; class b is a { submethod foo { } }; class c is b { method foo { } } | ||
in this case if you say 'a.new.foo' you get the first foo | 17:51 | ||
xinming | But I think the default answer is "yes" to this question, | ||
nothingmuch | if you say b.new.foo you also get the first foo | ||
if you say c.new.foo you get the third foo | |||
if c::foo says '$?SELF.SUPER::foo' it gets a::foo | |||
xinming | ?eval class C { method a { 'a'.say }; submethod a { 'b'.say } }; C.new.a; | ||
evalbotzy | b bool::true | ||
nothingmuch | the only case where b::foo is every called is if something in class b said '$?SELF.foo' | ||
xinming: that's just wrong | 17:52 | ||
xinming | nothingmuch: hmm, Ok, I will post the question. | ||
nothingmuch | xinming: submethods should never be accessible from outside the class | 17:53 | |
so even if you can have 'method a' and 'submethod a' in the same class, you still can't say C.new.a and get a submethods | |||
s/s$//; | |||
putter | fglock: hey, use Test; already works. because of the "problem" iblech mentioned earlier - you ask pugs to compile "use Test;", and it provides a compilation of Test.pm. !:) | 17:54 | |
("works" in the sense that PIL for Test.pm arrives at PIL-Run, not in the sense that EvalX has a clue what to do with it.) | 17:55 | ||
xinming | nothingmuch: In my understanding, method and submethod, their only difference is, method can be inherited, But submethod can't.. | ||
nothingmuch | well, yes | ||
submethods are like private methods | |||
they are utility methods that should not be shared | |||
xinming | by the way, How to write "new" in perl 6? don't use bless {},$class syntax. | 17:57 | |
because in perl 6, a class a no longer a anonymous hash, (though we can make it) | 17:58 | ||
PerlJam | xinming: $class.bless(...) | 17:59 | |
where ... is the bit that initializes the attributes. | |||
xinming | s:nth(2)/a/is/ | ||
fglock | bbiab | ||
xinming | PerlJam: thanks. | 18:00 | |
PerlJam | $class.bless(key => value, :otherkey(othervalue)) # etc | ||
xinming | PerlJam: it seems that this will create a anonymous hash "class" It's the same in perl 5 | ||
PerlJam | xinming: I think that people who want to write their own "new" in perl6 will really want to write a BUILD method | 18:01 | |
putter | fglock: bah. Test.pm is breathtakingly non-trivial. sanity seems to be "missing" a series of 06.01 ... 06.82 tests. hmm, perhaps the right thing to do is to create them? other backends will be down this path after us... | ||
nothingmuch | house work... ciao! | 18:02 | |
PerlJam | xinming: If you still think of class Foo { has $.a, $.b; ...} as a hash with keys $.a and $.b, then sure. | ||
xinming | PerlJam: But, In perl 6, Attribute can't be access via $obj.{'att_name'}; | 18:03 | |
$class.bless( { } ); will create a perl 5 style instance. though, not so sure about $class.bless(), | |||
I would check it. bbl | |||
nothingmuch | I'm guessing that Object::bless is a runtime thing | 18:04 | |
it returns an Opaque | 18:05 | ||
and no one but the runtime knows how it's implemented | |||
nothingmuch fades back out | |||
ods15 | hi | ||
PerlJam adjusts the tuner but nothingmuch's signal is too weak ;) | 18:06 | ||
xinming | PerlJam: your right. :-) | 18:07 | |
PerlJam lunch & | 18:08 | ||
xinming | $class.bless( 0, *%_ ) will do make a perl 6 "style" object, and $class.bless( { } ) will make a perl 5 "style" object. | ||
ods15 untangle's PerlJam's & into a | | |||
ods15 then proceeds to beat PerlJam over the head with it | |||
putter | oh, what do y'all think? create a series of t/01-sanity/07-XX-foo.t tests, which test each language feature as used in Test.pm. that way, new backends work their way through 07-XX, rather than confronting a monolithiic 07-test "next, implement _all the many language features Test.pm uses". | ||
xinming | hmm, I am still wrong | 18:09 | |
{ }.bless $class might be perl 5 "style" object. | |||
fglock | putter: there are many tests that could be reused - how about writing a script to run existing tests in a specified order | 18:10 | |
in increasing complexity | 18:11 | ||
putter | or just making a list, and leave the scripting for later. my one reservation is that test files will, intentionally, try to test things thoughroughly. where here our objective is to just barely get things working well enough for Test to run, and subsequently run those same test files. | 18:13 | |
oh, that's the gotcha. you cant use the existing test files... they use Test! ;). well, one could create a simple-Test.pm perhaps, and start backend's make test using -MSimplerTest until they are ready to take on Test.pm itself. | 18:16 | ||
ooo, how about that. mumblebootstrap/Test.pm, which defines a package Test;, doing very basic Test.pm functionality, with the simplest possible code. so given new backend, you work your way through sanity, but punt 07-test. run with pugs -Imumblebootstrap for a while, which swaps in the minimal Test, until you have some hope of running the real Test.pm. thoughts? | 18:20 | ||
One could even have backend-specific mumblebootstrap/Test.pm's, tuned to whatever is simplest/first-running on backend foo. | 18:22 | ||
fglock | how about Test::Bootstrap ? Test::MiniPerl ? | ||
putter | perl5/PIL-Run/lib6/Test.pm ? and in EvalX pugs -Ilib6 (which it should say anyway) | 18:24 | |
fglock | what's wrong with MULTI SUB postcircumfix:<[ ]> ($a,$i) {...} - it's a syntax error | ||
putter | trailing semicolon? | 18:25 | |
fglock | no, it is there | ||
putter | looking... | ||
fglock | actually, nevermind - this can be specified in Prelude | 18:29 | |
putter | ah, so. when you get syntax errors in Prim, there is a # print; line in the filter. uncomment it, and perl -w crude_repl.pl > deleteme.pl. in this case, it still says MULTI SUB. hasnt been expanded. apparently because of the quicky parsing in the filter \S+. lets see, what should it be instead... | ||
xinming | hmm, | 18:30 | |
sub init_dbh (Str $dsn --> DBI $dbh) { | |||
$dbh .= connect($dsn); | |||
$dbh.do('some init code'); | |||
say 'I return $dbh anyway!'; | |||
} | |||
I saw this in autrijus' journal, What will --> operator be if this grammar is accepted? | |||
It doesn't make sense to me... T_T | 18:31 | ||
Or, what will --> operator do here? | |||
will it just be an ',' ? | 18:36 | ||
Juerd | It'll promise that init_dbh will return that particular DBI $dbh | 18:37 | |
So my Blah::Xyzzy $dbh = init_dbh($dsn) works only if Blah::Xyzzy can handle DBI | |||
At compile time. | 18:38 | ||
fglock | bbiab | 18:39 | |
xinming | Juerd: so, You think this will be a "return-type" operator? | ||
putter | fglock: it's in... | 18:40 | |
Juerd | xinming: I'm actually quite sure. | 18:42 | |
svnbot6 | r6454 | putter++ | PrimP5.pm: postcircumfix:<[ ]> stub. | ||
xinming | Juerd: So, This is funny, Perl 6 will have a more syntax to confuse people... | 18:44 | |
Juerd | xinming: You're very tiring | 18:54 | |
wolverian | xinming, that's very obvious syntax, I think. | 18:56 | |
xinming | Juerd: I ever said, I am NOT clever, or talent. So please tolerate some stupid questions... :-) | 19:09 | |
PerlJam | Juerd: Just imagine the thousands and millions of people who come after xinming | 19:13 | |
xinming | PerlJam: Then, there should be thousands and millions one come after me... Will you commit the suicide. :-P | 19:15 | |
integral | billions too... | 19:16 | |
putter | give pugs -CPerl5 -e 'multi sub postcircumfix:<[ ]>(*@a){1} 5[6]', a postcircumfix:[ ] (with space) is defined, but a postcircumfix:[] (without) is called. this seems not quite the right thing. | 19:18 | |
PerlJam | putter: that's weird. | 19:22 | |
buu | ?eval sub test { say $^y; say $^x } test(10,20,30); | 19:27 | |
evalbotzy | Error: Undeclared variable: "$^y" | ||
wolverian | I expect that's a pugsbug, buu. | ||
buu | Really? | ||
wolverian | s,expect,think, | ||
haven't you read the apocalypses and synopses? :) | 19:28 | ||
buu | So what *should* it do? | ||
wolverian: Not for a while. | |||
wolverian | it shoud say 10, 20 | ||
er | |||
actually | |||
it is an error | |||
test expects two arguments, gets three | |||
buu | That errors now? | ||
And how come $^y gets 10, doesn't $^x come before it? | |||
wolverian | I think so, yes. &test.arity is 2 | ||
PerlJam | buu: sub test { ... $^y ... $^x } is the same as if you'd said sub test ($x,$y) { .. $y .. $x } | 19:29 | |
wolverian | buu, oh, yes. | ||
buu | Holy fucking shit. | ||
wolverian | sorry. I suck at the alphabet :) | ||
buu | How is that possibly a good idea?! | ||
wolverian | buu, it's nice with map. | ||
buu | The mind boggles. | ||
PerlJam | buu: it allows you to have more than one implicit arg for those times where it's needed. | ||
buu: in perl5 $_ got all of the implicitness, in perl6 you can spread that out a bit | 19:30 | ||
buu | PerlJam: Until you change the name and screw the ordering. | ||
PerlJam | buu: that's why it's a *shortcut* | ||
wolverian | buu, that's intentional. it is to be used in very small blocks. :) | ||
buu | Oh. Dear. Lord. | ||
wolverian | if you don't think it is a good idea, I'm sure p6l is receptive. | ||
buu | It just seems.. pointless. | 19:31 | |
PerlJam | buu: sort { $^b <=> $^a } @array | ||
iblech | putter: re &postcircumfix:<[ ]> -- that's correct, but internally, we use &postcircumfix:[] so we don't have to deal with the spaces and the <>s | ||
buu | PerlJam: Eh, I suppose. | 19:32 | |
PerlJam | buu: map { [ $^b, $^a ] } @stuff; # map 2 -> 1 | ||
buu | PerlJam: I'd rather see $^a..z get the arguments in that order. | ||
iblech | buu: sub test { say $^y; say $^x } -- that is illegal, placeholder variables only work with blocks, not subs | ||
wolverian | oh, right. sorry, forgot that. | ||
iblech | buu: I.e. sub foo { $^a } is illegal, but { $^a } works | ||
buu | iblech: I thought blocks were subs?! What's the difference? | ||
svnbot6 | r6455 | putter++ | PIL-Run - Primitives can now be written in p6 (lib6/PrimP6.pm). postcircumfix:<[ ]> moved from PIL/Run/PrimP5 to PrimP6. | ||
wolverian | buu, subs have names. :) | 19:33 | |
buu | PerlJam: Wouldn't just saying $^a = $_[0], $^b = $_[1] make a tad more sense? | ||
wolverian | (and are semantically larger collections, so $^ vars don't work well there.) | ||
buu | You still get the short cuttyness, but they always mean the same thing | ||
iblech | buu: Both Sub and Block isa Code, but a Block isa not a Sub | ||
PerlJam | buu: why say it when it's implied. | ||
iblech: buu really isn't ready to hear all of this :) | |||
iblech | buu: I.e. {...}.isa(Sub) is false | ||
buu | PerlJam: Code clarity. | ||
iblech | PerlJam: oh :) | 19:34 | |
buu | iblech: Ok, but that doesn't explain why $^x don't work in subs? | ||
PerlJam | buu: for the times where you want more clarity, use an explicit parameter list | ||
iblech | buu: Larry explicitly forbid it | ||
buu | iblech: Ok. | ||
PerlJam: There is that. | |||
putter | iblech: but I'd think PIL should use one or the other, rather than both. for the moment I'm just crushing spaces when walking PVars. | 19:35 | |
PerlJam | buu: you know the perl motto, of course. Perl6 just exponentiates the WTDI a little bit :) | ||
buu | PerlJam: I just think it's wacky to see say, $^f and then five lines later see $^e and have to go back and realize the first variable was the second argument | ||
putter | iblech: thanks for the info! ;) | 19:36 | |
iblech | putter: Right. Let me see whether I can fix that | ||
PerlJam | buu: right. But that's why the rule is so simple. when you use implicit parameters, they are unicodically ordered. | ||
buu | I suppose that's more of a programmer issue, but I'm afraid I don't see the benefits of deciding based on their order. | ||
PerlJam: I guess my point is more, with my way, for example, if I come across say, $^c, I always know exactly which argument it is. I don't have to read anything else, I know what it is. With this way, I still have to read the rest of the code and try to figure out their order in my head. | 19:37 | ||
PerlJam | buu: how else would you decide their order? You'd have to declare that right? As soon as you're declaring them, you lose the benefit of implicitness (which maybe you shouldn't have done in the first place) | ||
buu | PerlJam: Er, no. | ||
PerlJam: My idea was that order was always tied to a specific variable. | 19:38 | ||
$^a is [0], $^b is [1], and so forth | |||
PerlJam | oh, right. | ||
well, ping p6l about that. | |||
buu | But they're scary! | 19:39 | |
They might eat me. | |||
iblech | buu: But then you can't use more descriptive names, e.g. think of %hash.key.map:{ uc $^key } | ||
buu | iblech: Don't you think that more descriptive implicit names raise the confusion level significantly? | 19:40 | |
At least with more than one. | |||
PerlJam | yeah, lwall's method allows for mnemonicity | ||
iblech | buu: Actually I think more descriptive names *lower* the confusion level :) | ||
PerlJam | buu: it's still another "enough rope" situtation. Perl is all about giving you rope. What you do with it is up to you. :) | 19:41 | |
buu | iblech: They help describe what's in the variable, but then you have more letters to guess which variable comes first =/ | ||
PerlJam | "With great power comes great responsibility" or something. | ||
buu shrugs. | |||
PerlJam | ;-) | ||
buu | $^foobar, $^foo_bar, etc. | 19:42 | |
iblech | buu: What PerlJam said, and if you use $^aaaaa and $^aaaab then it's your fault anyway, I think :) | ||
buu | heh | ||
Well there's certainly an argument for that. | |||
putter | hmm, how do we get pugs -CPerl5 if the input use()es a module which generates output? eg, Foo.pm is "say 'Im not perl code';" perl -CPerl5 -e 'use Foo;' outputs bogusity. | 19:43 | |
bogosity even | 19:44 | ||
iblech | putter: Right. I've s/use Test/use lib/ 06-use.t because of that problem :) | ||
Juerd | PerlJam: Well, Perl 6 should have some non-perl name and lots of whining will end itself. | ||
iblech | putter: (I.e., I don't know a solution) | ||
buu | Juerd: I doubt it. | 19:45 | |
putter | perhaps puts needs a -o argument? | ||
iblech | putter: I like that. And we could add more hooks later, i.e. pugs -o foo.pil foo.pl; pugs -o foo.js foo.pl, etc. | ||
putter | oh, do task inference based on the path name too? | 19:46 | |
iblech | I'd like that, yes :) | ||
putter | :) | ||
though it feels a little like "save one argument and 4 letters at the complexity cost of becoming magical"... or does it shortcut other things too? | 19:48 | ||
I guess the other place it might bite is if .foo underspecifies, so one ends up with a mix (".foo means -ZfooA, unless a -ZfooB is also specified) | 19:50 | ||
iblech | Hm? What argument do you have in mind? | ||
putter | oh, err, -CJS ? | 19:52 | |
iblech | ah, but it still would have to inference the type of the input file | ||
putter | pugs -BJS -e '...' pugs -CJS -e '....' | ||
err, huh? p5 vs p6? | |||
pugs -CJS -o foo.js foo.pl | 19:53 | ||
iblech | pugs -CJS -o foo.js foo.pil | 19:54 | |
putter | ahhhhhhh | ||
iblech | but now that you say it, we could just as well forbid .pil as input | ||
I.e. I would be completely fine with -CJS|Perl5|... -o output input.p6 | 19:55 | ||
putter | eh, .pil seems plausible. I wonder still though about underspecification... is -o foo.pl the p5 backend, the other p5 backend, the SWI prolog backend, or the YAP prolog backend? | 19:56 | |
;) | |||
but the first step atleast is just pugs -Cperl5 -o deleteme ... to replace pugs -Cperl5 ... > deleteme | 19:57 | ||
iblech | ok, then we definitely need -C for disambiguation | 19:58 | |
Right. | |||
19:58
Maddingue__ is now known as Maddingue
|
|||
putter | mugwump: so... any plans to give Scriptalicious a persistent history cache? so when crude_repl starts up again(and again) one still has one's command history? | 20:04 | |
:) | |||
buu | PerlJam: What is scriptalicious? | ||
ER, putter, sorry. | 20:05 | ||
iblech | buu: search.cpan.org/author/SAMV/Scripta...licious.pm | ||
buu | iblech: Er, yeah, I managed to find it.. but what the heck does it do? Or rather, why is it useful? | 20:06 | |
iblech | buu: PIL-Run uses it, IIRC, mainly for it's easier interface to Term::Readline | 20:07 | |
buu | Oh. | 20:08 | |
nothingmuch | putter: wrt to refactoring sanity tests - ++ | 20:25 | |
xinming: --> is not a perl 6 operator... The syntax for declaring subroutine parameters is a minilanguage of it's own | |||
which can have embedded perl 6 in where { } clauses | 20:26 | ||
putter | nothingmuch: thanks! :) | 20:30 | |
svnbot6 | r6456 | putter++ | PIL-Run - ? optional arguments, p6_eval_file() added, crude_repl.pl accepts optional filenames. | ||
putter | ;) bash... that was ?$arg optional arguments ;-) | 20:31 | |
nothingmuch | heh | 20:32 | |
sv* -m '$arg' not "$arg" | |||
nothingmuch has been hard coded to turn on a red flag in his head whenever he scans ".*?\$.*?" | 20:33 | ||
putter | Hmm... so I started down the PIL/Run/lib6/Test.pm minimal Test path... but since unrecognized things tend to cause death, its not clear its at all useful. sure, you can run ok() is() etc. but its not clear any of the .t files dont die anyway... | 20:34 | |
nothingmuch: yes. but I found myself using apostrophies, so that's (sic) why I got into the habit ;) | 20:35 | ||
(I suppose I should just remind myself how to escape ' in bash...) | 20:37 | ||
prolog land - echo 'foo''bar' | |||
ok. thanks nothingmuch. ;) | |||
dinner & If noone has started on smashing Test.pm into a bunch of bitesized .t files, I start on that later. fglock, iblech, everyone - tnx, was fun! ;) | 20:41 | ||
nothingmuch | still no replies for linkage post =( | 20:46 | |
stevan | nothingmuch: your submethod understanding is incorrect | 20:50 | |
I thought the same way you did | |||
but I asked Larry | |||
they are not private to the class | 20:51 | ||
you can call them from outside | |||
nothingmuch | odd | ||
why aren't they inheritable then? | |||
stevan | and the whole "method and submethod of the same name can exists in a class" is wrong | ||
they are not inheritable so that you can really specialize it to a particular class | |||
nothingmuch | or rather, why does something like that have it's own keyword, and such a confusing one at tht | ||
stevan | yeah it does seem a bit much | ||
nothingmuch | is this just for BUILD and DESTROY? | 20:52 | |
stevan | they basically are regular methods with the following like inserted | ||
next METHOD unless $?SELF.class =:= $?CLASS; | |||
so basically if you are not local, it skips to the next applicable method | |||
nothingmuch | hmm | ||
stevan | BUILD and DESTROY are the only good uses I can think of myself | 20:53 | |
and it's a good use actually | |||
becuase inherited BUILD and DESTORY can be messy | |||
nothingmuch always preferred 'method BUILD is disowned { }' or something like that | |||
stevan | and BUILDALL and DESTROYALL seem to the right way to go | ||
nothingmuch | yeah, C++ is surprisingly sane in that respect, but only because it *REAALLLLLYUYYYYYYY* has to be | ||
xinming | www.axis-of-aevil.net/archives/img/..._cover.jpg | 20:56 | |
lol | |||
mutant | 20:57 | ||
nothingmuch has that posted in his cube | |||
xinming | well, I just saw it, And feel funny, So posted here. :-) | 20:58 | |
nothingmuch | xinming: yeah, it's a wonderful photo =) | 21:06 | |
well, not really a photo, eh? | |||
Khisanth | what happened to the backticks in p6? | 21:12 | |
xinming | hmm, May I suggest 2 method for an @ary? | 21:15 | |
one is "pull" which will "pull out" a slice of an array, another one might be "insert" | 21:17 | ||
svnbot6 | r6457 | fglock++ | * PIL-Run - implemented (1,2,3)[1] array subscript | ||
xinming | hmm, It seems splice does this. :-S | 21:19 | |
nothingmuch loved splice | 21:32 | ||
svnbot6 | r6458 | fglock++ | * PIL-Run - implemented (1,2).elems; (1,2).end | ||
r6458 | fglock++ | - updated Container::Array | |||
nothingmuch | i knew *exactly* what it was going to do, when I just saw it's name in the docs | ||
i haven't used it much over the years though | |||
xinming | ?eval [+][1, 2, 3] | 21:33 | |
evalbotzy | (1, 2, 3) | ||
xinming | will [op] deference the array? | ||
nothingmuch | i think it should | ||
[1, 2, 3] >>+<< [1, 1, 1] | |||
?eval [1, 2, 3] >>+<< [1, 1, 1] | |||
evalbotzy | (2, 3, 4) | ||
nothingmuch | yes, it's more consistent | ||
xinming | So another bug. :-) | 21:34 | |
nothingmuch | xinming++; # how do you find all of these? | 21:35 | |
landover | hello all | 21:37 | |
nothingmuch | well, finally finished shower, etc... off to bed! | ||
landover: hi! | |||
landover | how is perl6 coming along | 21:39 | |
nothingmuch | landover: quote well | ||
landover | i have almost considered switching to python... | ||
joking | |||
heh | |||
nothingmuch | if you have subversion, 'svn co svn.openfoundry.org/pugs/' | ||
landover: whatever floats yer boat | |||
landover | good good must play with it | 21:40 | |
nothingmuch personally doesn't mind pythonites | |||
landover: give me an email address, i'll give you commit privs | |||
landover | ya i have become friends with the pythonites | ||
nothingmuch | okay, sending invite | ||
play nice and commit beautiful tests | |||
do you know where the synopses are? | 21:41 | ||
landover | no ive been in the trenches...literally...if you know what i mean | ||
or should i say been doing a lot of gov work etc.... | |||
how is parrot coming along? | 21:42 | ||
nothingmuch | these are the most important: [email@hidden.address] | ||
landover | gracias | ||
nothingmuch | parrot is coming along nicely but differently | ||
i actually don't know that much about it | |||
irc://irc.perl.org/parrot is the place to discuss, i guess | |||
but there are some knowlegiable people here too | 21:43 | ||
ugh... i can't find the login box on openfoundry. | 21:44 | ||
i wonder what's wrong | |||
landover | my only concern is that i would rather not move towards any type of a strictly typed language or should i say one that is compiled....im lazy.... | ||
cough cough...or java.... | |||
nothingmuch | landover: perl 6 is strictly typed and compiled, but some of it's strict types are, for example the "Any" type, and it pretends to interpret =) | 21:45 | |
well, at least in the future | |||
the type system is completely optional | |||
and compilation is transparent when you don't want it, but still lets you make object files | |||
so in short - best of both worlds | |||
xinming: can you understand the openfoundry interface? | 21:46 | ||
oh wait, I think I got it | 21:47 | ||
phew! english! | |||
okay, landover, your invitation is sent | |||
landover | i suppose im the only smalltalk fan left....poor poor allan kayes | ||
gracias | |||
nothingmuch | look around the source code, there's a bunch of READMEs | 21:48 | |
they aren't too long | |||
get ghc from www.haskell.org/ghc to compile pugs | |||
you can also get parrot for rules | |||
landover | haha ok i must be an idiot.....please dont answer that.....but what are all of the ?'s for? | 21:49 | |
elmex | i love smalltalk | ||
nothingmuch | what ?s? | ||
in AUTHORS? | |||
landover | the link | ||
nothingmuch | oh | ||
landover | on openfoundry | ||
???????????????????,??????????(???)???????????????????????????????????? | |||
????????????????????????????????????????????????????????????????,??????????????????????????????? | |||
nothingmuch | that's chinese | ||
i'm not sure which chinese though | |||
landover | ah sorry my chinese is a little bad | ||
nothingmuch | once you manage to login it can become enlglish I think | ||
landover: that's why it took me so long to login ;-) | 21:50 | ||
landover | hah | ||
sabren | does anyone here know about pugs /Emit/PIR.hs ? | ||
nothingmuch | sabren: i know a bit about it, but only meta data | 21:51 | |
Supaplex | sabren, I bet the fellow that wrote it does. | ||
:P | |||
but ask us instead :) | |||
sabren | haha.. yeah.. I was hoping for a quick answer here.. | ||
I haven't used pugs at all.. I'm working on pirate (the python compiler) | |||
nothingmuch | sabren: IIRC it is basically an PIL<->PIR | 21:52 | |
s/an/a/; | |||
i think translator is the right word | |||
sabren | right | ||
nothingmuch | i don't think it does much - evaluating PIL is a tricky job | ||
sabren | what is PIL? | ||
nothingmuch | but it pretty prints PIR | ||
PIL is the pugs intermediate language | |||
sabren | ah | ||
so basically you take perl code and do a bunch of tree transformations and get PIL? | 21:53 | ||
21:53
autark is now known as jp-autark
|
|||
landover | sabren can i ask you a tech question...my programming skills are obviously far less than yours if you are writing compiles | 21:53 | |
nothingmuch | sabren: yes, that's the bulk of pugs' job | ||
landover | err compilers | ||
can i msg you a geek question? | |||
nothingmuch | right now we have an evaluator that doesn't do PIL (from before the PIL revolution) and a PIL emitter | ||
PIL runtimes on javascript and perl5 | 21:54 | ||
and the beginings of a new pugs runtime running PIL2 | |||
elmex | wtf is PIL btw. ? i know PIR and PASM .. | ||
sabren | landover: I'll try to help if i can :) | ||
nothingmuch | sabren: pugscode.org/images/simple-compilation.png | ||
elmex: PIL is pugs intermediate language, and it's a functional like subset of perl 6. | |||
very very tiny | 21:55 | ||
xinming is going to sleep now, | |||
geoffb | sabren: see also docs/notes/plan in the pugs source tree | ||
xinming | bye all. | ||
elmex | nothingmuch: ah | ||
geoffb has finally caught up with backlog since yesterday (sheesh) | |||
nothingmuch | backlogging.. *sigh*. I wish I could read that fast | ||
geoffb | and damn, two of the people I need to talk to went offline, bah | 21:56 | |
Supaplex | the compiler looks like a zip disk :) | ||
geoffb | anyone know whether leo-ctx5 has merged on the parrot side? | ||
nothingmuch | Supaplex: autrijus was having fun | ||
sabren | he said it's coming soon but I think they're still debating about python | ||
nothingmuch | anyway, i really want to go to sleep. Bye! | ||
sabren | thanks nothingmuch :) | ||
geoffb | sabren, was that comment to me? | ||
sabren | geoofb: yes, sorry :) | 21:57 | |
er geoffb | |||
geoffb | What about python is holding up leo-ctx5? | ||
sabren | geoffb: supposedly it breaks all the python pmcs... I don't know if it's holding him up or not but they've been going back and forth on the perl6 and pirate lists | 21:58 | |
geoffb | iblech, putter: if you backlog, I have questions for both of you, and answers for one of you. :-) | ||
sabren, *sigh*, OK | |||
sabren | so here's the thing: with pirate, we're working to turn our single-pass compiler into a series of tree transformations | 22:04 | |
and the end result should look a lot like PIR | 22:05 | ||
so that's why I'm looking at Emit/PIR.hs ... to see if we've got some overlap here | |||
geoffb | sabren: did you check out docs/notes/plan? | 22:06 | |
sabren | geoffb: reading it now | ||
geoffb | (y) | ||
There are probably a few bits that are somewhat out of date (that file is probably a month old now), but the basic concepts should be clear | 22:07 | ||
also STATUS in the top level (which I just updated) has some more up-to-date info about progress | |||
landover | hah its funny around 2/3 years ago i left irc world....and within ten minutes i've realized what the hell i've been missing | 22:08 | |
people that know what the hell they are actually doing heh | |||
geoffb | landover, it helps to be on a channel with a fairly high SNR . . . | ||
Speaking of IRC, anyone happen to know if IRC has a delayed-message function, to send a message to someone who is not currently on? | 22:10 | ||
svnbot6 | r6459 | geoffb++ | Update, extend, and clean up STATUS | 22:11 | |
landover | geoffb not that i can recall | 22:12 | |
u can prob write a python/perl script that will check when that ip is logged on | |||
geoffb | bah, that would make some things a lot easier | ||
buu | geoffb: Most networks tend to provide such services. | ||
landover | buu oh? | ||
buu | I don't believe it's a part of any spec. | ||
landover | i didnt know that | ||
right | 22:13 | ||
geoffb | buu: how do you do it on freenode? | ||
buu | memoserv | ||
sabren | geoffb : so... PIL is basically scheme... does it have first class objects? | ||
geoffb | iblech, putter, or autrijus (none of whom are not around at the moment, sigh) would be better to ask, but: | 22:14 | |
iblech said yesterday that PIL1 does not have proper OO support, but PIL2 does. | |||
Sadly, PIL2 is not yet ready, because autrijus is buried in his day job | |||
Hmmm, fglock and stevan might know as well, but I believe they are idle | 22:16 | ||
and nothingmuch is gone as well. | 22:17 | ||
Damn this timezone! | |||
sabren | :) | ||
it's okay, I'm just trying to get a feel for where you guys are at | |||
landover | well if everyone in this room chipped in oh 10 bucks a day...we could prob pay his ass to do it | ||
geoffb | $970 a day? Dude, I'd work for that! | 22:18 | |
landover | now you see what i mean | ||
literally we could hire people to support our own cause heh | |||
i dont mind chipping in 50 a week to someone.... | |||
if i know that i'll have a job...1-2-5 years from now | |||
its like an investment thats better than education heh | 22:19 | ||
geoffb | Sadly, and I've never understood quite why, many of the people in here are permanent lurkers -- I'm not quite sure why they don't just use the HTML irc logs. | ||
landover | ah geo mainly to steal good ideas.... | ||
you know im only here to see if im going to be out of a job...6 months or a year....to program in j2ee....blah | 22:20 | ||
heh | |||
actually they say all good things come to those who wait | |||
buu | geoffb: I'm sucking your brains out. | 22:21 | |
sabren | so... is PIL2 something thats months down the line? weeks? days? | 22:22 | |
geoffb | buu: aaaaaaahhhhhh | 22:23 | |
What a nice pressure release | |||
buu | Exactly. It's like trepanation.. with tentacles! | ||
geoffb | sabren, PIL2 was supposed to be this month-ish, but autrijus has been delayed | ||
landover | geoff we need a bot that says autrijus is working is not working is busy ..or is delayed | ||
geoffb | sabren, I do remember that someone from the Python side had talked with him at the leo hackathon about making PIL useful to both Perl 6 and Python compilers | 22:24 | |
landover | speaking of autrijus i really hope the us doesnt go to war with china over taiwan...then i'd be enemies with autrijus that would be really pretty | ||
sabren | geoffb : that was me :) | ||
landover | err wouldnt be really pretty | ||
sabren | oh wait | 22:25 | |
geoffb | landover, just because nations go to war, doesn't mean people do | ||
sabren | i wasn't at leo's.. i only talked to him on the list | ||
geoffb | sabren, it's possible that's what I recall, sorry, it's been a while | ||
buu | geoffb: It is unlikely. | 22:30 | |
s/geoffb/landover/ | |||
landover | buu oh absolutely..i was trying to make a poor excuse of a joke | 22:31 | |
buu | Kim Il Jong scored 5 hole in ones the first time he played golf! | 22:32 | |
Or kim jong il, whatever his name is | |||
landover | hahahahaha | ||
leo__ | the PIL2 scheme emerged here on a flipchart, well, in Autrijus' own speed. But I've to admit that it is beyond my understanding. To work against my troubles of groking FP, I've implemented unlambda and major parts of Lazy-k in Parrot ;-) | 22:34 | |
sabren | hey leo! | 22:36 | |
leo__ | (I'm not aware of a specific discussion PIL/Python, but as PIL2 can represent Perl6 code, there are for sure no problems to represent different languages in PIL) | ||
hi all - just delurking a bit | 22:37 | ||
sabren | the thing is, right now pirate already compiles a whole slew of stuff | ||
geoffb | leo__, ah! So can you explain the status of leo-ctx5? The last update I have is that the PIR backend is blocked waiting on that merge . . . . | 22:38 | |
(PIR backend for pugs, I mean) | |||
sabren | but we're refactoring it... i'm just trying to keep where pugs is headed in mind so that we might possibly be able to integrate the two later on | ||
geoffb | nodnod | 22:39 | |
landover | got it | ||
leo__ | geoffb: yes, first merge, then continue with impoved (workable) lexical handling and variable sized register frames | ||
sabren: dynclasses/py* did implement already too much of CPython - IMHO | 22:40 | ||
some refactoring is really needed | |||
geoffb | leo__, is merge near, or still far? | ||
sabren | leo: I'm just the AST guy... one of these days I'll learn C :) | 22:41 | |
leo__ | chip is looking at the code currently, I hope the merge is in the next release, which is due soon | ||
geoffb | ah, fantastic | ||
sabren | Leo: btw, python_group still doesn't show up correctly in the current parrot tree | 22:42 | |
it broke right after the last release | |||
landover | hey isnt this a perl6 room note python? heh | ||
just kidding | |||
sabren | perl6 is so cool it does python too :) | ||
landover | ROFL | ||
try explaining that to an illogical technical manager | |||
sabren | leo: any idea why it might break? | 22:43 | |
leo__ | sabren: I dunno what 'show up' mean and that should reall better be explored on p6i or #parrot | 22:44 | |
sabren | leo: haha... yeah but you're not in parrot, and when I mentioned it before on p6i you said it should be working... so i'm stumped | ||
leo: Couldn't load 'python_group': python_group.so: cannot open shared object file: No such file or directory | 22:45 | ||
landover | is the path correct? | ||
leo__ | sabren: I'm of course in the #parrot channel and listening there too | 22:46 | |
- but you aren't ;-) | 22:47 | ||
sabren | it's not on irc.freenode.net? | ||
leo__ | no | ||
pobox | 22:48 | ||
geoffb | painful that the two are on different nets, it's a FAQ at this point | ||
leo__ | pobox: irc.pobox.com:6667 | ||
buu | geoffb: Heh, so where is the answer? | 22:49 | |
sabren | well that would certainly explain why there's never anyone in #parrot.. thanks | 22:50 | |
geoffb | buu, here and there. Constantly. | ||
:-) | |||
buu | geoffb: Er, what? | ||
leo__ | sabren: it's probably too easy to create 'talk with yourself private channels' | ||
geoffb | buu, I meant, it gets answered over and over in each channel, because people are often in one and want to get to the other | 22:51 | |
leo__, definitely | |||
buu | geoffb: ER, so what is the answer? | ||
geoffb | buu, if you're asking *why*, I have no idea, if you're asking where #parrot is, leo__ just said where to look | 22:52 | |
leo__ | $ grep -w irc docs/*.pod | ||
(inside parrot ) | |||
buu | geoffb: No no, I wanted a why =/ | ||
leo__ | dunno yest what even the problem is - wait a minute | 22:54 | |
s,,s, | |||
landover | geoffb we could probably bridge the two channels using a python script that would just forward all messages from one to the other | 22:56 | |
leo__ | that'll need a really good filtering language then ;-) | 22:57 | |
landover | why? | ||
geoffb | landover, do you mean #parrot on pobox to #parrot on freenode? Or #parrot on pobox to #perl6 on freenode? | 22:59 | |
The former might be reasonable. The latter would be PAINFUL | |||
landover | former of course | ||
well it works the same way as a port forward program does | |||
hell the guys over at twisted could probably whip it up in an hour or so | 23:00 | ||
leo__ | landover: just in case if forwarding starts spitting out evalbotzy at #parrot ;-) | 23:02 | |
23:05
skylan_ is now known as skylan
|
|||
leo__ | pytuple.pmc:163 is | 23:07 | |
if (!SELF.elements()) | |||
oops | |||
# there must be some working shortcut key to switch windows in irssi OS/X ;-) | 23:08 | ||
# ah must have hit ^N | 23:12 | ||
leo__ thinks that now all have started the irc forwarder hack ;-) | 23:16 |