-Ofun: xrl.us/hxhk | pugscode.org | pugs.kwiki.org | paste: paste.lisp.org/new/perl6 or sial.org/pbot/perl6 Set by apple-gunkies on 11 November 2005. |
|||
Juerd | cognominal_: The idea of feather is that I do only system administration | 00:03 | |
cognominal_: But feel free to put this in your ~/public_html! :) | |||
cognominal_ | oki, thx | ||
Juerd | cognominal_: If it's okay with licensing, copyright, and that kind of crap. | 00:04 | |
cognominal_ | tbese are all public papers | ||
Juerd | Okay, good | ||
dduncan | openfoundry appears to be down | 02:01 | |
hcchien | hmm..., Internal Server Error | 02:02 | |
dduncan | fortunately, now that I've switched to svk from svn a few days ago, this doesn't crimp my style as much as it would have | 02:03 | |
hcchien | let me check with openfoundry staff later. after Jeremy Zawodny's talk. | 02:04 | |
obra | hcchien: is zawodney in taipei? | ||
dduncan | what live event are you involved in? | ||
never mind | |||
taipei it seems | 02:05 | ||
hcchien | obra: yes. he is talking about the MySQL. :) | ||
obra | cool | ||
dduncan | anyway, the rewrite of the perl 5 Locale::KeyedText is now shown to execute correctly ... any fixes to that have been ported to the perl 6 version, but I still have to test the perl 6 one | 02:06 | |
mdiep | I have apache set up to execute .p6 files as cgi scripts. I have a shebang line at the beginning of my file that points to a symlink to pugs. and I get different output over the web than I do in my terminal. specifically `split /\:|\n/, "db: data/\n"` splits only on the "\n" and not on the ":" over the web. any ideas? it works correctly in the terminal. | 03:01 | |
and don't anyone think of send me a commit bit for this :-) | 03:03 | ||
azuroth | does changing it to /usr/bin/pugs_bin or whatever have any effect? ;-p | 03:04 | |
mdiep | both are executed by way of the shebang (a symlink in /usr/bin that points to the pugs executable in my home dir) | 03:05 | |
azuroth | ahh, okay. I was having some trouble with shebangs at all a while ago | 03:06 | |
mdiep | ah. it can't find the parrot executable because it's a different user | ||
azuroth | ahh | 03:07 | |
feel like doing an assignment for me? | 03:08 | ||
dduncan | openfoundry seems to be back | 03:47 | |
svnbot6 | r7933 | Darren_Duncan++ | r799@Darren-Duncans-Computer: darrenduncan | 2005-11-11 17:53:05 -0800 | 03:52 | |
r7933 | Darren_Duncan++ | /ext/Rosetta-Incubator : in Locale::KeyedText, added 2 new as_debug_string() methods, and added some small POD sections; updated the examples/ to port in all the fixes made to the perl 5 version (which is now known to work) | |||
dduncan | okay, in starting to test the rewritten Locale::KeyedText, I've discovered what appears to be Pugs bugs or omissions, which I'll list: | 04:09 | |
1. "my Str $user_input = $*IN;" will parse, but "say $user_text;" or "print 'foo';" will not parse | 04:10 | ||
I mean, "say $*OUT 'foo'" or "say $*ERR 'foo'" won't parse | |||
the plain print/say *do* parse but specifying the file handles does not | 04:11 | ||
whereas specifying the handle for input does parse | |||
azuroth | ahh | 04:12 | |
dduncan | 2. labels won't parse, but I know that's a todo item so no need to expand here | ||
I mean, declarations thereof in the form 'FOO:', if that's the correct syntax | |||
3. at runtime, "my Str $user_input = $*IN;" does not block and accept input ... and if this line appears in a loop, the loop doesn't end | 04:13 | ||
mainly it doesn't block so I can type, which causes the other problem | 04:14 | ||
4. at runtime, 'redo' is not allowed inside a bare nested block like in perl 5 ... | |||
eg, I had a plain { ... redo; } block in my code ... | 04:15 | ||
if the user says to quit, it does a 'last' to leave the block; otherwise it will 'redo' the block | |||
Pugs gives me an error saying I can't redo outside of a loop, though in perl 5 a bare block was a loop of one | 04:16 | ||
now, temporarily doing "while (1) { ... }" does run, but I preferred the other approach ... perhaps wrongly | |||
eric256_ | dduncan.. its my $name = =$*IN; | 04:17 | |
dduncan | okay, will try that ... | 04:18 | |
I remember the specs saying otherwise, but that's fine | |||
eric256_ | $*OUT.print("hello"); | ||
= is shift on an interator. and $*IN is a filehandle interator i beleive. /me goes to search specs | 04:19 | ||
feather.perl6.nl/~eric256/t_index/t...io/io.html | |||
dduncan | looking ... | ||
eric256_ should link those to actual specs... off and searching | 04:20 | ||
dduncan | note that the code I'm debugging was written in spring/summer and never executed until now, since it was in POD before | ||
thanks for the help | |||
eric256_ | np | ||
personaly i hated the print $FH $string; | |||
didn't fit the syntax of *anything* else. so hopefully they move to the $fh.print($string) completly | 04:21 | ||
S03/New Operators last bullet | 04:22 | ||
dduncan | curiously, it seems that $*ANYTHING.print( ... ) will print, so I'm guessing that the name is being ignored by Pugs for now | 04:26 | |
eric256_ | lol | ||
dduncan | ANYTHING being a string of letters | ||
eric256_ | didn't know that. | ||
dduncan | having the * causes the undeclared var warning to hit be tripped, whereas $ANYTHING will give an error I think | 04:27 | |
azuroth | that's interesting | ||
dduncan | also, $ERR is accepted as something to print off of | 04:28 | |
eric256_ | $test.print("hello") doesn't error. hmm | ||
azuroth | so "my $a; $a.print();" works too | ||
dduncan | in fact, even $user_text.print(), which is a declared lexical variable of type Str, will print its argument as usual | ||
in any event ... | 04:29 | ||
during the short term having Pugs be too permissive is okay, since at least correct code will run | |||
and being too permissive is what this is | |||
okay, so my #1 is fixed | 04:30 | ||
okay, my #3 is also fixed ... input is taken and the main loop either reloops or ends on appropriate input | 04:35 | ||
okay ... | 04:38 | ||
5. named arguments don't seem to be getting passed in correctly | |||
or as I expected | |||
currently I declare that I want to take named arguments by prefixing the argument name with a :, like this: | 04:40 | ||
submethod BUILD (Str :$msg_key!, Any :%msg_vars? = hash()) { | |||
it seems that a Pair object is being stored in $msg_key for example, and not the value of the pair as I would have expected | |||
I only expect a Pair object to be stored if I declared like ... | 04:41 | ||
submethod BUILD (Str $msg_key!, Any %msg_vars? = hash()) { | |||
eric256_ | ?eval sub test ( :$msg ) { $msg.perl.say }; test( :msg("hello") ); | 04:54 | |
evalbot_7933 | \"hello" bool::true | ||
eric256_ | ?eval sub test ( :$msg ) { $msg.perl.say }; test( ( msg => "hello") ); | ||
evalbot_7933 | ("msg" => "hello") bool::true | ||
eric256_ | ?eval sub test ( :$msg ) { $msg.perl.say }; test( msg => "hello" ); | ||
evalbot_7933 | \"hello" bool::true | ||
eric256_ | that help? | ||
eric256_ whistles | 04:59 | ||
azuroth plays the beer bottle | 05:03 | ||
eric256_ | anyone who knows haskell around? | 05:12 | |
azuroth | I know a little | 05:14 | |
eric256_ | actualy nevermind. lol. | 05:15 | |
azuroth | heh, okay | ||
eric256_ | it appears that print on haskell is almost entirly ignoring the handle given it...i think | ||
azuroth | ahh | 05:16 | |
eric256_ | actualy...hmm | ||
f handle . concatMap encodeUTF8 $ strs | |||
where f will be hPutStr.... haskell just defaults to stdout if the handle is invalid? | |||
eric256_ searches for info hPutStr | 05:17 | ||
azuroth | I'm not that far yet :-) | 05:18 | |
eric256_ | ?eval my $x = "hello"; $x.print; | ||
evalbot_7933 | hellobool::true | ||
eric256_ | duh.. of course print works on variables!! ;) | 05:19 | |
?eval my $*test = 5; $test = 6; $*test.print("==5\n"); $test.print("==6\n"); | 05:20 | ||
evalbot_7933 | Error: Undeclared variable: "$test" | ||
eric256_ | ?eval $*test = 5; $test = 6; $*test.print("==5\n"); $test.print("==6\n"); | ||
evalbot_7933 | 6==5 6==6 bool::true | ||
eric256_ | so $*whatever is just $whatever, if it happens to be a file handle then it prints to the file handle. other wise it prints the string.. /me wonders about that. | 05:21 | |
?eval "hello".print("world"); | |||
evalbot_7933 | helloworldbool::true | ||
eric256_ | seems a little weird. | ||
azuroth | $*blah just means it's global, IIRC | 05:22 | |
eric256_ | are twigils then just visual cues with no actual effect? or is the effect just not present in pugs yet? | ||
azuroth | it appears to have at least some effect - no strictness | 05:23 | |
eric256_ | how do you figure? | 05:24 | |
azuroth | ?eval $*blah = 5; | 05:25 | |
evalbot_7933 | \5 | ||
azuroth | ?eval $blah = 5; | ||
evalbot_7933 | Error: Undeclared variable: "$blah" | ||
eric256_ | but | ||
?eval $*blah = 5; $blah =6; $blah; | |||
evalbot_7933 | \6 | ||
azuroth | ?eval $*blah = 2; {$blah = 1;} say $blah; | 05:26 | |
evalbot_7933 | Error: unexpected "s" expecting term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
azuroth | ?eval $*blah = 2; {$blah = 1;}; say $blah; | ||
evalbot_7933 | 1 bool::true | ||
azuroth | ?eval {$*blah = 1;}; say $blah; | 05:27 | |
evalbot_7933 | 1 bool::true | ||
eric256_ | righ tbut $* is declaring blah, so twigils don't create there own name spaces. | ||
azuroth | $blah looks for $blah, then it'll look for $*blah ? | 05:28 | |
eric256_ | ?eval my $x = "test"; {$*x="nope";}; $x; | ||
evalbot_7933 | \"test" | ||
eric256_ | confusing | ||
azuroth | heh. yeah | ||
eric256_ | ?eval our $x = "test"; {$*x="nope";}; $x; | ||
evalbot_7933 | \"test" | ||
eric256_ | ?eval our $x = "test"; {$*x="nope";}; $x ~ $*x; | 05:29 | |
evalbot_7933 | "testnope" | ||
eric256_ | ?eval {$*x="nope";}; my $x = "test"; $x ~ $*x; | ||
evalbot_7933 | "testnope" | ||
eric256_ | ?eval {$*x="nope";}; $x = "test"; $x ~ $*x; | ||
evalbot_7933 | "testtest" | ||
eric256_ | thats gotta just be a bug in pugs | ||
azuroth | no, I'm sure it's right | 05:30 | |
$*x is like... $*::x, isn't it? | |||
eric256_ | not that i know of no | ||
azuroth | hmm, okay | ||
eric256_ | and if so. shouldn't the only way to access it be $*x ? | ||
azuroth | but it's making it in an outer scope | 05:31 | |
so it's just like my $a = 0; {$a = 5;} right? | 05:32 | ||
eric256_ | i think my point is... if you let people decaler globals inline with $* then they should only be accesible that way. otherwise they should have to pre-declare it somewhere earlier. but i wasn't just concerned with *, the other twigils too | ||
azuroth | ?eval my $x = 0; {my $OUTER::y = 1;} say $y; | ||
evalbot_7933 | Error: unexpected "s" expecting term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
azuroth | ?eval my $x = 0; {my $OUTER::y = 1;}; say $y; | ||
evalbot_7933 | pugs: out of memory (requested 1048576 bytes) | 05:33 | |
azuroth | whoa. how did that happen | ||
hmm. yeah, I suppose so | |||
eric256_ | ?eval my $x = 0; {my $OUTER::x = 1;}; say $x; | ||
evalbot_7933 | 1 bool::true | ||
eric256_ | obviose lookup trouble with $OUTER there. | ||
azuroth | I guess you aren't meant to do that | 05:34 | |
eric256_ | ?eval { my $x; { $OUTER::y = 1 } }; | 05:35 | |
evalbot_7933 | pugs: out of memory (requested 1048576 bytes) | 05:36 | |
azuroth | ?eval $*a = 2; say $::a; | ||
evalbot_7933 | 2 bool::true | ||
eric256_ | ?eval my $x; $::x = 5; | 05:37 | |
evalbot_7933 | \5 | ||
eric256_ | ?eval my $x = 5; $::x; | ||
evalbot_7933 | \5 | ||
eric256_ | ?eval { my $x = 5; $::x;} | ||
evalbot_7933 | \5 | ||
eric256_ | ?eval my $x = 5; $*::x; | 05:38 | |
evalbot_7933 | Error: unexpected "*" expecting "::" | ||
azuroth | ?eval $*a = 40; say $::("*::a"); | ||
evalbot_7933 | bool::true | ||
eric256_ | ?eval { my $x = 5;} $::x; | 05:39 | |
evalbot_7933 | Error: unexpected "$" expecting term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
eric256_ | ?eval { my $x = 5;}; $::x; | ||
evalbot_7933 | Error: Undeclared variable: "$x" | ||
eric256_ | ?eval { $*x = 5;}; $::x; | ||
evalbot_7933 | \5 | ||
eric256_ | seems broken that an inner block can do something to make the outer blocks syntax valid...but i've always been anti global so maybe that sjust built into me | 05:40 | |
azuroth | it's not quite global, interestingly | ||
wait, never mind | 05:41 | ||
eric256_ | ?eval {{ $*x = 5;}; $::x}; | ||
evalbot_7933 | Error: unexpected "{" expecting program | ||
eric256_ | ?eval {1; { $*x = 5;}; $::x}; | 05:42 | |
evalbot_7933 | \5 | ||
eric256_ decides it must be time to sleep because this makes less since the more i look | |||
azuroth | hehehe | ||
good night | 05:43 | ||
eric256_ | ?eval {1; { $*x = 5;}; $GLOBAL::x}; | ||
evalbot_7933 | \undef | ||
eric256_ | ?eval { $*x = 5;}; $GLOBAL::x; | ||
evalbot_7933 | \undef | ||
eric256_ raise eye brow... night | |||
azuroth | yeah - weird eh | ||
dduncan | so, does Perl 6 have a 'throw' keyword for exceptions, or do we have to use 'die'? | 05:50 | |
if so, Pugs doesn't support it yet | |||
in the form throw Foo | |||
azuroth | there's fail and die, that I know of | ||
fail is like die iff use fatal is on, I believe | 05:51 | ||
dduncan | I just want to be able to say "throw 'foo' if bad_stuff" | 05:52 | |
kind of like how die was used in perl 5 | |||
azuroth | die $exception if bad_stuff | ||
should do the trick... | |||
dduncan | but is 'die' part of the perl 6 spec? ... looking | 05:53 | |
azuroth | pretty sur | ||
sure | |||
synopsis four has a bit | |||
dduncan | all right then, I'll use die | 05:57 | |
okay ... | 06:12 | ||
azuroth | what's up? | 06:13 | |
dduncan | 6. Pugs doesn't seem to execute a CATCH block yet ... | 06:14 | |
azuroth | ahh | ||
dduncan | a surrounding try block will trap an error, but its catch isn't executed | ||
however, the perl 5 method of testing $! seems to work | 06:15 | ||
azuroth | ?eval { die "monkey"; CATCH { when "monkey" { say "yes"; }; }; }; | ||
evalbot_7933 | Error: monkey | ||
azuroth | I wonder if there's a todo test for that. :-) | ||
dduncan | I didn't put a semicolon after the CATCH, ... | 06:16 | |
azuroth | doesn't matter; it takes pascal style semicolons AFAIK | ||
oh, whoops. should be CATCH "monkey" { }; apparently | 06:18 | ||
but it's todo'd | |||
dduncan | in this case, I'm wanting to catch an object | ||
I expected that a plain CATCH will catch anything | 06:19 | ||
azuroth | I guess so. or maybe CATCH true {} | ||
dduncan | will try that ... it parses okay with just the CATCH {} though | ||
no dice ... currently, "CATCH anything {}" won't compile, only "CATCH {}" will | 06:22 | ||
svnbot6 | r7934 | Darren_Duncan++ | r803@Darren-Duncans-Computer: darrenduncan | 2005-11-11 22:55:28 -0800 | 06:56 | |
r7934 | Darren_Duncan++ | /ext/Rosetta-Incubator : in Locale::KeyedText and the examples, replaced all 'throw' calls with 'die', fixed several syntax bugs, and worked around temp worked around a few Pugs deficiencies ... the examples still don't execute yet | |||
dduncan | well, thats it for me today | ||
7. another issue I discovered is that "die Foo.new(); ... $!.does(Foo)" returns false, while "Foo.new().does(Foo)" returns true ... that's a simplification of the actual code that isn't tested, but its my interpretation of a problem, while both items stringify to the same thing that are being called .does() on | 07:00 | ||
to see the problem, run the example MyApp.p6 that I checked in, type something and hit return | 07:01 | ||
a bad input exception is tossed by translate_message() when $! is its (indirect) argument, while it doesn't otherwise, and said arguments, stringified in show_message() before calling translate, both stringify to the same thing, "<obj:Locale::KeyedText::Message>" | 07:03 | ||
the issue here may be something like transparent exception objects, I would guess | 07:04 | ||
when I say "type something", I mean type letters, which are bad input | 07:05 | ||
azuroth | that's interesting | 07:07 | |
?eval try { die Str.new(); }; say $!.does(Str); | 07:08 | ||
evalbot_7934 | 1 bool::true | ||
azuroth | ?eval try { die Int.new(); }; say $!.does(Str); | ||
evalbot_7934 | 1 bool::true | ||
dduncan | the problem may be indirection ... I did simplify it in what I typed here | ||
you can see the actual case in the checkin | |||
suffice it to say that I don't plan to write more perl 6 modules until the Locale::KeyedText works, since I would be doing a lot of the same stuff in others, only more complicated versions, and I prefer to be "copying" something that works ... that doesn't mean I can't write design docs though, or code the perl 5 versions | 07:15 | ||
r0nny | yo | 07:56 | |
azuroth | hey hey | 07:57 | |
xinming | seen autrijus | 10:31 | |
jabbot is away. :-/ | |||
dakkar | once upon a time there used to exist a tarball to jump-start a SVK mirror of the main Pugs repository... what happened to it? | 12:32 | |
Juerd | I have no idea. | 12:47 | |
If you have little bandwidth, consider using feather for your pugs experimentation. | |||
dakkar | it's not *my* bandwidth I'm worried about... I don't want to hog the repository servers | 12:51 | |
Juerd | seen autrijus | 12:52 | |
ENOBOT? :( | |||
dakkar: I think you shouldn't worry about that :) | 12:53 | ||
dakkar | ok, I'll start a "svk mirror", then | 12:54 | |
integral | or you just use sync's --skipto option :) | 12:58 | |
dakkar | integral: the whole point was to have the full history ;-) | 13:00 | |
integral | ah | ||
the *whole* full history? there's quite a bit by now :) (almost 8000 rev! wow) | 13:01 | ||
dakkar | yes, I noticed. makes for an interesting read ;-) | ||
Juerd | dakkar: You could set up a compressing ssh port redirect on feather. Feather has a local svk mirror. | 13:02 | |
integral | oh, you could make your own jump-start tarball with feather too :) | ||
Juerd | I guess :) | 13:03 | |
xinming | Did antrijus back to TaiWan? | 13:09 | |
Juerd | I have no idea, but I am starting to miss him around here. | ||
xinming | I miss him for commiting critical things. :-P | 13:10 | |
hmm, I just get habit into read his journal... | 13:11 | ||
s/read/reading/ | |||
Juerd | Heh, feather runs 8 irssis | 13:30 | |
r0nny | rafl: how about the mirror ? | 13:52 | |
crack-attack | 13:53 | ||
ops | |||
dan the focus problems if the muse isnt where i think it is | |||
Bit-Man | Hi all | 14:28 | |
Just a little question | 14:29 | ||
I'm starting to dig in PErl 6 and in Pugs, so I'm wondering if there's a Devel::Peek (or similar) for Perl 6, where I can dump() the internals for a given data structure | 14:30 | ||
Hello ... anyone awake ?? :-D | 14:44 | ||
dakkar | awake, yes; capable of an answer, no ;-) | 14:47 | |
Bit-Man | dough | ||
joepurl | xinming: hello | 14:51 | |
xinming | joepurl: Sorry, I was in ZheJiang, Not BeiJing, :-/ | 14:56 | |
joepurl | sorry for mistake | ||
xinming | joepurl: Are you in MainLand? | 14:57 | |
joepurl | xinming: yes | ||
xinming | joepurl: where are you by the way? | ||
I was ever in BeiJing, But Now, back | |||
joepurl | xinming: understand, maybe we can have a hangzhou meeting | 14:58 | |
xinming | ... | ||
why not WenZhou. :-/ | 14:59 | ||
joepurl | wenzhou a good idea xinming | ||
another perlchina member is at there as i know | |||
xinming | joepurl: hmm, No, I don't think so, people here around are all going to do business instead of learning computing. | 15:00 | |
joepurl: who is it please? | |||
joepurl | xinming: it's é£éØēŗµęØŖ/julius | 15:01 | |
xinming | ok,thanks | ||
joepurl | the one who is in charge of textdb band of the perlchina bbs | 15:02 | |
welcome | |||
xinming | too few people here tend to learn perl. most people think that Java is good enough for making money. ;-) | 15:03 | |
joepurl | they are in need of good news deliver like you | 15:04 | |
xinming | joepurl: No, I am a newbie also. :-/ But In my understanding, that learning perl is lots of fun, | 15:06 | |
joepurl: just tell them to try it. they will love it. ;-) | |||
especially pugs. an implementation of perl 6. :-) | 15:07 | ||
raptorXXX | here is comparison of the programmer language speeds : | 15:12 | |
shootout.alioth.debian.org/index.ph...rt=fullcpu | |||
what i see is that perl wins in most of cases for shorter programs | |||
but in speed looses from many competitors | 15:13 | ||
revdiablo | raptorXXX: I can't trust a page that says, "Perl -- Server-side shell & CGI scripts" | ||
raptorXXX | it wins over php,python and ruby though :) | ||
revdiablo | Sorry, it just makes me suspicious. | ||
raptorXXX | yep i saw that too | ||
that is why java seems faster :) | 15:14 | ||
xinming hopes that parrot will have a module just like mod_parrot | 15:17 | ||
and even a module which will be embed into Linux Kernel. :-P | 15:18 | ||
obra | xinming: what do you mean a module like mod_parrot? It already has mod_parrot, no? | 15:19 | |
xinming | obra: Sorry, I don't know about this, :-/ | ||
obra: what I mean mod_parrot is a bit like mod_perl, for apache server | 15:20 | ||
revdiablo | www.smashing.org/mod_parrot/ | 15:21 | |
xinming | and if the parrot vm can be compiled into kernel, It might be perfect. :-) | 15:23 | |
revdiablo: thanks. | |||
But please don't tell me there is already a project which port parrot vm into kernel. :-P | |||
revdiablo | Not that I know of... | 15:24 | |
dakkar | someone might write a binfmt_misc handler to run compiled parrot files directly | 15:26 | |
there's one for Java classes... | |||
xinming | dakkar: hmm, If I don't guess wrong, parrot can compile pbc file into binary | 15:27 | |
s/can/will be able to/ | 15:28 | ||
or gnu compiler will be able to do this. | 15:29 | ||
dakkar | with "binary" meaning "native machine-code"? say, a ELF image? true, but we were talking about strange uses ;-) | ||
xinming is thinking, what the world will be like, if all the programs are written in perl :-P | 15:30 | ||
I know there is distribution (perl-linux?), the team has done many programs. But I'd rather prefer using perl 6 instead of perl 5. As programming in perl 5 on large program isn't fun. | 15:32 | ||
raptorXXX | perllinux.sourceforge.net/ , he cool | 15:48 | |
xinming | raptorXXX: If perl 6 is out, and linux kernel has parrot module built-in, another crazy thing will happen... :-P | 15:52 | |
svnbot6 | r7935 | yiyihu++ | Add 3 sub test for variable $?CLASS | ||
xinming | ?eval class A { method test { $.a = 1 } }; A.new.test; | 16:04 | |
evalbot_7935 | \1 | ||
xinming | bug? | ||
theorbtwo | Looks just fine to me. | 16:06 | |
?eval class A { method test { $.a = 1; 'ret' } }; A.ne.test; | |||
evalbot_7935 | Error: No compatible subroutine found: "&test" | ||
theorbtwo | ?eval class A { method test { $.a = 1; 'ret' } }; A.new.test; | 16:07 | |
evalbot_7935 | "ret" | ||
theorbtwo | Yeah, just fine. | ||
xinming | theorbtwo: No, I mean the $.a | ||
theorbtwo: IMHO, the attributes must be declared first. | |||
theorbtwo | Oh, you mean it should die, because it's attempting to set a bad attribute? | ||
xinming | theorbtwo: Yes. | 16:08 | |
hmm, But not sure about this | |||
theorbtwo | Hm, you may be right about that -- perhaps it changed while we weren't paying attention? | ||
xinming | bbl. | ||
svnbot6 | r7936 | yiyihu++ | access or assgin on undeclared attribute will raise an error. Add test | 16:39 | |
dakkar | ?eval class A { method test { $.a = 1 } }; A.new.test; | 16:41 | |
evalbot_7936 | \1 | ||
dakkar | ehm | ||
rafl | dakkar: He only added the tests, not an implementation. | 16:53 | |
see t/oo/attributes/undeclared_attribute.t | |||
dakkar | oh | ||
xinming | dakkar: I am not clever to do this... :-/ | 16:58 | |
dakkar | xinming: I'm not even able to find the place to change ;-) | 16:59 | |
xinming | dakkar: I just know where the test is, and dance there. | 17:03 | |
dakkar | looks like something should be changed in Eval.hs, function applyExp | 17:07 | |
gaal | meow | 17:13 | |
17:16
Lopo_ is now known as Lopo
|
|||
Limbic_Region | Is it just me, or is pugs painfully slow these days? | 18:14 | |
wolverian | is anyone coding a perl6->java translator? | 21:13 | |
(or even thinking about one) | |||
liz6 | perl(5|6) <=> java would be interesting for my current client | 21:15 | |
if you would call that thinking about it... ;-) | |||
acme has done some preliminary work on parrot -> java byte code | |||
autrijus | well, we do have a pretty good JVM codegen | 21:16 | |
liz6 | almost 3 years ago ;-( | ||
autrijus | I mean emitter | ||
wolverian | hmm, there's a java backend in pugs as well. | ||
right. | |||
autrijus | so just have to hook the codegen into it | ||
liz6 | hi autri! | ||
autrijus | greetings. jet lag been less than kind to me | ||
wolverian | autrijus, how trivial is that, do you know? | ||
augh :( | |||
autrijus | wolverian: mostly it'll be the flow part that's hard -- native continuations in java not trivial | 21:17 | |
liz6 | autri: no pb, I know what it's like flying east (coming back from the US) | ||
autrijus | otoh we can build on Rhino architecture, which is going to Java1.6 anyway | ||
wolverian | rhino? | ||
autrijus | liz6: yeah, it's much harder | ||
wolverian: mozilla rhino, the dynamic runtime for java people, currently just for js but not neccessarily | |||
they do have proper, reentrant, serializable, continuations | 21:18 | ||
and a bunch of dynamic-static bindings that is going to be useful if we are to use native java libs | |||
wolverian | that sounds nice | ||
is it related to spidermonkey? | 21:19 | ||
autrijus | sure -- brendan mentioned spidermonkey going to lift that (continuations) from rhino | ||
they are separate projects but maintained by same bunch of people | |||
wolverian | that seems a bit odd | 21:20 | |
autrijus | well, spidermonkey is in ANSI-C, and rhino is in Java | 21:21 | |
leo | hi autrijus (parrot) 22:14 <+svnbot6> r9929 - lexicals 10 - find_lex, store_lex * example from pdd20 synopsis works verbatim - Yay & yay! | 21:22 | |
wolverian | autrijus, oh! I didn't know. sorry. | ||
autrijus | no need to be sorry | ||
leo: oh wow! | |||
wow! | |||
that was.... quick | 21:23 | ||
I figured out how to codegen yesterday | |||
leo | well - today ;-) | ||
autrijus | but did not get around to code it in | ||
now I am _definitely_ motivated | |||
leo | gimme another day for :outer9sub) - closures - then we are set | ||
liz6 considers herself lucky to be witnessing this | |||
leo | s/9/(/ | 21:24 | |
autrijus | leo: okay, I'm going to need that, but it'll take at least a day for me anyway | ||
leo++ leo++ # fantastic | |||
wolverian | whoa, nice. leo++ | ||
liz6 | autri: about 2 hours before daylight where you are, right? | ||
leo | thanks folks and thank chip for a very same pdd20 that is easy to follow | 21:25 | |
autrijus | liz6: yes | ||
liz6 | autri: what jetlag? you're always in your timezone anyway ;-) | 21:26 | |
s/your/your own/ | |||
autrijus | liz6: I'm not used to get my sleep in 3hr slices :) | ||
once that's fixed, sure, I don't quite care about TZ | |||
wolverian | random thought: now that I've used java for a month or so regularly, I'm pretty sure eclipse is the best thing about it. | 21:31 | |
I want perl6 to have similar tools. | 21:32 | ||
autrijus | and the reason that eclipse can be so good is it's populated with static knowledge | ||
wolverian | yes. | ||
(I want to see what EPIC + PPI would look like, though.) | |||
autrijus | separate compilation, early binding, type inferencing, etc | 21:33 | |
PPI doesn't solve the late binding problem which is detrimental to refactoring | |||
integral | hmm, does perl6 do the 2nd and 3rd? | ||
autrijus | integral: yes and yes (S12) -- but currently specced as only if you ask for it | 21:34 | |
aka vb.net, "option strict on" | |||
wolverian | i.e. type inferencing? | ||
autrijus | currently @Larry is giving the language strict and lax sugars for mixed inferencing and noninferncing uses | 21:35 | |
sub foo (Int --> Int) { ... } # subject to inference | |||
sub foo (Int) returns Int { ... } # only the parameter side is, not the return side | |||
but the details are murky, though it's for the "types" milestone; currently solid OO bootstrap is still more urgent | 21:36 | ||
wolverian | does type inferencing equal static typing? | ||
autrijus | no, not neccessarily, as you can infer certain terms to be untyped | 21:37 | |
or runtime-checked | |||
wolverian | right. but that makes it harder for tools such as eclipse? | ||
(sorry - trying to get these things straight in my head) | 21:38 | ||
integral | hmm, with that does that mean everything can be type-inferred? Unlike haskell/omega/etc where you need some type signatures to force a particular typing? | ||
autrijus | integral: general recursion is part of p6... ;) | 21:39 | |
(which means, annotation is going to be needed, and we can't escape that) | |||
but in absense of any strictitude and optimization and annotation | |||
we just fallback to ruby^Wperl5 mode | |||
i.e. essentially duck typing | 21:40 | ||
integral | run-time checked duck typing :) | ||
autrijus | perfect if you want to redefine postcirfumfix:<( )> :) | ||
which might be like, unimaginable sin for lambdafolks | 21:41 | ||
integral thinks it's a bit of a shame you have to do that, rather than a default postcircumfix:<( )> redispatching to some Code::apply method | |||
autrijus | I think the rule is that "apply" is too short for this powerful/rare a feature | 21:42 | |
so calling it "apply" woudl be mishuffmanizing | |||
wolverian | I don't like ( ) because I don't always use ()s when calling code. | ||
autrijus | but it's in the ergonomics domain :) | ||
integral | umm, but it's got a namespace attached... | ||
autrijus | integral: true... | ||
class Hash is extended does Callable { method apply { ... } } | 21:43 | ||
integral | it's huffmanised locally (within it's namespace); but not globally | ||
autrijus | something like that? | ||
integral | yep | ||
autrijus | it's trivial to write the role Callable and just wraps apply for pc:<()> | ||
wolverian: hm? how can you call %ENV(3) or $dbh(9) without ()? | 21:44 | ||
integral | umm, I'm sort of assuming you can have Foobar::baz and Wibble::baz and can somehow avoid duck-typing those to be the same thing (to be more like qualified imports of haskell's methods) | ||
autrijus | the "say 123" decomposing to &say.postcircumfix<( )>(3) is purely sugar | ||
azuroth | morning | ||
autrijus | integral: I think you need annotation to avoid that | ||
integral | hmm | ||
autrijus | say, Foobar does Bazable | 21:45 | |
but wibble does not | |||
so if you annotate it as such that you want a a Bazable | |||
then ducktyping no longer applies | |||
integral | yeah, that's sensible :) | ||
autrijus | but it's going to be the default for rapid prototyping, and I think it's just as well | ||
("it" = dynamic ducktyping) | |||
azuroth: greetings | |||
integral | hmm, if I do: $something.Callable::apply, that'll turn off duck-typing too, so $something really has to do Callable | 21:46 | |
autrijus | yes, sure | ||
integral | factoring your interface out of your classes seems a perfect thing to do later. Even better in your fancy GUI editor :) | ||
azuroth | I was kicked out of bed. :-( | 21:47 | |
autrijus | verily verily | ||
actually, Callable is not a bad idea at all | |||
but I'll stick with postcircumfix:<()> as it's easier for the runtimes; once roles are properly established we can always revert | 21:48 | ||
s/revert/refactor/ | |||
wolverian | azuroth, actually kicked? o.O | ||
autrijus | azuroth: aw :/ hopefully not kickbanned | ||
azuroth | not actually kicked, but the effect is similar | 21:50 | |
time to play with postgresql now, though | 21:53 | ||
autrijus goes catching another 3hr slice of sleep & | 22:00 | ||
liz6 | good night, autri | ||
dream good dreams... | |||
autrijus | :) *wave* & | 22:01 | |
obra | 'night, autrijus | ||
buu | ?eval 1 | 22:24 | |
evalbot_7936 | 1 | ||
svnbot6 | r7937 | autrijus++ | * simonf on perlmonks (and iirc, lwall also) reported that | 22:38 | |
r7937 | autrijus++ | on FC4, somehow the Cwd/RealBin test fails in Module::Install | |||
r7937 | autrijus++ | code. Try to fix this be appealing to Cwd::abs_path and | |||
r7937 | autrijus++ | add some better diagnostics. | |||
liz6 wonders what would happen if the same coro would be called by 2 threads at the same time | 22:41 | ||
integral seems to remember something saying that a coro was a thread itself? | |||
liz6 | and then there's others that simply think of a coro as a subroutine that has all of its own context | 22:43 | |
and that you wouldn't need threads to do a coro | |||
integral feels sort of justified for hating coros | 22:44 | ||
liz6 is just not sure how coros and threads will mix | 22:45 | ||
integral | threads have clear semantics; continuations have clear semantics; coros seem to be prefered when people can't figure out what they actually want :-/ | 22:46 | |
hmm, and a lazy gather/take covers infinite streams | |||
svnbot6 | r7938 | liz++ | Some more work on docs/AES/S17draft.pod, | 23:32 | |
r7938 | liz++ | still not sure about the right order in | |||
r7938 | liz++ | which describe stuff. But what can you | |||
r7938 | liz++ | expect from attempting to describe | |||
r7938 | liz++ | concurrency ;-) |