Pugs 6.2.6 uploaded by cpan-upload.p6! | pugscode.org/ <Overview Journal Logs> | pugs.kwiki.org | paste at sial.org/pbot/perl6 Set by integral on 2 June 2005. |
|||
geoffb | Limbic_Region: I will do so, when I have a nice minimal case of the bug(s). | 00:01 | |
Yes I know he's gone, but someone else mentioned that he reads the backlog | 00:02 | ||
wolverian | opendir('.').kv seems to hang. | 00:04 | |
geoffb | Ah, yes, almost got the full looper puzzle fixed (just have a spurious extra call to the $code at the end of the iteration to get rid of) | 00:21 | |
but now time for dinner. | |||
AFK for a while | |||
eric256 | i fixed the svnbot the other day and the copy i have running ran without trouble through the night...so if somebody was running it before feel free to invite it in...other wise i could run it on my feather account if thats okay with Juerd | 00:36 | |
theorbtwo | eric256: I suspect it is. | 00:37 | |
jabbot | pugs - 4333 - Code::pos method (not quite working?) | ||
theorbtwo | I just checked in a ::Code.pos method... but I'm not quite sure it's working correctly. | 00:38 | |
It seems to give -e 1 1 1 1 far too often. | 00:39 | ||
eric256 | or jabbot is still running. lol. didn't know taht | ||
theorbtwo | jabbot is still running. Having both wouldn't be horrible. | 00:41 | |
jabbot | pugs - 4334 - More information on entering oddball cha | 01:07 | |
geoffb | *urp* | 01:10 | |
autrijus | eric256: you can invite svnbot6 using /msg svnbot6 ?join #perl6 | 01:16 | |
(I hacked that feature in a while ago) | |||
btw, rehi \camels! | |||
sri_ | should i port Carp? | ||
geoffb | hello there | ||
autrijus | sri_: maybe. currently our die"" gives full stack trace anyway | ||
sri_ | yea, thats why i'm askin ;) | 01:17 | |
jabbot | pugs - 4335 - Prettify .pos output. (Should be conver | ||
sri_ | btw, better errors would be very nice, not just the sub or method it can't parse :) | 01:18 | |
autrijus | sri_: oh, that :) | ||
?eval sub { (( } | |||
evalbot6 | Error: unexpected "}" expecting expression | 01:19 | |
autrijus | ?eval sub { )) } | ||
sri_ | made my head smoke a few times now | ||
evalbot6 | Error: unexpected ")" expecting ";", statements or "}" | ||
autrijus | hm, how do you trigger that? | ||
(a parse error reported at the sub{} level) | |||
any examples? | |||
?eval sub { 1 ? 2 : 3 } | |||
evalbot6 | Error: unexpected "?" expecting operator, postfix conditional, postfix loop, postfix iteration, ";" or "}" | ||
autrijus | ?eval sub foo { 1 ? 2 : 3 } | ||
evalbot6 | Error: unexpected "?" expecting operator, postfix conditional, postfix loop, postfix iteration, ";" or "}" | ||
autrijus | ?eval sub foo { 1 + } | ||
evalbot6 | Error: unexpected "}" expecting term | ||
autrijus | these all look okay to me | 01:20 | |
sri_ | can't trigger it with a oneliner... | ||
autrijus | it's (horrors) multiline specific? | ||
sri_ | dunno, trying to write a testcase | 01:21 | |
autrijus | danke | ||
sri_ | pugs -e 'class Foo; method bar { my $re = m:P5/\// }' | 01:23 | |
autrijus | ?eval sub bar { my $re = m:P5/\// } | ||
evalbot6 | Error: unexpected "}" expecting term | ||
autrijus | ?eval class Foo; method bar { my $re = m:P5/\// } | 01:24 | |
evalbot6 | Error: unexpected "m" expecting ";" or end of input | ||
autrijus | ?eval method bar { my $re = m:P5/\// } | ||
evalbot6 | Error: unexpected "}" expecting term | ||
autrijus | hrmph. | ||
?eval 1; method bar { my $re = m:P5/\// } | 01:25 | ||
evalbot6 | Error: unexpected "m" expecting ";" or end of input | ||
autrijus | aha. | ||
?eval 1; sub bar { my $re = m:P5/\// } | |||
evalbot6 | Error: unexpected "s" expecting ";" or end of input | ||
autrijus | ?eval 1; sub bar { 1+ } | ||
evalbot6 | Error: unexpected "s" expecting ";" or end of input | ||
autrijus | ?eval 1; sub { 1+ } | ||
evalbot6 | Error: unexpected "s" expecting ";" or end of input | ||
autrijus | ?eval 1; { 1+ } | ||
evalbot6 | Error: unexpected "{" expecting ";" or end of input | ||
autrijus | ?eval { 1+ } | ||
evalbot6 | Error: unexpected "}" expecting term | ||
autrijus | got it! | ||
sri++ | |||
autrijus fixeth | |||
kelan | autrijus: trinary operator is now ??:: | ||
sri_ | autrijus++ | ||
yes kelan | 01:26 | ||
autrijus | kelan: I know :o | ||
kelan | ok:) | ||
autrijus | ?eval 1 ā 2 ā· 3 | ||
evalbot6 | Error: unexpected "G" expecting operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
autrijus | fixed | 01:30 | |
running regression | |||
sri_ | autrijus++ | ||
autrijus | r4336. enjoy | 01:36 | |
svnbot6 | r4336, autrijus++ | * Parse error inside blocks is now reported on the occuring | ||
r4336, autrijus++ | position instead of on the beginning of block. Reported by | |||
r4336, autrijus++ | sri++ among many other people. | 01:37 | ||
meppl | gute nacht | ||
autrijus | g'nite meppl | ||
meppl | ;) | ||
autrijus | however that broke everything :D | ||
autrijus fixeth again | 01:38 | ||
fixed. | 01:41 | ||
sri_ | great, time to rebuild... | 01:42 | |
svnbot6 | r4337, autrijus++ | * oops, the last change broke trailing semicolon in | ||
r4337, autrijus++ | blocks. Unbreak it. | |||
autrijus | ?eval 1; { 1+ } | 01:43 | |
evalbot6 | Error: unexpected "{" expecting ";" or end of input | ||
geoffb | perlmonks.org/index.pl?node_id=463076 | 01:47 | |
Limbic_Region: See above. :-) | |||
jabbot | pugs - 4336 - * Parse error inside blocks is now repor | ||
pugs - 4337 - * oops, the last change broke trailing s | |||
geoffb | svnbot6 gives a nicer output than jabbot . . . . | 01:48 | |
autrijus | yeah. I invited jabbot back because svnbot6 was down | 01:49 | |
now that svnbot6 is back and functional maybe jabbot can be retired again | 01:50 | ||
geoffb | Is svnbot6 a strict superset of jabbot? | ||
autrijus | jabbot: is svnbot6 a strict superset of you? | 01:51 | |
jabbot | autrijus: You're not really talking about me -- are you? | ||
autrijus | geoffb: no, not really. :) | ||
geoffb: jabbot is also a chatbot among other things | |||
geoffb | gotcha | 01:53 | |
The t/README says not to mark parse bugs as todo => 'bug', but the t/pugsbugs/* do. Is the README wrong, or is the intention that on first creation, the test should fail, but if it makes it to the next release it is marked todo as a "long standing bug"? | 01:58 | ||
autrijus | 1. t/README predates :todo<bug> | 02:03 | |
so it needs to be revised | |||
geoffb | autrijus, ok, thanks | 02:04 | |
autrijus | and 2. the intention you outlined above is correct | ||
geoffb | ok | ||
autrijus | it helps us to tell regressions from new failures | ||
i.e. regressions is almost never tolerated | |||
but new failures is sometimes O.K. to be :todo<bug>'ed into next release | |||
want to help fixing t/README? do you have a committer bit? | 02:05 | ||
geoffb | So should I mark the short-circuit undef bug as todo or not? | ||
I'd be happy to, and no, not yet. | 02:06 | ||
nothingmuch | morning | ||
geoffb | I'm writing my first thing to commit -- the test for the short-circuit undef bug | ||
evening, nothingmuch | |||
autrijus | geoffb: let it fail, not todo. your email so I can send invitation to? | ||
(also add yourself to AUTHORS) | |||
geoffb | OK | ||
nothingmuch goes back to sleep | 02:07 | ||
Limbic_Region - i hope that it will be clarified by doing real work, and not discussing things to death. Try reading the haskell for C people tutorial and a bit of YAHT though. | 02:08 | ||
autrijus | geoffb: invitation sent. welcome aboard! | 02:11 | |
geoffb | autrijus, thanks! Will pick up in a bit. | ||
autrijus | hi Daniel_Nee | 02:46 | |
Daniel_Nee | Hi, Autrijus: Surprise ! You woke up so early. We still have some problems at IBT, is it convenient for you to come in this afternoon to help us ? | 02:55 | |
autrijus | how about, like, now | 02:57 | |
as I'm awake? :) | |||
Daniel_Nee | That's great ! | 02:58 | |
autrijus | ok... I'll meet you at $office in a bit | ||
Daniel_Nee | See you. | 02:59 | |
autrijus | :) & | 03:00 | |
?eval "123\012456" | |||
evalbot6 | '123ĆĀ£ĆĆĀØ' | ||
autrijus | ?eval "123 \x0d 456" | 03:01 | |
evalbot6 | '123 | ||
autrijus | mmm exploit. | ||
geoffb | OK, hopefully I did that correctly. | 03:05 | |
svnbot6 | r4338, geoffb++ | Test for undef coderef shortcircuit idiom cast failure; name in AUTHORS file as this is my first commit | 03:06 | |
geoffb | That looks promising | ||
svk++ | |||
autrijus | geoffb++ | ||
jabbot | pugs - 4338 - Test for undef coderef shortcircuit idio | 03:07 | |
gugod | hmm, svnbot is back | 03:08 | |
autrijus | yeah. jabbot can probably retire again | 03:09 | |
thanks for your help | |||
eric256 considers modifying svnbot to wrap long lines... | 03:42 | ||
geoffb | Limbic_Region: read through your first puzzle (the cribbage one). You said you were dissatisfied with the results . . . why? Because only revdiablo and dragonchild answered? Or because you expected something better than your final code? | ||
OK, away for a while | 03:43 | ||
revdiablo | geoffb: I think he meant he was dissatisfied by the number of replies | ||
geoffb | ah | ||
revdiablo | geoffb: usually the Monastery gets a lot more activity around "challenge" type posts | 03:44 | |
people there still seem to be wary of perl6 | |||
geoffb | Like dozens or hundreds of responses? | ||
revdiablo | no, usually 5-10 replies, sometimes maybe more... but 2 or 3 is a bit low | ||
geoffb | OK | 03:46 | |
I don't know if this was mentioned in the "why not p6" thread (haven't read that all), but some of the problem seems to be that people can't test a lot of their ideas because they bump into edge cases in pugs -- and I for one am nervous posting something that I can't test. | 03:47 | ||
Perhaps other PM users have the same neuroses. :-) | |||
revdiablo | the impression I got from the "Why not p6 thread", is that people are still waiting to see it shake out a bit more | 03:48 | |
eric256 | people are cowards! lol | 03:49 | |
but realy, most people don't like change, some of use thrive on it | |||
revdiablo waits for eric256's "Why are you cowards?" Meditation | |||
:) | |||
geoffb | I have a strong preference for my tools to be stable enough that most bugs will be my fault, and not my environment. | 03:52 | |
I'm making an exception for pugs because I really want to get SDL_perl working in Perl 6. :-) | |||
eric256 | there is a distinct difference between tools and toys thought. thinking of pugs as a tool is probably a mistake at this point | 03:53 | |
unless you consider it a tool for learning perl6 | |||
geoffb | nodnod | ||
yup | |||
OK, *really* going now | |||
revdiablo | bye geoffb | ||
Enveigler | jabbot: seen gaal? | 05:02 | |
jabbot | Enveigler: gaal was seen 12 hours 27 minutes ago | 05:03 | |
eric256 forgot his computer was hosting svnbot | 05:14 | ||
lol | |||
hey Juerd around? | |||
hmm i can't seem to convince my feather acount that it knows where net::irc is | 05:18 | ||
?since 4100 | 05:31 | ||
opps. | |||
svnbot6 | r4331, sri++ | Ported File::Find, first try for a new api, feedback welcome ;) | 05:32 | |
r4332, revdiablo++ | change version number | |||
r4333, theorbtwo++ | Code::pos method (not quite working?) | |||
r4334, mugwump++ | More information on entering oddball characters using emacs; perhaps this is growing beyond a quickref... | |||
r4335, theorbtwo++ | Prettify .pos output. (Should be converted to an obj with stringify | |||
r4335, theorbtwo++ | overloaded at some point.) | |||
r4336, autrijus++ | * Parse error inside blocks is now reported on the occuring | |||
r4336, autrijus++ | position instead of on the beginning of block. Reported by | |||
r4336, autrijus++ | sri++ among many other people. | |||
r4337, autrijus++ | * oops, the last change broke trailing semicolon in | |||
r4337, autrijus++ | blocks. Unbreak it. | |||
r4338, geoffb++ | Test for undef coderef shortcircuit idiom cast failure; name in AUTHORS file as this is my first commit | |||
eric256 | thanks for the recap dork bot | ||
lol | |||
autrijus | eric256: you can do this | 05:37 | |
make | |||
then ^C when it's compiling pugs | |||
then do | |||
./pugs -Iblib6/lib examples/network/svnbot.p6 ... | 05:38 | ||
(all this is done in a pugs checkout) | |||
the idea is that "make" will first put all the ext/ modules into blib6/lib | |||
so you can -I it easily | |||
eric256 | whats ^C do? | ||
autrijus | it's this ctrl-break thing | 05:39 | |
that sents a SIGINT to the "make" program to stop it from actually building pugs | |||
eric256 | ohh | ||
autrijus | peractually it's probably not needed | ||
just | |||
make subdirs | |||
will prepare the blib6/lib for you | |||
I think. | |||
gaal | autrijus, hi, i'm looking for the magic bit that causes fail (hence die) to print the stack trace. | 05:42 | |
autrijus | gaal: line 172 Eval | ||
gaal | is it in Eval.hs? | ||
autrijus | shiftT . const . return $ VError str (pos:posList) | ||
gaal | Thanks! | 05:43 | |
autrijus | then line 121 Pretty | ||
(vcat (map text $ split "\n" x) $+$ (text "at" <+> vcat (map format $ reverse posList))) | |||
but the latter is trivial. np :) | |||
haddocks welcome :) | |||
gaal | k | 05:44 | |
eric256 | i forgot that feather uses svk by default..and svnbot uses svn...what fun i'm having | 05:48 | |
lol | |||
gaal | hmm, i see that this uses a pre-filled [Pos] in the VError type. i'm surprised this doesn't walk the stack? | 05:49 | |
(i'm adding caller.) | |||
autrijus | gaal: well I guess you can walk the stack using envCaller and envPos | 05:50 | |
gaal: but since the error is propagated upon successive trapVal (dynamic scope error handlers) | |||
it seemed to me to be easier to just collect the stack | |||
gaal | that was what i intended to do, but then i backlogged and saw you mentiond die printed teh stack :) | ||
autrijus | gaal: the same mechanism will be used to implement "leave" exceptions in the future | ||
gaal | ahhhhh, right. | 05:51 | |
the way i'm seeing the demo version is a Pugs::Internal::caller in Prim, which returns a List, which Prelude's &caller can turn into an object. i kinda hate that design but didn't think of anything better | 05:54 | ||
Enveigler | In Embed/Parrot.hsc it issues "Cannot find the parrot executable in PATH", but 1) it's looking for 'parrot' which would need to be 'parrot.exe' on win, and 2) it doesn't actually seem to be looking through the path, just in the current subdir? Is there haskell code for picking apart envvars somewhere or does that need to be written? | 05:55 | |
gaal | Enveigler, hello | 05:56 | |
autrijus | gaal: get it to work first :) | 05:57 | |
Enveigler: have you added yourself to AUTHORS? | |||
gaal | was looking for you yesterday. i got your email but it was after a long day w/o computers at $work | ||
Enveigler | Morning Gaal/Autrijus. | ||
autrijus | Enveigler: I do believe findExecutable tries to add ".exe" on win32 | ||
Enveigler: at least some people reports that it works | |||
and findExecutable does handle the PATH thing | 05:58 | ||
I think | |||
gaal | would you still like me to post your smoke? | ||
alternatively ask Juerd for an account on feather (email him) so you can do this whenever you like yourself | |||
Enveigler | No AUtrijus, not yet. I haven't added anything to merit it yet. | 05:59 | |
gaal | i just didn't know what windows it was, interestingly the pugs -V data doesn't say. | ||
Enveigler | Um... OKay. findExecutable' is different from findExecutable? (Still finding my H-legs). | ||
autrijus | Enveigler: see the definition above | 06:00 | |
findExecutable' tries findExecutable first | 06:01 | ||
oh right. | |||
it needs the .exe | |||
stupid me. you++ | |||
so the upshot is findExecutable adds the .exe | 06:02 | ||
but in the fallback case | |||
we need to add the .exe ourselves | |||
fixed in r4339 | |||
Enveigler | Autrijus++. findExecutable is ?a part of Prelude? I can't find it in the src tree? | 06:04 | |
Gaal: No need to post it anywhere, it moves so fast here. I thought you wanted it for comparisons or consolidation. | 06:05 | ||
autrijus | Enveigler: look at ghc library index | ||
Enveigler | Okay. | ||
autrijus | should be on your disk as libraries/doc-index.html or something in ghc | ||
svnbot6 | r4339, autrijus++ | * Enveigler pointed out on win32 we need to append ".exe" | 06:06 | |
r4339, autrijus++ | to find parrot in the current path. | |||
autrijus | it's defined in System.Directory and imported thru Pugs.Internals | ||
Enveigler | Found it. It'll take a while to remember what's in there? Phew it's um comprehensive. | 06:08 | |
autrijus | trust me it's much better than CPAN. :) | ||
autrijus used to memorise CPAN recent uploads... | |||
Enveigler | :) | ||
DId you do the first 10,000 digits of Pi also? | 06:09 | ||
autrijus | nah, only 100 | 06:10 | |
and it was long ago, when I was still new to this world wide web thing :) | |||
crysflame | autrijus: cpan scoreboard | ||
autrijus | hmm 10 years ago. | ||
crysflame: I lost the code -- you can use alias's scoreboard anyway | 06:11 | ||
gaal | what data structure did you use to store it? could you do random access? :) | ||
obra | Public Service Announcement: NEVER PLAY THE CPAN DRINKING GAME WITH TANG-SAN | ||
Enveigler | Next thought. Pugs can't embed Parrot on win--is that a fundemental limitation or just something that's not been tackled? | ||
crysflame | obra - been there, can't remember that? | ||
gaal | that one's Hard, Enveigler. | ||
obra | I dropped out early. _I_ remember it | ||
gaal | because GHC uses gcc | 06:12 | |
autrijus | Enveigler: ghc was compiled with mingw-gcc; parrot/activeperl usually uses vc++ | ||
Enveigler: theoretically you can just do everything in mingw/msys space and let the embedding happen | |||
Enveigler | OKay. Though expunged :) | ||
autrijus | or, recompile ghc with vc++ | ||
but I had not tried, nor am I aware anyone who succeeded | |||
gaal | well, it has to be fixed sometime... | 06:13 | |
will recompiling solve it? you'd also need to bundle vc++ with ghc | |||
i think that's the worse problem | 06:14 | ||
mugwump | gaal: just reimplement pugs in Perl 6 and bootstrap it to parrot, then you won't need GHC | ||
autrijus | right. in the long run. | ||
gaal | oh, okay. | ||
gaal rushes off to reimplement Perl6 etc. | |||
Enveigler | Though, if the major parrot functionality was in a .dll with the .exe just providing for switch and file handling the same way Perl works, the dynamically linking to the Parrot dll would be an option? | 06:15 | |
gaal | actually, tea is probably a better idea, short term. | ||
autrijus | Enveigler: yes. but the problem is that Parrot doesn't yet build in a .so/.dll form | 06:17 | |
nor is the embedding entry api well defined (we'll be working on that next week too I hope) | 06:18 | ||
Enveigler | I just caught up with that :( | ||
SO. Any other win limitations that I can look at? | 06:19 | ||
autrijus | Enveigler: opendir() etc doesn't work | 06:27 | |
see Compat.hs | |||
I need to be offline for a while. bbiab :) & | 06:28 | ||
Enveigler | Autrijus: Will do. | ||
06:35
castaway_ is now known as castaway
|
|||
Arathorn | isn't it a bit dangerous to be implementing namespaces already used by CPAN in pugs (e.g. Net::IRC) but with entirely different APIs? | 06:50 | |
i thought that even the mod_perl2 guys realised that in the end :/ | 06:51 | ||
(especially now cpan & pugs are intertwinglable) | |||
integral | perl6 isn't the same namespace as perl5... | ||
Arathorn was being sloppy with the word namespace, i guess | 06:52 | ||
whilst the namespaces may be different, surely it's not a good idea to be reusing the same names? | 06:53 | ||
castaway | It'd be kinda daft to change them all, dont you think? | ||
just imagine p6 as a new language, not a new release number .) | |||
integral | and think of all the namespaces like "warnings" that we couldn't use | 06:54 | |
Arathorn | perhaps | ||
castaway | I suspect p4 -> p5 was just as confusing (except p4 didnt have packages ,) | ||
as long as the new ones have use v6 in them, or some such, it sounds fine to me | 06:55 | ||
arcady | and the language is different enough that in many cases it makes sense to change the API | 06:56 | |
Arathorn | i wonder what the author of Net::IRC for p5 thinks | 06:57 | |
integral | there's an author currently? | ||
Aankhen`` | I thought that project is dead? | 06:58 | |
Arathorn | dunno - last release on cpan was a year ago | ||
Aankhen`` | Indeed. | ||
Arathorn | might mean that it's stable rather than dead :) | ||
integral | Or it's well glued down | ||
Aankhen`` | Well, there's no response to any of the bugs or patches on SourceForge.net. | ||
Arathorn | fair enough | 06:59 | |
castaway thought it was Mr. Baar | |||
umm, Barr | |||
I think its more stable than dead, meself | |||
Arathorn | i guess i'm just slightly adverse to having completely different APIs referred to by (roughly) the same name | ||
castaway | oh wait, Im mixing it up with Net::FTP etc.. just ignore me | 07:00 | |
Arathorn | goes for all the different CGI.pm ones etc. just as much as the p5/p6 doublethink | ||
Arathorn defers and shuts up | |||
castaway | well deal.. "Perl5" and "Perl6" also have roughly the same name :) | ||
Aankhen`` | Don't worry, CGI.pm is not going into Perl 6. | 07:01 | |
castaway | It's not? | ||
or that particular one isnt? | |||
Aankhen`` | So you'll end up using `use CGI--perl5;` and retaining the old API. :-) | ||
What do you mean by "that particular one"? | |||
castaway | Umm, I dunno.. I though there was already a CGI for p6/pugs | 07:02 | |
Aankhen`` | There are the beginnings of one. | ||
But it won't be actively developed. | |||
castaway | so what did you mean by "is not going into" ? | ||
arcady | it should probably be a standard part of perl6 | ||
just so there's one standard way to do it | |||
Aankhen`` | No, it's going to be replaced by a bunch of different, specialised modules. | ||
CGI.pm is an ugly, overgrown behemoth. | 07:03 | ||
BRB. | |||
castaway | well yes | ||
(or so I've heard ,) | |||
I bet there'll be something called "CGI", even if it doesnt do the same as the p5 one | |||
Aankhen`` | Back. | 07:06 | |
Once I've finished porting all the necessary modules, I'm going to put together a page detailing the ways of using them together, and point the CGI.pm docs there. | 07:07 | ||
And if people insist on using CGI.pm, they can use the P5 version. | 07:08 | ||
Isn't it wonderful how everything works out? *angelic smile* | 07:09 | ||
Arathorn | sounds like a plan | 07:13 | |
castaway | Umm, no | ||
Arathorn | anything to stop me having to import all the HTML generation stuff when all I want is a simple request object for manipulating POST/cookies etc. | ||
castaway | why not just make "use CGI" use the whole lot, for lazy/impatient people ? | ||
and people that care can figure out which bit they really need | 07:14 | ||
(or you can make "use CGI" default to the query parsing stuff etc, and put in its docs where the html gen stuff is) | |||
crysflame | i am personally wary of catering to lazy/impatient people | 07:17 | |
castaway | ah well, its not as if porting stuff to p6 is gonna be a breeze anyway ,) | 07:20 | |
(its just that we were arguing *for* familiar names, just now) | |||
crysflame | one unusual option would be a placeholder CGI module that references its own replacement forcefully | 07:21 | |
castaway | hmm? | ||
crysflame | use CGI; # exits with "CGI is defunct; please perldoc P6cgi4P5folk" | 07:22 | |
castaway | ah | 07:23 | |
would be better than nothing, yes | |||
crysflame | having a document prepared that starts with "For the impatient, rushed, or otherwise uninterested folk, the quick summary" | 07:24 | |
castaway | right | ||
assuming the API is close enough that thats possible | |||
personally I'd call it "for people that are only interested in getting-it-working and already know the p5 version" :) | 07:25 | ||
crysflame | it need not be close enough to resemble their existing knowledge | ||
a task-based document that focuses on introducing them to components that they're expecting to find | 07:26 | ||
- functions for generating html | |||
- stateful form stuff | |||
- argument parsing, including file upload | |||
that covers everything i use CGI for in maybe two pages of pod, presuming the examples are succinct | |||
autrijus | "Larry gave a talk on Perl: The Next Generation at a Bay LISA meeting. He enumerated some of the following features: a faster, tighter, more flexible interpreter ; coroutines ; named argument passing: some_func( OC => $red ); typed pointers; object oriented programming. " | 07:27 | |
crysflame | three of those things sound new to perl6 | ||
how old is that quote? | |||
autrijus | "It's tempting to want this stuff soon, since the sooner it comes out the sooner we can all build really cool applications. But the longer Larry works on it, the more items from this list will actually get done, and the more robust the release will be. So let's not ask him about it too often. " | ||
crysflame: April 1993 -- the new language is Perl 5 | 07:28 | ||
castaway grins | |||
crysflame | i don't know the definition of 'lassitude' well enough to explain why it just came to mind | ||
autrijus | "languor: a feeling of lack of interest or energy" | ||
crysflame | "lack of motivation" | 07:29 | |
i could see coroutines falling prey to a lack of motivation, given the rarity of those who seem to grok them | |||
autrijus | "I am hoping that innovation and change does not come at the expense of backwards compatibility myself... So all we really need is a way to convert old perl scripts to new ones. IMHO this would also be a great way to get rid of obsolete perl constructs that are only kept around in the name of backward compatability." | 07:31 | |
mmm dĆ©jĆ vu | 07:32 | ||
crysflame | os x still supports fat binaries and resedit-controlled resource fork attributes | 07:34 | |
perl5 still supports K'thag | |||
integral | fat binaries are useful for 32/64-bit now... | ||
crysflame | that had not occured to me; you're right | 07:35 | |
arcady | at least OS X finally has no m68k code in it | ||
and none of the fun old Mac API | |||
with such things as the "low memory globals" | |||
crysflame | 10.4.1 still boots my classic partition | ||
arcady | well, linux can do that too | 07:36 | |
not quite as nicely | |||
but Mac OS 9 is actually faster under linux than by itself | |||
crysflame | that is amusing | ||
arcady | cause OS 9's IO drivers suck | 07:38 | |
actually, OS X also had really slow IO compared to linux and sucky caching | 07:39 | ||
crysflame | when they fixed the kernel-wide spinlock in 10.4 did the IO speed up? | ||
arcady | who knows, I haven't touched OS X in quite a while | 07:40 | |
nothingmuch wakes up properly | |||
crysflame knows that 2.5" hard drives have a limited lifespan | |||
and that powerbooks use 2.5" hard drives | |||
arcady | all hard drives do | ||
and all laptops use 2.5" drives | |||
castaway thinks all harddrives have a limited lifespan :) | |||
arcady | also, laptops tend to get dropped | ||
crysflame | portable or unstable, choose one? | 07:41 | |
arcady | nanometer-scale air gaps with high speed rotating platters do not take kindly to dropping | ||
jql | well, we should start mounting the internet on / | ||
castaway | (my last was 4 weeks less than its guarantee :) | ||
crysflame | stable, even | ||
jql | more reliable than spinning disks | ||
crysflame | bittorrent has the capability to handle data storage and retrieval on demand | 07:42 | |
an interesting experiment would be a linux loopback filesystem driver that supports bittorrent files as the image source | 07:43 | ||
atomic writes would be very strange to handle | |||
autrijus | "During the mid-1990s, Larry Wall redesigned Perl 5, incoporating support for | ||
closures, object-oriented programming and bytecode compilation. | |||
" | |||
hm. I wonder what other Perl 5 features are of note. | |||
crysflame | autrijus: B | 07:44 | |
autrijus | crysflame: that's bytecode compilation | ||
crysflame | CPAN | ||
jql | lexical variables were part of that closure thing | ||
autrijus | modules, probably. yeah. | ||
jql: right. | |||
crysflame | XS | ||
jql | a nifty innovation, to say the least | ||
crysflame | embedability (sp) | ||
autrijus | I wonder if XS should be counted among the lowlights | ||
crysflame | was ./Configure available in perl4? | ||
jql | as well as multi-dimensional data (references) | ||
integral | metaconfig is used right back to perl1 | 07:45 | |
autrijus | crysflame: metaconfig was part of perl | ||
crysflame | that explains many things | ||
regular expression complexities such as lookaheads | |||
autrijus | I guess "namespaces" is the correct way to put it (CPAN/modules, etc) | 07:46 | |
crysflame | s/(?<=c)ie/ei/g | ||
autrijus | does perl4 have namespaces (other than allowing ' as part of identifier)? | ||
integral | ugg, closure support. my $a; sub { eval $_[0] } # oops, not really | ||
autrijus | crysflame: that's sort of minor :) | ||
crysflame | autrijus: the ability to evaluate perl code within a regular expression is slightly less so | ||
slightly is not sarcasm in that instance | |||
perl5 was responsible for pcre which has benefited many non-perl5 projects | 07:47 | ||
autrijus | crysflame: true but it's 5.005ism (I think) | ||
crysflame | so i would deem the regular expression engine of perl5 worth a mention | ||
jql | the availability of pcre has ensured no language can go without regular expressions | ||
autrijus | okay. I'll mention it :) | ||
crysflame | php now uses perl5 regexes | ||
jql huggles javascript | |||
crysflame | when another language absorbs a feature so blatantly, there must be value | 07:48 | |
parrot's target seems to be "ready to be absorbed" | |||
autrijus finds it kind of hard to write about perl in a neutral voice as required by the paper's standards :) | 07:57 | ||
crysflame | read re*.c for a while | ||
then flip over to toke.y | |||
also don't forget SOFTDIA | 07:58 | ||
autrijus | hm. 5 years after Perl 5's release and people were still debating whether it will make more sense to develop new projects in Perl 4. | 08:21 | |
<- still reading olde usenet posts | |||
crysflame | lessons of change | ||
castaway | unsurprising really | 08:24 | |
crysflame | autrijus: if you ever decide to focus on sociology for a little while, write a tutorial on practical implementations of change or "how i kept their love after changing their world" | 08:25 | |
and then watch as the army of your followers start converting the world to their individual beliefs | |||
castaway | change is a slow thing.. though its getting faster all the time in the technology world.. I expect that will be quicker for P6.. although, just think of all the p5 installations out there | ||
crysflame | given the stability of perl5 i see no need to upgrade at this time | 08:26 | |
castaway | (many millons of.. how soon until they are more likely to have p6 than p5 on?) | ||
right | |||
think of ipv6, how long has that existed? (tho it got somewhat superceeded by NAT) | 08:27 | ||
autrijus mumbles something about actually living in a region that needs ipv6 | |||
(unicode too) | 08:28 | ||
castaway | right, and do your ISPs etc support ipv6? | ||
autrijus | castaway: as a fact, yes, hinet.net does. | ||
castaway | change requires a *need*, when its not there, people just wont.. only the techies will do things because "they're shiney and new" :) | 08:29 | |
autrijus | castaway: yeah, and .jp/.tw/.cn is running out of IPs :) | ||
castaway | good, and your irc servers, and the web servers you use? :) | ||
that doesnt surprise me :) | 08:30 | ||
scook0 | the problem is when people become so used to working around the problem that they don't /realise/ they need a solution | ||
castaway wonders if anywhere does multiple levels of NAT | |||
autrijus | happily I think freebsd/apache2 can take care of ipv6 just fine | ||
castaway | -p its not much use to you unless all the routers in between can tho ,) | ||
autrijus | that's true :) | 08:31 | |
castaway | scook0: true enough | ||
p6 is going to need some convincing arguments, IMO | 08:33 | ||
crysflame | what drives a need to persuade? | 08:34 | |
if it implements things that are less optimal elsewhere, those seeking the right optimum need only know it exists | |||
advertising doesn't have to be about persuasion | |||
i will use perl6 as soon as i find a need that it satisfies most effectively | 08:35 | ||
coroutines come to mind, except that i never need them | |||
jql | I see perl6 as an escape from perl5 | ||
castaway still has no good picture of what they would be for | |||
integral mention something about continuations/coroutines helping POE | |||
jql | if I can stop typing "my $self = shift", I'm sold | ||
autrijus | crysflame++ # build it and they'll come | 08:36 | |
jql: Spiffy.pm? :) | |||
jql | I don't need persuasion. I've been waiting. :) | ||
autrijus | or, if you are not of the Spiffy nature, Perl6::Subs perhaps | ||
method foo (Foo $self: Bar $x) { ... } | 08:37 | ||
crysflame | apple zealots seem to suffer a similar dilemma | ||
castaway | jql right, but what about the rest of the world? :) | ||
crysflame | apple hardware serves their needs dramatically well, yet many try to persuade others | ||
autrijus | chip++ # for being the phearless parrot leader, and for eErl6::Subs | ||
Perl6::Subs, even | |||
jql | autrijus: in PerlQt, I got rid of $self entirely | ||
autrijus | jql: cool | ||
I wouldn't want to write ->/method() in perl5 though | |||
jql | foo() would autoload a call to this->foo() where this was an lvalue sub | ||
autrijus | somehow that looks very bad | 08:38 | |
crysflame | the closer to zero effort it is to test a solution for viability (perl6), the more likely it is those seeking a solution will try it | ||
autrijus | jql: ah. that's kind of rubyish | ||
crysflame | the dependency on ghc seems to be slightly less than zero effort for some | ||
slightly is a euphemism there | |||
jql | I had some interesting motivations, there | ||
autrijus | crysflame: there's binary builds :) | ||
crysflame | not for vc++ apparently | ||
autrijus | huh? www.jwcs.net/~jonathan/perl6/pugs-win32.zip | 08:39 | |
crysflame | not a barrier to me, certainly | ||
is that mingw or vc++ | |||
castaway | deps on ghc is just pugs.. p6 will hopefully bootstrap itself (maybe on p5 or parrot?) | ||
crysflame | (ref: earlier discussion about that distinction) | ||
autrijus | oh. you mean vc++-built-ghc. no, that's mingw-based. | ||
shouldn't matter though for the end user. | |||
crysflame | i'm also making up a straw man example | ||
in a few seconds i can find a need that pugs can't satisfy | 08:40 | ||
for those folk, persuasion will do little to garner usage | |||
autrijus | crysflame: yeah, noted. advocacy of utility is probably not a good idea right now. | ||
crysflame | the trick is to avoid annoying them while advertising features to the rest | ||
autrijus | (even though I'll still true ;)) | ||
s/true/try/ | |||
crysflame | i'm quite the fan of keeping a pocket full of shiny, world-changing objects to show people | 08:41 | |
i have a roll of whiteboard papers at work | |||
electrostatic sheets about the size of the side of a mid-tower case | |||
autrijus | fwiw, I'll spend quite some time in my APW/YAPC/Euroscon talk to talk about deploying Pugs/Parrot in production | ||
crysflame | someone was making a joke about it not existing once | ||
they were in awe when i showed them it did exist, if only briefly | 08:42 | ||
still, i never use them | |||
advocacy failure, advertising success | |||
autrijus | not neccessarily to persuade people with the immediate utility, but rather trying to keep things in perspective | ||
crysflame nods | |||
coroutine support is a persuasive point all on its own | 08:43 | ||
autrijus | imho p6 needs a large dose of perspective :) | ||
crysflame | everything does | ||
crysflame indicates apple, linux, windows, slashdot | |||
autrijus indicates the Total Perspective Vortex | |||
mm is that in the movie? | |||
webmind likes golden delicious | |||
morning | |||
crysflame | no | ||
Arathorn has a horrible feeling that he doesn't have a chance of deploying pugs/p6 on production whilst it runs on ghc | |||
crysflame | sometimes i feel like zaphod that way | ||
"er, what's the big deal" | 08:44 | ||
Arathorn | purely due to the perception that it's a resource hog | ||
autrijus | Arathorn: oh, that's not horrible, it will be fixed soon | ||
Arathorn | woo :) | ||
autrijus | Arathorn: granted you still need to cross-compile with ghc | ||
but the resulting parrot bytecode can be deployed everywhere | |||
Arathorn nods | |||
autrijus | which is good enough for my production needs | ||
(and I imagine for yours) | |||
Arathorn | indeed. | ||
crysflame | i had no idea pugs could boil down to parrot bytecode | 08:45 | |
autrijus | crysflame: for some time now | ||
crysflame | advertising failure | ||
(not yours) | |||
autrijus | crysflame: indeed. jhorwitz used that to do mod_pugs on top of mod_parrot | ||
crysflame | that's quite awesome | ||
autrijus | (which works just fine) | ||
crysflame | wow | ||
autrijus | and you can call Apache::RequestRec objects in pugs using OO syntax, etc. | ||
crysflame | okay, this is one of this shiny objects to keep in your pocket | ||
go take the mod_perl cookbook examples from ftp.oreilly.com and port them one by one to pugs, like torgo is doing with HOJ | 08:46 | ||
Higher Order Javascript | |||
(ask purl) | |||
autrijus | that could be fun. | ||
autrijus will keep that in mind | |||
crysflame | it would also be the most persuasive example of pugs i can think of | ||
for certain needs | |||
"web" | |||
i refuse to use mod_perl | |||
it is insane | |||
coldfusion has treated me better | 08:47 | ||
Arathorn | how would mod_pugs be more sane than mod_perl? (other than all the new language constructs?) | ||
crysflame | i trust the core | ||
it's based on principles that are heavily tested | |||
castaway | .oO( mm, porting Everything to mod_pugs ?) |
||
autrijus | Arathorn: parrot is nicer :) | ||
Arathorn | oh, true | 08:48 | |
autark-jp | autrijus: about to send a patch to p6c, is there any special format that is prefered (ie. darcs patch) or is the output of svn diff ok? | ||
Arathorn | but from an actual development perspective many of the mod_perl quirks would still hold, surely? | ||
crysflame | parrot focused on being the core of languages | ||
many, surely | |||
autrijus | autark-jp: what patch? | ||
crysflame | but less than all is better than mod_perl | ||
crysflame is quite the "less than all" person | |||
autrijus | autark-jp: your email? I will just make you a committer and let you commit it yourself :) | ||
crysflame | hi, autark | 08:49 | |
are you autarch from elsewhere? | |||
autrijus | autark-jp: you see those darcs patches because darcs repo is still readonly | ||
autark-jp | autrijus: support for q[ .. [] ...] and such. | ||
autrijus | autark-jp: subversion users are simply given committer bits | ||
autark-jp | autrijus: [email@hidden.address] | ||
crysflame | autrijus: another shining point in favor of anything pugs-related is that the community is alive and developing, as opposed to alive and maintaining | 08:50 | |
autrijus | also don't forget to add yourself to AUTHORS | ||
autark-jp: invitation sent. welcome aboard! | |||
autark-jp | thanks | ||
clkao | *yawn* | ||
crysflame | "don't forget to add yourself to AUTHORS" is a good quote to highlight the invitation to participate | ||
hi, clkao. is there an SVK bridge for wikimedia? | |||
clkao | no, but some crazy people are talking about www::mechanize and template::extract backend for svn::mirror | 08:51 | |
so you cna mirror and modify arbitray web page | |||
crysflame | they have my encouragement | ||
crysflame relays a pom-pom | |||
autrijus | clkao: massively distributed greasemonkey? | ||
Arathorn | anyone know if mod_perl2 (or mod_pugs on Apache2) is much better than mod_perl1 about maintaining separation between web applications? | 08:52 | |
autrijus | Arathorn: I know. yes. | ||
(separate interpreters)++ | |||
castaway | crysflame: what was that relative to? (the "alive and mainintaing" thing) p5? | ||
autrijus | Arathorn: also much less chance of accidentally crashing everything. | ||
crysflame | castaway: shrug | 08:53 | |
Arathorn | is distributing the interpreters between the various httpd threads/processes stable now, then? | ||
crysflame | p5, sure | ||
pugs is visibly churning through todo lists and bugsets and everything | |||
a lot of my impression of perl5 was, for some time, "fixing what we have so it keeps working the way it does as closely as possible" | 08:54 | ||
castaway | well yes, but that makes it also a moving target, which is not a plus point IMO | ||
crysflame | human relationships are a moving target. i suppose i'm accustomed to it. | ||
castaway | and the design has to stop somewhen :) | ||
autrijus | castaway: god yes. :) | 08:55 | |
castaway | umm, I see no relevance whatsoever :) | ||
Arathorn reads up on MPMs for separating mod_perl2 interpreters between different vhosts | |||
crysflame | ok | ||
autrijus | but I don't buy the "take the dec 2004 snapshot and ignore p6l" approach | ||
castaway | whos approach is that? | ||
autrijus | (as claimed by the tpf plan) | ||
crysflame | i don't want to see pugs spend five years post-development being torn about between development and stability | ||
i like how the focus is very clear right now | |||
autrijus | crysflame: you know, perl5 did exactly that :) | 08:56 | |
crysflame | development | ||
castaway | crysflame: it wont stay that way, really | ||
crysflame | autrijus: i was there | ||
castaway: nope. that said, if it went from pure development | |||
to pure maintenance | |||
it would become the most rock solid coolness ever | |||
castaway | IMO a bunch of 5.X would have been new release no's, in other projects | 08:57 | |
utopia, crysflame :) | |||
crysflame | and provide a nifty base upon which other development could be driven, in separate projects (to use the word that just appeared on my screen) | ||
autrijus | sure. 5.6 5.8 was both major. | ||
crysflame | are you referencing a specific thing or the concept? | ||
castaway | It'd be nice, but somehow I doubt its gonna happen | ||
crysflame | after watching autrijus i doubt many things less | 08:58 | |
even if pugs suddenly was destroyed by aliens i have more hope now | |||
crysflame shrugs | |||
castaway | autrijus is still somewhat bound by @larry.. (unless at some point he decides to just ignore them :) | ||
just human nature.. | |||
autrijus | I prefer to use the word "kept sane by" :) | ||
crysflame | mm | ||
autrijus | or rather, words | 08:59 | |
crysflame | one of the worst problems with boundless enthusiasm is the lack of bounds | ||
autark-jp | crysflame: sorry missed your question, no I'm not autarch. | ||
autrijus | it's extremely easy to lose the perspective and optimise for perceived coolness | ||
crysflame | ok, cool | ||
autrijus | (in the language) | ||
Arathorn | autrijus: surely all the perl/pugs interpreters in an apache2 pool are clones of each other, and so allow you to stomp over other peoples' apps' symbols? | ||
crysflame | offtopic: interesting linguistic difference between word "phrase" and words "phrase", as it reflects mentally | ||
autrijus | Arathorn: clones can't touch each other's variables unless they are declared as shared | 09:00 | |
clkao | autrijus: now got time to look at rw array? | ||
crysflame | sounds like perl5, in that respect | ||
Arathorn | hm, but pre-clone at load time, i guess all the apps can go and fiddle with each other | ||
autrijus | there's no preclone time. | 09:01 | |
iirc. | |||
unless you ask for it | |||
in which case of course all bets are off :) | |||
Arathorn: basically what it offers is runtime protection, not really a sandbox | |||
castaway ponders the meaning of "sane" in this case :) | |||
Arathorn | so you can specify which packages are to be loaded into which interpreter clones/instances? | ||
crysflame | what is utopia today will become dystopia tomorrow | ||
autrijus | you still have complete control in the internals | 09:02 | |
crysflame | fortunately today is long enough to enjoy the now | ||
autrijus | if you want sandboxing, look not to the perl5 engine ;) | ||
Arathorn nods. | |||
castaway | are there "binaries" of parrot/mod_pugs or whatever one needs to get thaht running with apache? | ||
autrijus | clkao: eh, sure. array.t you say? | 09:03 | |
gaal | autrijus, debug prints inside Prelude.pm don't work. any idea how to fix / work around that? | ||
autrijus | gaal: don't work how? | ||
print() not called? | |||
also did you rm Prelude.hs? | |||
and recompile | |||
gaal | also: is there a way of saying "please list all defined subs everywhere"? | 09:04 | |
sure, i did that. | |||
make does that really | |||
say doesn't output anything to screen | |||
autrijus | castaway: I think by mod_parrot 0.3 and parrot 0.2.1 and Pugs 6.2.7, sure | ||
castaway: but currently the neccessary piece in both parrot and mod_parrot are still in the repo | |||
i.e. not in a released form | |||
which makes "binaries" kind of hard to produce | |||
gaal: you can't yet introspect into the symbol table -- it's probably trivial to implement %*:: though -- just bind the envGlobal to a hash | 09:05 | ||
castaway | piece of? | ||
autrijus | castaway: pieces of code. | 09:06 | |
castaway | ah, damn | ||
autrijus | parrot 0.2.1 is coming in a couple days | ||
pugs 6.2.7 next week | |||
mod_parrot not sure, but I can push if you'd like :) | 09:07 | ||
crysflame | is there a shell or perl or pugs script that will assemble the pieces and build the target mod_pugs, given a willingness to use source repos? | ||
clkao | autrijus: ya. array.t. | ||
autrijus: havey ou grokked my problem | |||
autrijus | crysflame: I think it's just svn.perl.org/parrot-modules/mod_parrot/trunk/ | ||
crysflame | +3 to source-lovers, -1 to binary-lovers | ||
autrijus | clkao: I think I have. | 09:08 | |
crysflame | i'm a binary lover :| | ||
castaway | I'd like to play, but my machine will probably take a day or more to build things, so ideally I'd like plug and pray | ||
crysflame | love && 0101 | ||
crysflame chuckles, heads to bed. | |||
castaway | I dont mind source at all, just not "bloody huge" source :) | ||
crysflame | there is that | 09:09 | |
castaway | otoho ōæ½xEDt builds X.org occasionally on it | ||
crysflame | i expressly desire apt-get install pugs | ||
castaway | then make a .deb ,) | ||
autrijus | there is a .deb ;) | ||
castaway | g'night crysflame | ||
crysflame | autrijus: neat. has it been submitted to the ubuntu multiverse/universe/...? | ||
is there a source i can add to sources.list? | |||
autrijus | scw is the person to ask. | 09:10 | |
crysflame | ok | ||
autrijus | there's svn.openfoundry.org/pugs/debian/ | ||
revdiablo has been updating it too | |||
gaal | autrijus: say inside a function works in Prelude.pm, but not outside one. | ||
crysflame | it would behoove the accessibility of pugs to push debs out to the various distros | ||
autrijus | I have no debian-clue :) | 09:11 | |
crysflame | as they'd compile ghc once for a lot of people | ||
clkao | autrijus: so.. you figured out how to solve that? | ||
crysflame | and then it's dead simple to get to pugs | ||
having the debs is quite far along that path, super-nifty to know about | |||
autrijus | gaal: that is strange indeed. | ||
crysflame | hello control file. i'll dpkg-build this later | 09:12 | |
crysflame & | |||
gaal | oh no! namespaces with :: in them don't work :) | ||
castaway will take .emerges, while you're at it :) | |||
autrijus | gaal: !? | ||
gaal | so i put my function in Control::Basic, and it wasn't found. | ||
moved it to "class G", and "G::caller" was found. | 09:13 | ||
(inside Prelude, again.) | 09:14 | ||
autrijus | how perculiar. | ||
gaal | hm, i have another hypothesis, testing. | ||
autrijus | ?eval package Foo::Bar; sub blah { 1 }; Foo::Bar::blah() | 09:15 | |
evalbot6 | 1 | ||
gaal | ah, i know what's happening. | ||
castaway | isnt that perl5ish? | ||
gaal | namespaces isn't the problem. | ||
the prelude is evaled, but contains compilation errors | |||
however, the things that have been compiled ok are installed | |||
so i put my func at the bottom, and an earlier func must have failed, so the eval didn't reach it | 09:16 | ||
what confused me was that File::open and friends were working ok | |||
first order of work is to propagate errors in initPrelude :) | 09:17 | ||
i wonder if those should be fatal to pugs? | |||
autrijus | should be of course. | 09:18 | |
gaal | k, finxing. | ||
autrijus | you have a Val from runEvalIO | ||
if it's VError, die immediately | |||
gaal | okay :) | 09:19 | |
scook0 | autrijus: any preferences/suggestions for what to Haddock next? | 09:21 | |
autrijus | scook0: I think Eval will be most helpful | 09:22 | |
maybe factoring out different reduce cases as separate function to help documentation? not sure | 09:23 | ||
scook0 | autrijus: I was thinking of doing that at one stage | 09:24 | |
I shall give it a look... | |||
autrijus | scook0++ | 09:25 | |
Enveigler | Autirjus: A >4GB filesize returned from win32 as two UINTS (HighSize/LowSize). Will CULong toInteger sort that out? | 09:26 | |
autrijus | Enveigler: yes. | 09:27 | |
I think. | |||
Enveigler | I'm still puzzling the meaning of "data DirStream deriving (Typeable)" I found the description of "deriving", but little is said about "Typeable"? | 09:29 | |
gaal | oh, something definitely funky is going on in eval | ||
drbean | I get a lot of segfaulting trying out the p6 rules tests, the same which failed on building | ||
autrijus | Enveigler: it's a Data.Typeable thing. Data.Dynamic uses it | 09:30 | |
gaal | evaling the prelude doesn't die even whe the firts line after 'use v6' is "die" | ||
drbean | Do you think if I build unoptimized there will be less failing | ||
autrijus | Enveigler: it lets us encapsuate any type at all into the Dynamic type | ||
gaal | and compilation continues after that | ||
autrijus | drbean: did you build with embedded parrot? | ||
drbean: optimisedness should have nothing to do with it | |||
drbean | yes | ||
gaal | hmmm, actually maybe that does make some sense | ||
autrijus | drbean: it could be parrot, then. did you build with trunk parrot? | ||
drbean | no | 09:31 | |
gaal | it isn't BEGIN {die} | ||
drbean | it was 0.2.0 | ||
autrijus | drbean: building without parrot embedding (and put parrot somewhere in your PATH) should fix the segfaulting | ||
drbean | I'll try that | ||
Enveigler | Um... Okay. More reading :) | ||
Autrijus: Also, FindFirstFile returns a lot more than just the file name. Lots of stuff that posix would call fstat for. Seems nuts to throw it away when the first thing code calling glob is likely to do is call fstat(), but what else to do other than return a "FileObjectClass" instance...? | 09:34 | ||
autrijus | Enveigler: actually, the first thing is probably comparing on the filename and throwing unwanted stuff away | 09:39 | |
Enveigler: probably still just return the name for now? | |||
(I can see readdir() returning a File object, too, but I'm not sure how) | 09:40 | ||
Enveigler | Autrijus: That's what I thought mostly...anything else will have to wait. | ||
scw | crysflame: I haven't built up a debian source but put all the .deb here www.csie.ntu.edu.tw/~b92103/pugs | 09:46 | |
gaal | autrijus, it seems like runEvalIO returns undef on compliation fail. Where's the VError? retEvalResult? which Bool value do i need (what's "external"?) | 09:49 | |
autrijus | gaal: external means it's evaluating an external file as in "require" | 09:53 | |
gaal | which it kinda is and kinda isn't | 09:54 | |
i guess the correct value is Mu, then. | |||
autrijus | heh. | ||
undefined | |||
Juerd | moo! | ||
murning :) | 09:55 | ||
autrijus | maybe you can just check for definedness and put a "1;" in Prelude. | ||
gaal | what do p6 modules return when evaluated? (I want them to return their names.) | ||
autrijus | but anyway, it's the flag to opEval | ||
gaal: the last value | 09:56 | ||
you shouldn't pass Nothing to opEval | |||
gaal | aha! | ||
autrijus | I think (Just True) is the value to use. | ||
(I apologise for the obfu) | 09:57 | ||
gaal | GHC++ ("redundant import of" warning) | 09:58 | |
how do i check defindedness? == VUndef didn't cut it | 10:00 | ||
integral | defined isn't it? | ||
gaal | thanks | 10:01 | |
autrijus | it's incidentally just (== VUndef) :) | 10:03 | |
gaal | hmmm, nobody reads $! in haskell, do i need to readRef, or is there a better way to do it? | 10:05 | |
findSymRef "$!" and then read it, i meant | |||
because i still don't see how to get at the VError automatically | 10:06 | ||
autrijus | you can findSymRef and then read it | 10:07 | |
but I think it's a bug that (require 'x') doesn't die | |||
when 'x' actually has compile time errors | |||
I think. | |||
so maybe fix that instead :) | |||
gaal | well, in the case of prelude we aren't requiring, we're evaling a string | 10:08 | |
autrijus | well yes | ||
but opEval doesn't know that | |||
gaal | unless that (Just True) flag meant it's a require? | ||
ah, okay :) | |||
integral | is the prelude code built into the binary or loaded from a file? | ||
autrijus | integral: built into binary | ||
integral | autrijus++, gaal++ that's handy :-) | ||
autrijus | it's not handy enough :) | 10:09 | |
gaal | its source is inlined and compiled every load | ||
autrijus | I want it to be there in AST form | ||
gaal | one day, AST | ||
heh | |||
autrijus | but one thing at a time | ||
gaal | (one day, parrot bytecode?) | ||
integral | ah, a minipugs to boot strap it :-) | ||
autrijus | no, AST is fine | ||
we can gen PIR from AST | |||
roundtrip is much harder! | |||
also we may wish to add various instrumentation in PIR | 10:10 | ||
depending on whether we're invoked with -d:512 or something | |||
so the AST form is probably the best way to keep it | |||
(the AST may one day be represented by PMCs of course) | |||
(but it's still an AST) | 10:11 | ||
gaal | micro-design: should it be opEval that does the failing, or retEvalResult? (re-finding $! looks funny to me, but so does failing from a function that's there for returning) | 10:12 | |
i know it's trivial, i just haven't got the feel for style in haskell | 10:13 | ||
autrijus | if we're going for the Right Thing | 10:14 | |
I think we want a new data type. | |||
gaal | oh, also there's a "retEmpty" over there, so an error could actually nor be returning a VUndef. | ||
creepy, there's no out-of-band way to tell if an eval failed! | 10:15 | ||
well, actually in p5 there wasn't, either | |||
autrijus | data EvalError = EvalErrorFatal | EvalErrorUndef | 10:16 | |
gaal | oh, there *couldn't* be one really, the whole point was that eval also captures exceptions | ||
autrijus | data EvalResult = EvalResultLastvalue | EvalResultModule | EvalResultEnv | ||
data EvalStyle = MkEvalStyle { evalError = EvalError, evalResult = EvalResult } | 10:17 | ||
er | |||
data EvalStyle = MkEvalStyle { evalError :: EvalError, evalResult :: EvalResult } | |||
that would be something haskellish. | |||
opEval :: EvalStyle -> PathName -> String -> Eval Val | |||
gaal | PathName? | ||
autrijus | FilePath | 10:18 | |
scook0 | phew | ||
gaal | oh, right, for opEvalFile | ||
scook0 | (reduce now dispatches to separate functions) | ||
autrijus | scook0++ # wow that was Quick | 10:19 | |
scook0 | autrijus: turns out it was pretty easy, once I figured out the trick | 10:20 | |
gaal | EvalError is the user's request for what to do on error, yes? | 10:21 | |
svnbot6 | r4340, scook0++ | * Pulled reduce's cases out into separate functions | ||
scook0 | autrijus: should I pull all the different Syns out into overloads for reduceSyn? | 10:22 | |
(i.e. get rid of the explicit case statement) | |||
gaal | and what are EvalResultModule | EvalResultEnv? a handle on the loaded module in case of require? | 10:23 | |
autrijus | scook0: sure, that'd be nice | ||
gaal: so, sometimes we want to get back the modified lexical environment for an eval | |||
gaal | oops | 10:24 | |
autrijus | gaal: so, sometimes we want to get back the modified lexical environment for an eval | 10:26 | |
s/lexical// | |||
i.e. all of the environment | |||
gaal: it happens when we're "use"'ing something, use the evaluated environment as the new environment in the parser, then go on | 10:27 | ||
this is line 495ish Parser | |||
that's EvalResultEnv | |||
EvalResultModule isn't used currently | 10:28 | ||
conceivably it returns the metaobject that represents the namespace in the eval or something | |||
probably not a great idea | |||
gaal | i'll see what i can do in the 20 minutes i have left :) | 10:29 | |
autrijus | cool. I may even pick up from where you left :) | 10:30 | |
gaal | you'll have a lot left to pick up ;-) | 10:31 | |
or a little | |||
depending on how you count | |||
autrijus | I count in base 64 | 10:32 | |
so maybe a little | |||
Enveigler | Autrijus: Is there any mileage in thish stuff cvs.haskell.org/cgi-bin/cvsweb.cgi/...32/System/ for us? (There isn't any System.Win32.Dir, but the Win32.types would be handy?) | 10:39 | |
autrijus | Enveigler: Win32.* is already in GHC win32, no? | 10:41 | |
you can freely use it in Compat | |||
Enveigler | Looking (again)... | 10:43 | |
It's tehre under hslibs-imports (I looked under imports). | 10:44 | ||
I also found System.Directory.getDirectoryContents() which returns everything as a list--but that's not freindly if the dir is huge. | 10:46 | ||
autrijus | it's not and we already use that | 10:47 | |
Enveigler | AH! | 10:48 | |
autrijus | problem is you can't make an easily rewindable interface out of that | ||
unless you keep everything in memory | |||
which is not very practical | |||
gaal | i gotta go - no checkpointable progress on the opEval refactoring, so if anyone wants to, feel free to pick it up | 10:51 | |
back in n < 10 hours | |||
autrijus | post the diff somewhere? | ||
Enveigler | I think rewinding is a case of close / reopen the FindFirstFile handle on win32 anyway and that means keeping a copy of the path supplied on the ReadDir(). | ||
gaal | nah, nothing useful there yet.. i was mostly burrowing over how it works | 10:52 | |
i'll get back to this later (unless someone beats me to it) | |||
gotta go now! :) bye. & | 10:53 | ||
Enveigler | See ya Gaal. | ||
autrijus | Enveigler: hm, actually in perl5 the impl strategy is this | ||
FindFirstFile is called on opendir | |||
the result is put into a mutable list | 10:54 | ||
it returns an object of {dirhandle, results, cursor} | |||
each readdir() pushes to results and advances cursor | |||
and rewinddir() sets cursor back to 0 | |||
it can be implemented using a TVar | 10:55 | ||
(or equivalently a IORef) | |||
Enveigler | Autrijus: Okay, but that means you still accumulate teh entire dir in memory. We could just call System.Directory.getDirectoryContents() and put that into a list and return the cursor as appropriate? | 10:56 | |
a/list/mutableList/ | |||
autrijus | Enveigler: sure... there is one difference though. | 10:57 | |
if I opendir, readdir until I find a match, closedir | |||
and the match is the 3rd file out of 100000 | |||
then the perl5 approach will consume far less memory | |||
Enveigler | Autrijus: Of course. | ||
autrijus | but for ease of implementation, I'd say just go with whatever you want :) | ||
we can always refactor | |||
Enveigler | Plus you can pass (limited) wildcards to FindFileFirst and reduce the accumulation also. Okay. I'll crack on with FFF FFN. | 10:58 | |
autrijus | Enveigler++ # cool | 10:59 | |
Enveigler | No ++ yet. I'm still groping. :) | ||
autrijus | that is already worthy of ++ :) | 11:00 | |
Enveigler | Kinda scared by AllocaBytes et al. | 11:01 | |
autrijus | allocaBytes is actually very very sane :) | 11:02 | |
certainly saner than I can otherwise hope from C | |||
Enveigler | I'm just thinking about how to retain the memory across calls with GC interfering. A stable pointer seems the way to go, but I'm reaching at teh mooment | 11:04 | |
s/with/without/ | |||
autrijus | hm? I don't GC kills Ptr | ||
s/don't/don't think/ | 11:05 | ||
you can safely bring a Ptr along | |||
correction. I mean ForeignPtr. | |||
but Ptr too | |||
Enveigler | Okay. So I construct a ?tuple? contain the FFF handle plus pointer to the MArray and return a pointer to the tuple from OpenDir. So that I have access when it gets passed back on ReadDir? | 11:07 | |
autrijus | that sounds like a plan. I'd suggest to use records not tuples | 11:08 | |
just to increase readability. learned it the hard way | |||
Enveigler | Always happy to learn from others bumps and knocks. A record it will be. | 11:09 | |
autrijus | =) | 11:12 | |
Enveigler | A million more questiosn, but I'll do some more reading and try and answer a few of them myself. Thanks Autrijus | 11:14 | |
autrijus | np :) | 11:15 | |
Enveigler | Later. | ||
svnbot6 | r4341, autrijus++ | * hw2005 paper - Introduction done - reviews welcome | 11:20 | |
autrijus finds English much harder to write than Haskell | 11:25 | ||
svnbot6 | r4342, autrijus++ | * add usual properties to hw2005.txt | ||
scook0 | my god, that's a LOT of cases... | 11:26 | |
autrijus | :D | 11:27 | |
scook0 | autrijus: once I've finished my refactorings I'll give your paper a look | ||
autrijus | also I want to drop Syn at some time | ||
scook0 | (must remember to update PA02 also) | ||
really? | |||
autrijus | replace them with the correctly declared statement:<> and postcircumfix:<> Apps | ||
scook0 | well, it should be much easier to do that incrementally now | ||
autrijus | with "is lazy" arguments | ||
scook0: yes, your work is critical for that to happen | 11:28 | ||
Juerd | autrijus: I've given domm root access to feather so he can create accounts during the hackathon | 11:40 | |
svnbot6 | r4343, scook0++ | * Pulled reduceSyn's case out into individual overloads | ||
r4344, scook0++ | * Get rid of redundant arg to reduceSyn | |||
Juerd | autrijus: If you want that too, let me know. | ||
Forth | my brain keeps refusing to accept haskell... | 11:42 | |
autrijus | Juerd: sure, I'd appreciate that | ||
Forth: run newfs on it | 11:43 | ||
Juerd | autrijus: You may now use sudo | ||
autrijus: Please send me, per user and by email, full name and email address | |||
autrijus | 'kay | 11:44 | |
Juerd | Especially the full name is important, for legal purposes | ||
I'm aware that this excludes some people. That is too bad then. | |||
autrijus | I think those people also have a full name :) | 11:45 | |
Juerd | I sometimes doubt it ;) | 11:48 | |
And if they do, I don't think they're willing to give it up | |||
In theory, they can make something up. I have no way to check it anyway. | 11:49 | ||
Arathorn | one of the debian risc dudes is called Wookey, iirc | ||
(legally) | |||
Juerd | If I were called that, I'd also hide my real name from the outside world | ||
Arathorn | www.chaos.org.uk/~wookey/name.html | ||
autrijus | hm. I wonder if he is related to Chewbacca | 11:50 | |
Arathorn grins | |||
scook0 groans | 11:51 | ||
Juerd | I have no pity for single named people re web forms | ||
Especially for someone who decided to mutilate their own name this way :) | |||
autark-jp | gah! | 11:52 | |
svn commit hangs :/ | |||
strace shows: open("/dev/random", O_RDONLY) = 3 and then read(3, .... | |||
Juerd | Then generate some entropy. | ||
autrijus | your /dev/random is not random enough? | ||
autark-jp | how? | ||
Juerd | By using the computer :) | 11:53 | |
autark-jp | it's remote. | ||
autrijus | autark-jp: typing a screenful of random chars | ||
Juerd | Haha | ||
autrijus: That's network traffic - usually not playing any role in entropy : | |||
autark-jp: That's a problem then. | |||
autrijus | Juerd: I didn't see it's remote :) | ||
Juerd | autark-jp: Get somebody to move the mouse :) | ||
autark-jp | yes ;) | ||
autrijus | will fsck help? | ||
Juerd | I have no idea | ||
I wonder if any remote action helps | 11:54 | ||
autrijus | disk io is quite local | ||
Juerd | True | ||
castaway | (Wookey is a cool guy :) | ||
Juerd has only one time in his life used a computer than was out of randomness | |||
autark-jp | but if it only generates random things from keyboard and mouse .... | 11:55 | |
Juerd | autark-jp: You probably have no way to know how it generates randomness | ||
svnbot6 | r4345, scook0++ | * Most reduceSyn overloads now use destructuring parameters | ||
Aankhen`` | castaway >> I was interrupted earlier before I could finish my sentence: if there is indeed a module which pulls together all the various modules and functions as CGI.pm, it won't be in the top level; it'll probably end up as Perl5::CGI or something similar. | 12:03 | |
castaway | why? | 12:05 | |
(and huh, "Perl5" ?) | |||
Aankhen`` | Because a top-level CGI module doesn't make sense. | 12:06 | |
(note that what I'm saying is mostly paraphrasing a discussion that took place on the subject a couple weeks back) | 12:07 | ||
CGI is a protocol. | |||
Hrm, wait, that's not right. | 12:08 | ||
Hang on a sec while I check something. | |||
castaway | its an Interface API (or some such) | ||
Aankhen`` | PM? | ||
I'll show you the logs. | |||
Juerd | APIs and protocols are practically the same thing. | 12:09 | |
scook0 | autrijus: I read through hw2005.txt | ||
Aankhen`` | Ah, here we go: | ||
[17:41:39] <pjcj> My big concern with porting Perl5 modules is that we don't miss the opportunity to learn from our mistakes. Or the opportunity to enhance interfaces based on new Perl6 features. | |||
[17:41:42] <Juerd> And re CGI.pm, no, any common technology should not have its top level thing | |||
[17:41:54] <Juerd> DBI is the name of the module, not an existing protocol | |||
[17:42:06] <Juerd> CGI is a protocol. It has no good reason to be toplevel. | |||
scook0 | found a few tiny errors--want me to ci them, or discuss them with you? | 12:10 | |
castaway | so what are we proposing to call the new module(s) for that? | ||
Juerd | CGI.pm is probably entirely redundant with HTTP:: modules. | ||
castaway | theres lotsa stuff named after protocols, and really that makes some sort of sense | ||
Aankhen`` | I'm working on porting the HTTP::* modules from LWP. | ||
Atleast, I was until a few days ago, when I realised that my body needed a break from the computer. | 12:11 | ||
Juerd | castaway: It makes sense to use the protocol name, but never for a top level *module* | ||
Yes, a CGI namespace is good | |||
No, any CGI.pm is not :) | |||
castaway | fair enough | ||
Juerd | Same goes for HTTP.pm | ||
That's bad. | |||
HTTP::Request is good though | |||
autrijus | scook0: just ci them | 12:26 | |
scook0 | autrijus: aye, I'll bundle it with my PA02 updates | ||
autrijus praises scook0 effusively | 12:27 | ||
svnbot6 | r4346, scook0++ | * Updated PA02 to reflect Eval.reduce refactoring | 12:39 | |
r4346, scook0++ | * Minor English tweaks for HW2005 paper | |||
Limbic_Region | Juerd - you have a pretty good handle on p6 syntax right? | 12:45 | |
Could you, or anyone else that feels fairly confident in their knowledge of p6 syntax, look at perlmonks.org/index.pl?node_id=463080 | |||
I told blokhead to write tests if he felt his syntax was right but just wasn't implemented in pugs | 12:46 | ||
I guess he didn't feel confident enough to try | |||
Juerd | There is indeed no ==> yet | 12:47 | |
And I guess he's using an old (pre-yesterday) release | |||
Because map does take two now | |||
autrijus | 6.2.6 has n-ary map | ||
Juerd | my $iter = NestedLoops( [0..2], [0..2] ); | ||
IIRC, that can be written as my $iter = NestedLoops(0..2; 0..2); | 12:48 | ||
I'm not entirely sure. | |||
Limbic_Region | I tried that myself Juerd | ||
as I wanted to do that | |||
but it doesn't work in pugs AFAICT | |||
perhaps I wasn't holding my tounge right though | |||
theorbtw1 | Mornin, all. | ||
Juerd | afk | ||
12:49
theorbtw1 is now known as theorbtwo
|
|||
Juerd | Hm, hyper for postcircumfix makes sense, as reduce does postcircumfix too | 12:49 | |
p6l that? | |||
afk | |||
Limbic_Region | Juerd - I guess I need to convince blokhead to join #perl6 | 12:50 | |
autrijus | please do so. :) | ||
Limbic_Region | I would rather he champion his own cause | ||
the more new serious faces posing good questions to p6l the better | 12:51 | ||
autrijus | indeed. | ||
autrijus has a feeling that the old "post random idea and pray for a ruling" heuristic will no longer work | 12:52 | ||
serious, sound proposals with tests is definitely the way to go. :) | 12:53 | ||
Juerd | It still worked well for ./method | ||
And it'll work for all simple operator based ideas | 12:54 | ||
autrijus | Juerd: it isn't a random idea though :) | ||
it's a much-desired solution to a huge thread that spans months. | |||
s/isn't a/isn't just a/ | |||
Juerd | I think the biggest problem facing p6l now is that some people want to change more fundamental things in Perl's design | 12:55 | |
Like Thomas Sandlass, who wants references and aliases to be the same thing, and thus the removal of any distinction between names, containers and values. | 12:56 | ||
svnbot6 | r4347, autark++ | * Added support for nesting of quoting delimiters, q[...[]...] | ||
Juerd | That's impractical in a dynamic language, but he doesn't see that and nobody so far has been able to convince him. | ||
theorbtwo | I think the biggest problem is a lack of a good index or current status document. | ||
Juerd | Lots of energy is wasted in replies to his messages. | ||
Limbic_Region | yeah - Luke said it best - once decisions are rendered they are not immediately reflected in the appropriate docs | 12:57 | |
Juerd | There are more fundamental things that people want changed, and indeed, for such huge impact things, you'd need tests and a very sound and tight proposal | ||
theorbtwo | ...and I don't know how to fix that, other then to create one myself. | ||
Juerd | The lagging behind of synopses is a problem too, yes. | ||
Limbic_Region | autrijus - btw, WRT required named parameters | ||
S06 says do that by "is required" | |||
Juerd | theorbtwo: I think that as soon as anything is ruled on, someone should reply with a test | ||
Limbic_Region | and goes on to say, we MAY do something like plusplus | ||
Pugs only supports the MAY solution and not the "is required" | 12:58 | ||
should I write a test for that? | |||
Juerd | theorbtwo: And the message-id of the ruling should be in the test file that tests the feature | ||
afk again | |||
theorbtwo | I think the best way to change the language def at this point is to implement it in pugs (or a fork of pugs), and /then/ take it to p6l. | ||
scook0 | theorbtwo: that does seem to be the only way things get decided these days | 12:59 | |
I'm just glad we have Pugs at all | |||
crysflame | scw: sweet! thanks | 13:00 | |
Limbic_Region | scook0 - I am glad you replied to my thread - I was beginning to think it had gotten lost in the bitbucket | ||
theorbtwo | Well, another problem is that pugs is diverging from the definition... and yes, I did just define the same thing as both a problem and a solution. | 13:01 | |
Limbic_Region | It would be really nice though for @larry to say "yes" or "no" though | ||
Limbic_Region is fine with the answer being no btw - as long as it is definitive | |||
scook0 | Limbic_Region: yeah, I didn't really have much to say, but I wanted to de-warnock you to rekindle the discussion | ||
maybe we should just implement it in pugs :) | 13:02 | ||
autrijus | Limbic_Region: you can of course write the "is required" test | ||
theorbtwo | The problem with TSa seems to be that he writes mostly as if things were the way he thinks they are, not "foo should be". | 13:03 | |
Limbic_Region | scook0 - well, my test case probably wouldn't win people over | ||
autrijus | Limbic_Region: it's trivial to implement anyway. in Parser line 384 | ||
Limbic_Region | say "it has a letter" if any( $str.chars ) eq any( 'a'..'z', 'A'..'Z'); | 13:04 | |
autrijus | ...implemented | ||
so a test will be appreciated | |||
Limbic_Region | for "is required" | ||
will do | |||
crysflame | scw: building from source. first, step, apt-get install ghc-cvs (12MB) | ||
autrijus | yeah. | ||
crysflame | yay for apt-get | 13:05 | |
Limbic_Region | likely won't get the test until this afternoon (my time) | ||
I have a marathon meeting coming up in about 20 minutes | |||
I am still trying to get caught up with the other daily routine as well | |||
autrijus | that's fine, take your time | ||
theorbtwo | Oh, autrijus, where can I find some good information as to how to use shiftT? I was looking at Limbic's return problem last night, and couldn't make heads or tails of shiftT, other then that it's probably the solution. | 13:06 | |
apt-get++ | 13:07 | ||
scook0 | urk, shiftT turned my brain inside-out last time I tried to understand it | ||
crysflame | rats, too old | ||
Limbic_Region | autrijus - did you see the test that geoffb (his first commit) that depicts a bug that we independtly discovered yesterday | ||
in a nutshell, a code reference that gets dereferenced will yell about being undefined even if it never gets executed (should short circuit) | 13:08 | ||
hmmm - that didn't come out quite right | |||
crysflame | debian-devel accepted ghc 6.4-4 on may 21st | 13:09 | |
(unstable) | |||
Limbic_Region | the error yells as if it attempted to dereference it but it should never have gotten to that point | ||
autrijus | Limbic_Region: yes, I'm aware of that. | ||
Limbic_Region | ok | ||
autrijus | long-circuiting at a distance | ||
Limbic_Region | it was the only bug I found yesterday with my latest project | ||
which is a "good thing" | 13:10 | ||
Aankhen`` | How do you access named subrules in the match object? $/<name>? | ||
autrijus | Aankhen``: yeah, which can be shortened to $<name> | 13:12 | |
Aankhen`` | OK, thanks. | ||
autrijus wonders if $0 can be written as $[0] as an analogy | |||
autrijus chases that thought from memory | |||
Aankhen`` | Heh. | ||
crysflame | ghc6_6.4-2_i386.deb unf | ||
autrijus | probably not a great idea. | ||
clkao | autrijus: what have you discoverdd about array.t? | 13:13 | |
autrijus | clkao: it looks like I need to separate PerlSV apart in hs side. | 13:15 | |
clkao: see, when we have | |||
crysflame | ghc6_6.4-4_i386.deb unf (whee) | ||
autrijus | $p5obj.values | ||
or indeed | |||
$p5obj.kv | |||
we need to know whether to dispatch it as a ValRef, ValObj, Val(nonref), SvAV, SvHV, SvRV(that defines ->kv), or sometihng else entirely | 13:16 | ||
currently it's all grouped under the PerlSV dispatch | |||
which means it's always treated as a hash and always assumed as a boxed sv | 13:17 | ||
broquaint | Do placeholder variables in subs correspond to an automagically created siglet? e.g sub { $^foo * $^bar } =:= sub($^bar,$^foo) { $^foo * $^bar }; | ||
autrijus | which is clearly wrong | ||
svnbot6 | r4348, autrijus++ | * Implement `is required` for subroutine parameters. | ||
r4348, autrijus++ | Suggested by Limbic_Region++. | |||
autrijus | broquaint: no, the latter says $bar and $foo | ||
Aankhen`` | `is required`? | ||
Wassat? | |||
autrijus | Aankhen``: sub foo (+$named is required) {} | ||
Aankhen`` | Ah. | ||
broquaint | Ok, thanks, autrijus :) | 13:18 | |
Aankhen`` | Why not just make it a positional parameter? | ||
It can be still be specified as a named parameter... | |||
autrijus | Aankhen``: you don't want 500 positionals. | ||
osfameron | pixigreg++ | ||
Aankhen`` | (when it is called, I mean) | ||
autrijus | because someone will actually call them in a certain order | ||
and you'll be borked when you'd like to add new param | 13:19 | ||
Aankhen`` | OK. | ||
broquaint | Am thinking up a proposal for the access of @_ in bare block/pointy subs. | ||
Or maybe @*ARGS instead of @_ if we're going to be consistent with implicit arguments. Maybe. | 13:20 | ||
scook0 | autrijus: named params aren't supposed to be positionally callable? | ||
autrijus | scook0: aye. | 13:21 | |
scook0 | broquaint: I was thinking a bit more about that | ||
autrijus | hence inherently nonordered | ||
scook0 | autrijus: because I think that (erroneously) works atm | ||
crysflame | ended up with 6.4-2 due to libc drama | ||
scook0 | in fact, I think there might be a test confirming the incorrect behaviour :( | ||
theorbtwo | broquaint: OTOH, right now, you can get at the arguments of the outer block very easily. Giving bareblocks and -> blocks their own @_s would keep them from accessing the outer ones. | ||
autrijus | ?eval sub foo (+$x) { $x } foo(3) | ||
evalbot6 | \3 | ||
autrijus | ick. | ||
theorbtwo | (Except by using OUTER::. | ||
autrijus | scook0: yay, major bug. care to flip the test? | 13:22 | |
weird, I explicitly coded Bind.hs to disallow that... | |||
broquaint | Is @_ lexically or dynamically scoped in perl6? I assume dynamically. | ||
theorbtwo | @*ARGS would be cool with me, esp if it always ignored signatures. | ||
autrijus | broquaint: it is, in fact, lexical | ||
theorbtwo | I assumed lexically. | ||
autrijus | sub foo (*@_) { } | 13:23 | |
broquaint | Won't that make the porting of perl5 Hard(tm)? | ||
autrijus | broquaint: you mean the (local @_ = ...; goto &sub) thing? | ||
or something else entirely? | |||
scook0 | autrijus: what's the test syntax for "shouldn't work" again? | ||
autrijus | scook0: dies_ok | 13:24 | |
geoffb | *yawn* | ||
Morning, everyone | |||
broquaint | That sort of thing, autrijus. I'm sure there are other edges cases in perl5 (as always ;). | ||
theorbtwo | Morning, geoffb. Congrats on your first CI. | ||
geoffb | theorbtwo, thanks. :-) | ||
theorbtwo | broquaint: So translate calls without explicit argument lists to call with the current @_? | 13:25 | |
stevan | good morning all | ||
scook0 | do I mark it as :todo<bug>? | ||
geoffb | morning, stevan | ||
crysflame | no hs-plugins deb yet | ||
broquaint | Also the &sub style could cause problems. | ||
Oh well. | |||
autrijus | scook0: no, that's an outright failure | ||
geoffb | crysflame, more's the woe | 13:26 | |
broquaint | Yeah, theorbtwo, I reckon that'd do. | ||
geoffb wishes for `apt-get build-dep pugs` | |||
autrijus | broquaint: porting of p5, done by humans, is probably easy to avoid global @_ and friends | ||
broquaint | Anyhow, being able to access the arg stack for pointy/bare block subs would be very handy esp. in the case of functional coding. | ||
Limbic_Region | scook0 plusplus | 13:27 | |
autrijus | broquaint: how is the current blocks syntax not allowing you to do that? | ||
broquaint | ?eval {@_}.() | 13:28 | |
evalbot6 | Error: Undeclared variable: "@_" | ||
autrijus | ?eval ->*@_{@_}.() | ||
evalbot6 | [] | ||
crysflame | heh, whoah. can't execute svk | ||
guess i need svk | |||
26 new packages! | |||
autrijus | broquaint: also for functional code I don't think you usually want slurps | ||
broquaint | Sure, autrijus, but the declaring of the arg stack seems a little redundant, esp. with lots of little functions a la MJD code ;) | ||
crysflame plugs his ears and waits | 13:29 | ||
autrijus | broquaint: you probably want a single array argument | ||
?eval {@^x}.() | |||
evalbot6 | Error: unexpected "\\" expecting "::" | ||
scook0 | broquaint: I realised the other day why bare blocks can't have arity of more than one | ||
autrijus | ?eval {$^x+$^y}.arity | ||
evalbot6 | Error: unexpected "\\" expecting "::" | ||
autrijus | ... | ||
bad quotemeta | |||
broquaint | Urk. | ||
autrijus | ?eval '{$^x+$^y}.arity' | ||
scook0 | if they were slurpy, stuff like "for @foo {...}" would only ever execute once :( | ||
evalbot6 | '{$\\^x+$\\^y}.arity' | ||
broquaint | pugs -e '{@^x}.()' # *** Insufficient number of required parameters: 0 actual, 1 expected | 13:30 | |
autrijus | yeah. "slurpy bare block" sounds like a dangerous thing | ||
broquaint: right, {@^x}.([]) is the way to go | |||
theorbtwo | It seems like a reasonable thing to do... just not by default. | ||
broquaint | I definitely not keen on slurpy bare blocks, I just want access to the arg stack. | 13:31 | |
theorbtwo | OTOH, there's no way to make non-default bare blocks, really. | ||
autrijus | but anyway -- writing a -> or a "sub" when you want extra things sounds okay to me | ||
theorbtwo | Sounds OK to me, too. | ||
autrijus | although it's probably not very golf friendly | ||
broquaint | Fair enough. | ||
I just like the idea of being able to access the arg stack at all times. Maybe it's a good idea just to have that in a module/macro for that functionality. | 13:32 | ||
autrijus | broquaint: indeed. I thought part of the idea of having a Bare class is so that we can do interesting optimisations | ||
i.e. since there won't be any unpacking or MMD or slurping going on | 13:33 | ||
svnbot6 | r4349, scook0++ | Flipped tests that should be failing | ||
autrijus | it's considerably easier to codegen for it | ||
it's the theory anyway | |||
theorbtwo | I do like the idea of a @*ARGS that always lets you get at the arg list positionally. | ||
autrijus | theorbtwo: and %*ARGS for the bynames? | ||
theorbtwo | I don't like the related, but sepperate, idea of letting bare blocks have slurppy parameters. | ||
autrijus | (as they have no position) | ||
theorbtwo | Well, they were called with some position. | ||
broquaint | Yeah, slurpy params for bare blocks is definitely not desirable. | 13:34 | |
theorbtwo | We just don't know what position. | ||
autrijus | er. uhm. I don't think I can promise to keep that information :) | ||
not without switching some Map into OrderedMap or sometihng | |||
crysflame | yay, RRegex.PCRE | ||
broquaint | But if you want to access the arg stack thingy then tell the compiler with a pragma perhaps. | ||
theorbtwo shrugs. OK then, @*ARGS for the positionals, %*ARGS for the nonpositionals. | 13:35 | ||
autrijus | and then maybe you want actually to access the program's arguments... | ||
...which is incidentally named @*ARGS as well | |||
scook0 | I wonder what the performance implications of a ubiquitous @_/@*ARGS are... | ||
theorbtwo | Oh, I forgot about that one. | ||
Hm. | |||
geoffb | The irclogger help page says that the times displayed in the logs are in the "european timezone". Um, what exactly timezone would that be, anybody know? | ||
geoffb reading backlog, obviously | 13:36 | ||
wolverian | haha. _the_ european timezone?! | ||
theorbtwo | geoffb: What's the time of the last line. | ||
geoffb | hold on | ||
theorbtwo | It probably means CEST -- central european summer time. | ||
geoffb | 13:36 | ||
scook0 | geoffb: maybe it's a Junction of timezones :) | ||
wolverian | geoffb: GMT | ||
geoffb | scook0, heh | ||
theorbtwo | Oh, it doesn't, then. | ||
crysflame | hee | ||
theorbtwo | GMT. | ||
autrijus | ooh pxperl actually kept up. nice | ||
broquaint | Oh well, arg munging can be left for another time, it's not too important (I'm just hung up on because I'm porting the HOP code ;). | ||
autrijus ponders putting pxperl to pugscode.org front page | 13:37 | ||
theorbtwo | pxperl? | ||
geoffb | wolverian, theorbtwo: thx | ||
autrijus | theorbtwo: pixigreg.com/?pxperl | ||
wolverian | you're welcome | ||
theorbtwo | Nifty-squifty. | ||
broquaint | ?eval ~{foo=>'bar'} | 13:40 | |
evalbot6 | 'foo bar' | ||
theorbtwo | ?eval ~{foo=>'bar', baz=>'quux'} | ||
evalbot6 | 'baz quux foo bar' | ||
broquaint | Hrm, I get "foo bar\n". | ||
theorbtwo | The spec says "foo\tbar\nbaz\tquux\n" (not neccessarly in that order). | ||
autrijus | the spec is correct. | 13:41 | |
and I think I implemented it that way too... weird | |||
?eval ~{fo=>'bar', ba=>'quux'} | |||
evalbot6 | 'ba quux fo bar' | ||
broquaint | Neat. | 13:42 | |
autrijus | ?eval ~({fo=>'bar', ba=>'quux'}) | ||
evalbot6 | 'ba quux fo bar' | ||
autrijus | ?eval my $x = {fo=>'bar', ba=>'quux'}; ~$x | ||
evalbot6 | 'ba quux fo bar' | ||
autrijus | :-/ | ||
broquaint | I don't understand signatures all that well, but how do I get this to DWIM (i.e work): | 13:43 | |
?eval sub f($f,$g) { say "$f,$g" } my @a = <<foo bar>>; f *@a | |||
evalbot6 | Error: No compatible subroutine found: "&f" | ||
crysflame | evalbot | ||
heh | |||
autrijus | ah. I see. it's the extra fromVal | 13:44 | |
broquaint: caller-site * is known todo | |||
broquaint | sub f(*$f,$g) { ... } works, but I didn't think the sig needed to be splatty as well. | ||
autrijus | currenltly only function-side * works | ||
broquaint | Right, thanks again, autrijus :) | ||
autrijus | you can do *$f, *$g | 13:45 | |
crysflame | pugs.AST.Internals takes a while | ||
autrijus | the ~hash thing is fixed. | 13:46 | |
r4350 | |||
autark-jp | 'eval;' should default to operate on $_, right? | 13:47 | |
broquaint | ?eval sub f(*$f,*$g, $h, ?$i = "XXX") { "$f,$g,$h,$i" } my @a = <<foo bar baz>>; f *@a | ||
evalbot6 | 'foo,bar,baz,' | ||
autrijus | autark-jp: I'm not sure about that. | 13:48 | |
autark-jp | I couldn't find anything about it in the docs though. | ||
autrijus | yeah. you can certainly give a 3-char patch in Prim.hs | ||
that enables this behaviour, based on it's the same in perl5 | |||
be bold in your checkins :) | 13:49 | ||
crysflame twitches at eval; | |||
autrijus | dinner, bbiab | ||
crysflame | no complaint | ||
scook0 | ooh, it's late--must go to bed | ||
crysflame | just.. i had no idea | ||
scook0 | @#perl6 Ā».bye | ||
autrijus | scook0: nite! | 13:50 | |
theorbtwo wonders... | |||
svnbot6 | r4350, autrijus++ | * Fix ~{1=>2} to stringify to "1\t2\n" correctly. | ||
r4350, autrijus++ | Reported by broquaint. | |||
autark-jp | well, no need to change things that work :) | ||
theorbtwo | ?eval my $foo = ->{'wakka'}; $foo.pos | 13:51 | |
evalbot6 | '<eval> line 1, column 11-22' | ||
theorbtwo | Nifty. | ||
autrijus | ooh. | ||
?eval &pos.pos | 13:52 | ||
evalbot6 | Error: Undeclared variable: "&pos" | ||
autrijus | ?eval &Code::pos.pos | ||
evalbot6 | undef | ||
autrijus | clever. | ||
broquaint | What does .pos return? The position of the invocant in the file? | ||
theorbtwo | The position where it is defined. | ||
broquaint | Debugariffic! | ||
theorbtwo | Indeed. | ||
autrijus steals "A Debugariffic Day" as a journal title | 13:53 | ||
theorbtwo | Woo! | ||
broquaint takes mental note - debugging functional code != easy || fun | |||
theorbtwo | Now I'll have to implement more of this sort of thing to make it a really debuggariffic day. | ||
autrijus | it sounds better that "frabjous" | ||
broquaint: types help a lot | 13:54 | ||
functional languages are called "nursery of type system innovations" for a reason | |||
broquaint | They do indeed :) Converting the HOP code to perl6 has been an experience, pity I can't get it to work :/ | ||
autrijus | :/. | 13:55 | |
theorbtwo | Hm, I can't say "./pugs -Mlib=blib6/lib" and have it DTRT. | ||
autrijus | really & | ||
theorbtwo | (Feature or bug... you decide?) | ||
autrijus | theorbtwo: right. it's trivial fix in Args.hs tho | ||
theorbtwo | Oh! Later, autrijus! | ||
autrijus | :todo<feature> | ||
theorbtwo | Cool. | ||
clkao | autrijus: yuck | 13:56 | |
autrijus: but simple array access should work first :p | 13:57 | ||
broquaint | Urk, pugs -MParser -e 1 # gets stuck in some scary SIGALRM loop | 14:01 | |
Or it looks like that for a while at least. | |||
Ah, pugs -MParser=:all -e 1 # gets the scary infinite looking loop | 14:02 | ||
crysflame | Linking... | 14:03 | |
geoffb notices PM Novice ranking, decides to sidetrack into understanding what that means . . . several minutes later decides "I really didn't want to know all that" | 14:05 | ||
Damn waste of neurons. :-) | |||
broquaint | It looks like passing args to use via the -M switch makes pugs teh b0rk. | 14:06 | |
crysflame | woo, dpkg -i pugs*deb | ||
theorbtwo | geoffb: You can vote on nodes (starting tomorrow). | ||
crysflame | pugs -e 1 works. nifty. | ||
theorbtwo | broquaint: Read up a few lines. | ||
broquaint | Linking? | 14:07 | |
theorbtwo | No, me complaining that -Mlib=... didn't work, and autrijus calling it :todo<feature> and trivial in Args.hs. | ||
crysflame | autrijus said he knew what it was and then &'d, i think | ||
geoffb | autrijus, did you ever get a chance to look at why 'use SDL::App--perl5' no worky? | 14:08 | |
broquaint | Ah, ok. It seems antihestimenes (sp?) and IRC don't mix so well ;) | 14:09 | |
theorbtwo | geoffb: Autrijus no here. | 14:10 | |
geoffb | theorbtwo, damn, hadn't gotten that far in the backlog, because of said previous sidetracking on PM | 14:11 | |
nothingmuch | Limbic_Region: ping | 14:15 | |
I saw your comment from yesterday, and I tried to change stuff around so it's clearer. Want to try again? | 14:16 | ||
lathos | seen juerd? | ||
jabbot | lathos: I havn't seen juerd , lathos | ||
nothingmuch | seen Juerd | ||
jabbot | nothingmuch: Juerd was seen 1 hours 18 minutes 9 seconds ago | ||
nothingmuch | silly bot | ||
Juerd | lathos: pong | 14:27 | |
theorbtwo wonders where to go from here, and possibly how to do %MY:: and friends. | 14:56 | ||
lathos | Should this work: my $a = ::Maypole; require $a ? | ||
Juerd | I don't think one can require a class | 14:57 | |
Only a string | |||
Which happens to have class-like syntax | |||
If a class stringifies as expected, it should work. One problem is that an initial :: should NOT be translated to /. | |||
Although given @INC paths and platforms that don't care about double slashes, it shouldn't be a problem | 14:58 | ||
All in all: yes, I think it should work. | |||
lathos | OK. It doesn't. :) | ||
Bah, Maypole 6 is full of "require $.foo_class;" | 15:01 | ||
theorbtwo | Hm, the hs-plugins author is Dan somethingoranother, the parsec author is daan. | ||
Juerd | Time for a failing non-todo test then, perhaps :) | 15:02 | |
nothingmuch | isn't hs-plugins author dons? | ||
Don Stewart | 15:03 | ||
theorbtwo | Oh, right. | 15:04 | |
Dan, Don, I was close. | |||
Not quite close enough for a Conspricy, though. | |||
lathos | Class doesn't stringify. | ||
Can't locate <obj:Class> in @INC | 15:05 | ||
Which is arguably correct, since it stringifying to "Maypole/View/TT.pm" would be confusing. | |||
theorbtwo | It stringifying as ::Maypole::View::TT would be quite reasonable, though. | ||
nothingmuch | haskell advice someone: I need a mutable map.. Would I place a Data::Map in an IORef? | 15:06 | |
lathos | Right, but "require ::Foo" doesn't even work. | 15:07 | |
theorbtwo wonders if stringification should be a sepperate function of the Value class, rather then everything's stringification being done in VStr. | 15:09 | ||
Hm, wasn't the stingification of false supposed to be "0" and not ""? | 15:10 | ||
nothingmuch | theorbtwo: i think it should | 15:11 | |
lathos | Well, I think 'require $thing' should be polymorphic on $thing. | 15:12 | |
But anyway, I'll throw my tests in and if they're wrong someone will fix them... | |||
broquaint | ?eval my $a = q[foo]; $a = sub { return (1,$^x) }.($a); $a.perl.say | 15:14 | |
evalbot6 | Error: unexpected "(" expecting block construct, "::", ":", term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or "}" | ||
broquaint | ?eval my $a = q[foo]; $a = sub { return (1,$^x) }.($a); $a.perl | 15:15 | |
evalbot6 | Error: unexpected "(" expecting block construct, "::", ":", term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or "}" | ||
broquaint | Hmm, I get: [1, [1, [1, [.]]]] | ||
And this looks like an infinite loop: pugs -e 'my $a = q[foo];my$b; ($b,$a) = sub { return (1,$^x) }.($a); $a.perl.say' | |||
theorbtwo | OK, I can't figure out how to find out if a method exists on an object (without erroring if it doesn't). | 15:16 | |
lathos | Don't we have .can? | ||
theorbtwo | Otherwise I could make VObject's stringify call a method. | ||
?eval &pos.can('pos') | 15:17 | ||
evalbot6 | Error: Undeclared variable: "&pos" | ||
theorbtwo | ?eval (&pos).can('pos') | ||
evalbot6 | Error: Undeclared variable: "&pos" | ||
theorbtwo | ?eval (sub {...}).can('pos') | ||
evalbot6 | Error: No compatible subroutine found: "&can" | ||
svnbot6 | r4351, simon++ | Tests for "require ::Class". | ||
theorbtwo | Don't have it. | ||
eric256 | shouldn't @.whatever be an error if the class doesn't have a whatever attribute? | ||
theorbtwo | Oh, I'm an idiot, of course it can't find &pos, there is no such thing. | 15:18 | |
Probably, eric256. Make a dies_ok test for it? | |||
lathos | ?eval my $x = "Hello"; $x.can("foo") | 15:19 | |
evalbot6 | Error: No compatible subroutine found: "&can" | ||
lathos | Bah. Everything should be an object. | 15:20 | |
broquaint | Everything is an object. Except when it's not. | ||
lathos | And from the tests it looks like .can is a todo. | 15:21 | |
eric256 | are you looking for does("foo") ? | ||
theorbtwo | Everything is an Object, I think. | ||
?eval {} ~~ Object | |||
evalbot6 | bool::false | ||
theorbtwo | Or not. | ||
eric256 | ?eval 1 ~~ Object | 15:22 | |
evalbot6 | bool::false | ||
eric256 | ?eval "Test" ~~ String | ||
evalbot6 | Error: No compatible subroutine found: "&String" | ||
eric256 | hmm | ||
theorbtwo | ?eval "Test" ~~ Str | ||
evalbot6 | bool::false | ||
eric256 | mayeb ~~ is broken? | ||
theorbtwo | OK, now that's certianly a bug. | ||
eric256 | ?eval "Test".does(Str) | ||
evalbot6 | bool::true | ||
theorbtwo | ?eval ->{} ~~ Code | ||
evalbot6 | bool::false | ||
theorbtwo | Yeah, quite broken. | 15:23 | |
lathos | class Foo; my $x = Foo.new; $x ~~ Object | ||
?eval class Foo; my $x = Foo.new; $x ~~ Object | |||
evalbot6 | bool::false | ||
arcady | err... that | ||
s | |||
not right | |||
theorbtwo | ?eval ->{} ~~ ::Code | ||
evalbot6 | bool::false | ||
lathos | ?eval class Foo; my $x = Foo.new; $x.isa("Foo") | ||
evalbot6 | bool::true | ||
lathos | ?eval class Foo; my $x = Foo.new; $x.can("new") | 15:24 | |
evalbot6 | Error: No compatible subroutine found: "&can" | ||
lathos | Balls. | ||
autrijus | er. you want .can? | ||
broquaint | Mental note - return () != return() | 15:25 | |
theorbtwo | Yes, and a similar thingy callable from haskell, for implementing stingification of VObjects with. | ||
(Though come to think of it, possibly that's better done with a multimethod stringify(Any $x).) | 15:26 | ||
Oh, anybody know what that's supposed to be named? | |||
autrijus | &prefix:<~> ? | 15:27 | |
theorbtwo | Oh, of course. | ||
autrijus | the problem with .can is that it ignores MMD :) | ||
but I guess it's better than nothing | |||
if so, one can adapt Eval.hs's findSub code to implement "can" | 15:28 | ||
hm. maybe it can return a list of code as candidates. | 15:29 | ||
probably not a junction though. | |||
theorbtwo | Aaah! Pugs.Eval.findSub! I knew there had to be one somewhere! | ||
autrijus | purr :) | ||
refactorings welcome | |||
theorbtwo | To add a stringify to class Value, and move everything's stringify out of VStr to the thing being stringified? | 15:30 | |
lhooq | ?eval ->{}.does(Code) | ||
evalbot6 | bool::true | ||
lhooq | ?eval my @array=(1,2,3); @array+1; | 15:31 | |
evalbot6 | 4.0 | ||
QtPlatypus looks curious as to why that answer looks like a real. | 15:32 | ||
theorbtwo | Args on findSub are name, without leading &, invocant, other arguments? | 15:33 | |
autrijus | QtPlatypus: because &infix:<+> MMD's it to (Num,Num) | ||
theorbtwo: with the leading &, Ithink | |||
findSub "&prefix:~" (Just (Val $ VObject obj)) [] | 15:34 | ||
is probably the thing you want | |||
xerox | hiya | ||
autrijus | yo xerox | ||
theorbtwo | Danke, autrijus. | ||
autrijus | Bitte schƶn | ||
"In 2000, many developers feel that Perl 5 development is stuck. Some has | |||
described the C-based runtime as a tower of Jenga, where new features are | |||
constrained to re-use existing semantics, making it ever more fragile. | |||
" | |||
xerox | Would "The Perl Foundation" mentor Google's SoC projects related to pugs? | 15:35 | |
autrijus | lathos: is it okay to attribute the quote to you, or will you prefer to be known as "some"? | ||
xerox: yeah, already I saw two people asking about pugs-related projects | |||
lathos | It's fine. That's from my ORA blog, I think. | ||
autrijus | yes. | ||
xerox | autrijus, nice, working with Haskell would be very very nice.. | ||
theorbtwo | autrijus: I thought you were keeping TPF out of it? | 15:36 | |
lathos | Since that's about as public as it gets anyway, I don't mind my name being on it somewhere else. :) | ||
autrijus | theorbtwo: if google funds TPF funds people to hack on Pugs, I wouldn't mind at all | ||
theorbtwo | BTW, s/Some has/Some have/ | ||
autrijus | right. | ||
autrijus wonders if Bestian will have some tuit to hack on pugs and maybe submit a proposal | 15:37 | ||
anyway I'll ask him this weekend | |||
theorbtwo | D'oh, I'm an idiot sometimes. | 15:38 | |
autrijus | we all are :) | 15:39 | |
theorbtwo | Can't use Pugs.Eval.findSub from VStr's vCast, because it needs to be in an Eval. | ||
autrijus | :) | ||
time to change all of them to fromVal. | |||
(as was the plan all along) | |||
(but of course you can just fromVal the VObject case first) | 15:40 | ||
QtPlatypus | In pugs is there anyway to get start up the rpel from inside a script? | 15:43 | |
s/rpel/repl/ | |||
theorbtwo | Other then running an interior copy of pugs, not that I'm aware of. | 15:44 | |
OTOH, you can use eval STRING. | |||
(Though I don't think there's a way to keep a scope that way.) | |||
lhooq | ?localtime(); | 15:45 | |
theorbtwo | ?eval localtime | 15:46 | |
evalbot6 | Error: No compatible subroutine found: "&localtime" | ||
lhooq | yup | ||
clkao | autrijus: tea will go through another route. | ||
theorbtwo | Shouldn't a false VBool stringify to '0', not ''? | 15:48 | |
lhooq | ?eval sub x { return (1,2,3); } print x(); | 15:50 | |
evalbot6 | Error: No compatible subroutine found: "&print" | ||
lhooq | ?eval sub x { return (1,2,3); } x(); | ||
evalbot6 | (1, 2, 3) | ||
lhooq | ?eval sub x { return (1,2,3); } my @a = x(); @a; | ||
evalbot6 | [1, 2, 3] | ||
lhooq | uhm | ||
is this correct? | |||
autrijus | clkao: ok. | 15:51 | |
theorbtwo: I don't know. perl5 stringifies false to '' | |||
theorbtwo | Yeah. I thought that was going to change, but I don't want to get sidetracked looking it up. | ||
autrijus | lhooq: yes, I think. | 15:52 | |
broquaint | Yep, lhooq, in on case it outputs the list 1,2,3 and the other case it outputs the array @a (and arrays are containers, hence the []) | ||
lhooq | ?eval my @a = (1,2,3); @a; | 15:53 | |
broquaint | s/in on/in one/ | ||
evalbot6 | [1, 2, 3] | ||
autrijus | ?eval my @a = [1,2,3]; @a | ||
evalbot6 | [[1, 2, 3]] | ||
lhooq | oh, ok, I see | ||
autrijus | mmm "5.8 will be the final release of Perl 5" | 15:56 | |
svnbot6 | r4352, autrijus++ | * hw2005.txt - overview; historical background | ||
autrijus | I'm happy that I'm almost done with the history part | ||
integral | hmm, someone got that one wrong :-) | 15:57 | |
autrijus | it's fascinating, but not very exciting, stuff :) | ||
(as always, proofreads are welcome) | |||
Forth_ is reading Haskell for C programmers, hopefully my brain can handle those strings | 16:12 | ||
autrijus | Forth_: oh, also read nothingmuch's Forth journal | 16:13 | |
Forth_: feather.perl6.nl/~nothingmuch/harrorth/ | 16:14 | ||
(you can "darcs get feather.perl6.nl/~nothingmuch/harrorth/") | |||
I found the README, journal.kwid and docs/*.kwid to be excellent reads | |||
Forth_ | the last time using Forth was 10 years ago | ||
autrijus | nothingmuch is implementing Forth in haskell | 16:15 | |
with extensive documentation on each bit of haskell he learned about | |||
so should be quite helpful :) | |||
clkao | autrijus: so, there will be p2p svk make use of rendezvous for your hackathon | 16:17 | |
autrijus | clkao: Net::Rendezvous? | ||
I wonder if it should be called Net::Bonjour now | 16:18 | ||
integral | Is there a non-apple-specific name for it? | ||
autrijus | zeroconf? | ||
integral | Net::Zeroconf would save changing it every week | ||
autrijus | very true. | 16:19 | |
autrijus decides to pause and rest a bit from writing about perl6's design goals | 16:20 | ||
dakkar | if I redefine &infix:<+>(Num,Num), how can I access the "regular" numeric '+'? | 16:21 | |
autrijus | especially I can't easily reconcil perl6's metaprogramming ideas with existing literature. maybe I should read up a bitmore | ||
dakkar | metaprogramming? you mean macros and the like? | ||
autrijus | dakkar: &*infix:<+> presumably | ||
dakkar | what does that '*' mean? "global"? | ||
autrijus | dakkar: that, and rebindable grammar, and BEGIN{...}, etc | ||
yeah. | 16:22 | ||
dakkar | for macros & grammars, I think LISPis the only language to allow that level of AST-changing | ||
but then, LISP is easier to manipulate | |||
and, haw do I distinguish between different multisub with the same name, say to get a reference to one for wrap or similar? | 16:23 | ||
autrijus | you address it using its long name. | 16:24 | |
sadly, the long name is unspecced! | |||
SamB | lisp lets you do so much with the AST, nobody got around to doing a concrete syntax ;-) | ||
autrijus | SamB: exactly ;) | ||
it's forever "planned" | |||
dakkar | aha! that's why I could find the way! | ||
autrijus | until noone remember about it anymore | ||
stevan | autrijus: maybe @Larry[0] will share some blue ice cubes at the hackathon, it might help things make sense | ||
SamB | autrijus: don't you think the plans have been scrapped by now? | 16:25 | |
autrijus | SamB: eh sure. I was talking about ancient history | ||
SamB | well yeah, they had plans like that for a long time I guess ;-) | 16:26 | |
autrijus | dakkar: S12 has long names. however there's no concrete syntax for multisub longnames | ||
the closest we get is role longnames | |||
in which case it will look like &infix:<+>[Num,Num] | |||
stevan | autrijus: have you looked at nothingmuch's first-class-signature ideas? | 16:27 | |
autrijus | dakkar: but it's unspecced. if you'd like them, pick a syntax you think that fits your brain, write t/unspecced/ test for it, and post it to p6l for acknowledgement | ||
stevan: yeah, a bit | |||
stevan | would that help in this case? | ||
eric256 | since we have named paramteres for subs does that mean multi sub test (Str $test) and multi sub test (Str $testing) are different? | ||
stevan | being able to define a sig outside of a function | 16:28 | |
then match it | |||
dakkar | eric256: I surely hope not! ;-) | ||
stevan | let the normal MMD find it for you | ||
autrijus | eric256: not according to the spec -- param names are ignored | ||
eric256 | okay. just wanted to make sure, because that could be both very usfull and very scary. lol | ||
stevan | so then longnames really would be (short_name + sig) | ||
autrijus | eric256: I can't think of its utility | 16:29 | |
stevan | or even (pacakge-name + short-name + sig) | ||
autrijus | so it's only very scary to me | ||
stevan: sure, qualified names goes w/o saying | |||
eric256 | mult sub test (Str $test) with Sig( eric.0.1 ) {}; my $test = &test[eric.0.1]; lol | ||
autrijus | if there's a long name, you can still prefix it with package qualifier | ||
stevan | yes | ||
autrijus | so no problem there | ||
stevan | I just wonder if something like: my $sig = [ Num, Num ]; would be useful | 16:30 | |
autrijus | I think it's spelt | ||
my $sig = :(Num, Num) | |||
stevan | ok | ||
autrijus | according to larry | ||
stevan | but is that a language level or meta-level thing? | ||
autrijus | it's language level | ||
stevan | ah | ||
so it's already there then,.. :) | |||
autrijus | I think signatures -- or types, depending on how you think of them -- are first class | 16:31 | |
it's again unspecced ;) | |||
stevan | :D | ||
oh well | |||
autrijus: I have managed to emulate the Smalltalk meta-class model in perl 5 | 16:32 | ||
eric256 wonders if signature definitions should play nice with module/pacakges/classes.... seems like the two are related...think use Net::IRC--perl5 where perl5 would be considered part of the signature. | |||
autrijus | no, it means we get to write more t/unspecced/ tests | ||
stevan: ooooh. CPAN it! | |||
stevan | following exactly how S80 works | ||
its not *that* ready yet | |||
autrijus | but don't call it Meta::* | ||
stevan | I wont :) | ||
autrijus | you can put 0.00_01 to $VERSION | ||
eric256: "perl5" is actually the author part | 16:33 | ||
stevan | I am going to now use it as a base for building the perl6 on top of it | ||
autrijus | (see S11) | ||
eric256 | my point was that it is a signature in that it helps you choose which of many modules with the same name to use, just like a function signature helps choose one of many functions | ||
autrijus | eric256: sure. again see S11 :) | ||
geoffb | How are procedural modules from Perl5 that export all of their functions to the callers namespace represented when you do 'use Foo--perl5'? | 16:34 | |
autrijus | geoffb: export is currently not handled | ||
Khisanth | S80? didn't know that camel had that many chapters | ||
geoffb | In this particular case, I'm asking about 'use SDL::OpenGL--perl5', which pollutes heavily . . . er, because that's the OpenGL Way. :-) | ||
geoffb, AH! | |||
autrijus | geoffb: it's merely adding "our &foo := Module::Name.can('blah')" calls | ||
geoffb | er, that was for autrijus | ||
autrijus | geoffb: see cpan-upload.p6 | ||
geoffb | autrijus, OK, will try that. In between chasing daughter around the house. :-) | 16:35 | |
autrijus | geoffb: it should be straightforward to add that to Parser.hs's call of require_perl5 | ||
geoffb: if you can, write a t/unspecced/p5/export.t to exercise known imports from core modules | |||
that will help a lot. | |||
i.e. | 16:36 | ||
use File::Basename--perl5; | |||
use File::Basename--perl5 (); | |||
use File::Basename--perl5 'basename'; | |||
etc. | |||
as well as explicit Package.import() calls. | |||
I'll bbiab. :) & | |||
geoffb | autrijus, OK, will do -- it will be a while today because schedule suddenly packed with life. | ||
autrijus | that's fine. thanks! & | 16:38 | |
geoffb afk to feed offspring | |||
stevan | Object->class->methods->{is_object} = sub { "yes" }; # work :) | ||
that should make merlyn happy :P | |||
dakkar | from the release notes for 6.2.6: āMulti-invocant calls like foo($x, $y: $z) are no longer legalā refers only to sub and method calls? not to multi? | 16:43 | |
i.e. can I still have MMD discriminating on more than 1 argument? | |||
and how come I can have āsub infix:<->(Array $a,Num $b)ā and āsub infix:<->(Num $a,Num $b)ā in the same scope, and have MMD semantic (they're sub, not multisub)? bug? | 16:47 | ||
wolverian | definitely a bug | 16:59 | |
SamB | hmm, the artistic license doesn't seem to consider the possibility that someone might want to steal just snippets of code... | 17:00 | |
Corion | ... do we care about somebody "stealing" our code? Since when? | 17:09 | |
stevan quickly snatches up all of Corion's code | |||
muhahaha, ... you can't have it now :P | 17:10 | ||
Corion | geoffb: BTW, if you're implementing something OpenGL-ish, consider looking at OpenGL::Simple, which does away with the ugly *3 and *4 variants and does the dispatch using the length of the parameter list. Much more perlish ;) | ||
stevan: :) | |||
stevan: So you're taking care of it now? Yay! I have some bug reports and feature requests for you!! | 17:11 | ||
stevan drops his sack of stolen code and runs away | 17:12 | ||
Corion | ... all the people do that when I show them my code :( | 17:13 | |
stevan | :D | ||
dakkar | how do I trap a warning in a test? | ||
Corion | dakkar: warns_ok ? | ||
We should have something in Test.pm that checks that no warnings get raised ... (except that I gotta run now) | 17:14 | ||
stevan | dakkar: I am not even sure warnings can be captured yet (at least not like they are in Perl5) | 17:15 | |
dakkar | so I can't write the test for the misbehaving multisub semantic... | 17:16 | |
I stand corrected: I can write most of it | 17:19 | ||
eric256 | what does this mean? 10[09:37] stevan: 01Object->class->methods->{is_object} = sub { "yes" }; # work :) | 17:25 | |
Limbic_Region | eric256 - I haven't had a chance to digest your OO solution (marathon meeting) but thank you | ||
btw - did my explanation help? | 17:26 | ||
pasteling | "dakkar" at 81.174.26.51 pasted "proposed test for sub redefinition" (15 lines, 313B) at sial.org/pbot/10684 | 17:27 | |
dakkar | can someone check that it makes sense? | 17:28 | |
according to S12, both tests should pass (if I interpret correctly) | |||
eric256 | Limbic_Region: yes the explanation helped alot, i couldn't manage to wrap my head around some of your code but with the explanation it makes lots of sense. | 17:29 | |
Limbic_Region | it is soooo simple I have no idea why I didn't think of it previously | ||
in any case - I am off for food now - marathon meeting is over but my tummy is growling | 17:30 | ||
eric256 | what is soo simple? | ||
Limbic_Region | how to do it | ||
arbitrarily nested loops that is | 17:31 | ||
anyway - food & | |||
stevan | eric256: the Object->class->... thing | ||
in my exploration of the meta-model | 17:32 | ||
I have decided to use the Smalltalk 80 model for a basis of the perl6 one | |||
(at least to prototype it that is) | |||
I am thinking about CPANing it as Acme::Smalltalk::MetaModel or something | 17:33 | ||
dakkar | I'm going to write my thoughts on (multi)sub to p6l | 17:38 | |
17:42
lampus_ is now known as lampus
|
|||
geoffb appears hazily for a moment because of the red in his window . . . | 17:48 | ||
eric256 | i was mostly confused stevan because pugs doen't use -> but . | 17:49 | |
stevan | eric256: yes, i was doing this in Pugs, but it basically got too slow | ||
too much manual method dispatching :) | |||
geoffb | Corion, in case you read the backlog: SDL::OpenGL already does automatic dispatch of correct variant. As a downside, it just uses float (almost) everywhere, but that's not killing me yet, since it doesn't apply to textures. | 17:50 | |
geoffb fades out again . . . back later | |||
nothingmuch | do we have a makefile param to control how much memory GHC will get to compile pugs? | 17:53 | |
nevermind, must leave | 17:55 | ||
integral | hmm, what does it mean when svk says "Mirror source already removed." about your pugs mirror? | 18:23 | |
SamB | hmm, anyone know a lot about the artistic license? | 18:34 | |
theorbtwo | SamB, it's quite readable. | 18:36 | |
SamB | yes, yes. but it doesn't say anything about stealing snippits! | ||
or at least, it doesn't seem to. | 18:38 | ||
eric256 | stealing snippets? about you can or you can'ts | 18:39 | |
SamB | I was hoping for "you can"... | ||
eric256 | haven't you ever heard "its easier to ask for forgivness than permission" ? | 18:40 | |
:) | |||
SamB | hmm | ||
eric256 tries to remember what he needs to write a test for | |||
?eval class f { method test { "hi"}}; my $f = f.new; f.test; f.blah; | 18:41 | ||
evalbot6 | Error: No compatible subroutine found: "&blah" | ||
eric256 | fixed over night? guess that wouldn't be a first | ||
SamB | what is this "night" you speak of? | ||
eric256 | ?eval class f { method test { $.testing = "hi"}}; my $f = f.new; f.test; | ||
evalbot6 | \'hi' | ||
SamB | so, you think I should steal it and hope nobody notices, or steal it and put in an attribution? | 18:43 | |
eric256 | that was the bug. | 18:44 | |
always put in an attribution and unless you are planning on getting rich on the code you probably don't need to worry as long as you make some effort to contact the approriate person | 18:45 | ||
but them i'm no lawyer | |||
SamB | I don't actually think I want to steal this whole, anyway ;-). too tangled with everything else. | 18:46 | |
eric256 | lol. just look at it for a long time then recreate your own version. i'm not sure how in the world code copyrights work anyway. or music ones for that matter, there are only so many combinations before you have something someone else probably did already | 18:47 | |
SamB | oh, you are allowed to write the same thing. you just aren't supposed to copy it! | 18:48 | |
without permission, that is | |||
SamB makes a directory just for papers by simonpj | 18:50 | ||
eric256 | how can When tell if something is a substitution? shouldn't that be .does(Rule) ?? | 18:58 | |
stevan | autrijus: I uploaded the smalltalk meta-model stuff to feather | 19:29 | |
feather.perl6.nl/~stevan/smalltalk_in_perl5.pl | |||
it's hacky in places, but so far so good | |||
integral | steven++ | ||
stevan | :) | 19:30 | |
the dispatcher is the ugliest part right now | |||
integral | this is for one of the later smalltalks? not smalltalk-72 (the only one I know :-/)? | 19:31 | |
stevan | smalltalk 80 :) | ||
theorbtwo | It's possible to infringe a patent without knowing the original exists. That isn't true of copyrights; if two people happen to write the same thing, then they are both equally original. | ||
stevan | Merlyn already read us the riot act for using smalltalk 72 ideas | ||
Limbic_Region | geoffb ping | 19:51 | |
theorbtwo | How long is the hw2005 tutorial supposed to be? | 20:21 | |
svnbot6 | r4353, iblech++ | * Usual svn properties added to ext/, t/, and src/. | 20:48 | |
r4353, iblech++ | * Fixed t/var/state.t. | |||
r4354, iblech++ | svnbot.p6: | |||
r4354, iblech++ | * Unbreak svnbot.p6. | |||
r4354, iblech++ | * Slightly more P6ification. | |||
r4354, iblech++ | * Consistent 4-spaces indentation. | |||
r4355, iblech++ | * Makefile.PL -- Make `make smoke` not run `make test`. | |||
r4355, iblech++ | * docs/mmd.kwid -- Usual svn props. | |||
sri_ | www.perl.com/pub/a/2005/06/02/catalyst.html # in case you don't know what Catalyst is ;) | 21:06 | |
svnbot6 | r4356, iblech++ | svnbot.p6 -- Forgot to indent a passage. | ||
Aankhen`` | How come failed tests are only showing what was got, and not what was expected? | 21:08 | |
svnbot6 | r4357, iblech++ | mklivecd.pl -- Adjust the initrd size again, as Pugs continues to grow :) | 21:12 | |
iblech | (back :)) | ||
Aankhen``: Thanks for reporting, fixed and committing :) | |||
Aankhen`` | iblech++ # thanks for the quick fix! | 21:13 | |
svnbot6 | r4358, iblech++ | ext/Test/lib/Test.pm -- Make is() etc. show the expected result again. Thanks | 21:14 | |
r4358, iblech++ | for Aankhen``++ for reporting :) | |||
Aankhen`` | Hrm. | 21:15 | |
Is the eval() lexical context thingie bug going to be fixed any time soon? | |||
iblech | Don't think so, as that's simply the way eval() behaves -- eval() executes the code in the lexical pad of the sub which calls eval(). eval_is()'s lexical pad != your lexical pad ==> problem | 21:16 | |
Aankhen`` | Darn. | 21:17 | |
iblech | But both is eval(...), ... and is try {...}, ... work | ||
wolverian | iblech: hmm, perl6's eval() doesn't create a subscope? | ||
Aankhen`` | Is it ever going to be fixed? Or is it a misinterpreted feature? | ||
iblech | And, IIRC, there was some discussion about eval() taking a :pad parameter | ||
wolverian: Sure it does, but the subscope's parent is the scope of the calling sub (or block, or whatever), not the one of the main test file | 21:18 | ||
Aankhen``: When/If the :pad parameter is accepted by @Larry, you (=Test.pm) could use something like (I think): eval $code, pad => %CALLER:: | 21:19 | ||
Aankhen`` | Yey! | ||
iblech | ?eval eval 'my $a = 42'; $a | ||
evalbot6 | Error: Undeclared variable: "$a" | ||
iblech | ?eval my $a = 42; eval '$a = 23'; $a | 21:20 | |
evalbot6 | \23 | ||
theorbtwo | (But only after we implement %CALLER:: (as a whole shebang). | ||
Aankhen`` | Heh. | ||
vcv | what would happen if i did ?eval for 1..Inf { } | ||
Aankhen`` | Timeout? | 21:21 | |
theorbtwo | ?eval my $x=42; sub foo {$x=23; say %OUTER::}; foo | ||
iblech | ?eval for 1..Inf {} | ||
evalbot6 | Error: unexpected "O" expecting term | ||
Error: unexpected "f" expecting program reserved word | |||
iblech | %OUTER:: is not yet implemented, IIRC | ||
vcv | for 1..Inf { print } | ||
uh oh | |||
forgot eval | |||
?eval for 1..Inf { print } | |||
evalbot6 | Error: unexpected "f" expecting program reserved word | ||
vcv | ?eval my $x = Inf; for 1..$x { print } | 21:22 | |
iblech | ?eval for(1..Inf) { print } | ||
evalbot6 | pugs: out of memory (requested 1048576 bytes) | ||
vcv | nice | ||
iblech | evalbot has got a memory limit and a cpu time limit, see examples/network/evalbot/evalhelper.p5 for details :) | 21:23 | |
theorbtwo wonders. | |||
vcv | very cool | ||
theorbtwo | ?eval sleep 2*60; | ||
evalbot6 | Error: No compatible subroutine found: "&sleep" | ||
Aankhen`` | ?eval my $x = 42; sub foo { $x = 23; say %OUTER::; }; foo(); | ||
evalbot6 | Error: unexpected "O" expecting term | ||
theorbtwo | Oh. | ||
Aankhen`` | Bah. | ||
theorbtwo | %foo:: is not parsed. | ||
(See Pugs.Parser.varName, or something like that.) | |||
Aankhen`` | iblech >> How come isa_ok() doesn't work correctly? | 21:24 | |
vcv | i wonder if there would be a way to limit a block of code | ||
Aankhen`` | ?eval use Test; my Str $foo; isa_ok($foo, 'Str', '$foo isa Str'); | ||
evalbot6 | pugs: *** No compatible subroutine found: "&use" at -e line 4, column 5-100 | ||
iblech | Aankhen``: Give me an example? | ||
Aankhen`` | Bah. | ||
pugs> use Test; my Str $foo; isa_ok($foo, 'Str', '$foo is a Str'); | |||
not ok 1 - $foo is a Str | |||
# Failed test (<interactive> line 1, column 24-60) | |||
# Got: Scalar | |||
1 | |||
vcv | limit :cpu(5000) { ... } | 21:25 | |
er.. :time maybe | |||
Aankhen`` | pugs> my Str $foo; $foo.isa('Str'); | ||
bool::true | |||
iblech | Aankhen``: Ah, that's because the Str type declaration doesn't do anything yet -- $foo stays a Scalar until you assign a string to it | 21:26 | |
Aankhen`` | See the second paste. | ||
iblech | pugs> my Str $foo; $foo.isa('Str'); | 21:27 | |
bool::false | |||
Hm | |||
Aankhen`` | Hmm. | ||
I guess maybe I have a slightly outdated build or something. | |||
vcv | pugs> my Str $foo; $foo.isa(<Str>); | ||
undef | |||
oh wait.. svn update | |||
iblech | ?eval my Str $foo; $foo.isa('Str'); | 21:28 | |
Aankhen`` | Jeez. | ||
evalbot6 | bool::false | ||
Aankhen`` | I haven't compiled for quite some time. | ||
Or actually, I haven't tested and installed. | |||
I did compile earlier today. | |||
My Pugs is at r4321. | |||
Hmm, nevermind my babbling. | |||
I read the latest version number as r45XX. | 21:29 | ||
And that is why I need to sleep. | |||
G'night, see y'all in the morning. :-) | |||
vcv | nm i need to set up a task to run svn update;nmake;nmake;nmake install every night | ||
iblech | Night :) | ||
There's util/smoke_loop.sh. It does not install though, IIRC | 21:30 | ||
vcv | too bad i dont use cygwin ;) | 21:31 | |
iblech | Gonna sleep, too, cu tomorrow :) | 21:35 | |
eric256 | ?eval $PUGS_VERSION | 21:38 | |
evalbot6 | Error: Undeclared variable: "$PUGS_VERSION" | ||
eric256 obviosly got that wron | |||
g | |||
wolverian | ?eval my Str $foo; $foo.does(Str) | 21:39 | |
evalbot6 | bool::false | ||
wolverian | ?eval my Str $foo = "bar"; $foo.does(Str) | ||
evalbot6 | bool::true | ||
wolverian | that is probably the right semantics. | ||
or not? is that specced? :) | 21:40 | ||
integral | well calling Str functioning on $foo when it's undef probably won't work ... | 21:41 | |
nothingmuch | beh | 21:46 | |
nothingmuch just implemented TAP in 8086 assembler for his student | 21:47 | ||
that way she can retain her sanity, by going into the debugger when a problem is discovered | |||
not when a problem is suspected | |||
seen autrijus? | 21:55 | ||
jabbot | nothingmuch: autrijus was seen 5 hours 17 minutes 56 seconds ago | ||
theorbtwo | TAP++ # generality. | 22:21 | |
22:21
batdog is now known as batdog|gone
|
|||
theorbtwo | eric256: ?eval $*PUGS_VERSION | 22:26 | |
?eval $*PUGS_VERSION | |||
evalbot6 | Error: Undeclared variable: "$*PUGS_VERSION" | ||
theorbtwo | ?eval $*PUGS_REVISION | ||
evalbot6 | Error: Undeclared variable: "$*PUGS_REVISION" | ||
theorbtwo | Or not. | ||
eric256 | lol | 22:32 | |
TAP? | |||
theorbtwo | The Test Anything Protocol -- what tests should output to the test harness. | 22:35 | |
eric256 | ahh | ||
nothingmuch | HOLY CRAP! | 22:40 | |
forth evaluator | |||
35 lines, including white space | |||
knows to push literals | |||
and has the "." word | |||
nothingmuch seems to be getting somewhere | 22:41 | ||
someone say "wow" please | |||
theorbtwo | "wow". | 22:46 | |
Now, what happened. | |||
Cool. | |||
What's the "." word? | |||
nothingmuch | the "." word prints the stack head to STDOUT | 22:47 | |
hold on, i'll slap together a shell, and document chapter 4 | |||
Limbic_Region | how do I add a directory in svk/svn - same way I would a file ? | ||
nothingmuch | actually not a shell, an STDIN thing | ||
Limbic_Region: yep | 22:48 | ||
but be careful - the default is recursive add | |||
(for svn at least) | |||
Limbic_Region | that's what I want | ||
nothingmuch | it tends to be messy | ||
putting in ignorable files | |||
wait, it probably doesn't | |||
i tend to be messy, ignoring the ignorable files settings | |||
revdiablo | you don't have to commit once you add, either. so if you see it found some files you don't want to add, you can revert... | 22:49 | |
please rearrange that as appropriate so it makes sense. :) | |||
nothingmuch | *Harrorth.Eval> dumpInterp [ Push 1, Push 2, Invoke ".", Invoke "." ] | ||
2 | |||
1 | 22:50 | ||
Interp {stack = []} | |||
dumpInterp takes an AST, constructs an interpreter, and pushes the AST into the interpreter | |||
theorbtwo | Nifty-nifty-nifty! | 22:52 | |
nothingmuch | wooo! parser glued onto evaluator | 23:04 | |
% ghci -isrc src/Harrorth/Shell.hs | |||
*Harrorth.Shell> main | |||
4 5 . . | |||
5 | |||
4 | |||
Interp {stack = []} | |||
theorbtwo | YEY! | 23:05 | |
nothingmuch | *Harrorth.Shell> main | ||
1 | |||
Interp {stack = [1]} | |||
theorbtwo | Is . hardcoded, or do you look it up in a hash of some sort? | ||
Er, a Data.Map, I suppose that'd be. | |||
nothingmuch | theorbtwo: right now it's hard coded | ||
theorbtwo | Nod. | ||
nothingmuch | doExp i (Invoke ".") = do | ||
let (stackHead, i') = popStack i | |||
putStrLn $ show stackHead | |||
return i' | |||
eek, putStrLn $ show stackhead should be print | 23:06 | ||
print has such a pretty signature | |||
print :: (Show a) => a -> IO () | |||
theorbtwo | Donno. | 23:07 | |
The () type seems hackish to me. | |||
(Why the special name?) | |||
nothingmuch makes idiot noises | |||
this is so much fun! | |||
i actually like () | 23:08 | ||
theorbtwo | Yey! | ||
nothingmuch | but i was appreciating (Show a) => a | ||
i ought to document my progress while I'm still enthusiastic | |||
theorbtwo | Yeah. | ||
There's a lot of pugs things that use that -- mostly on Value. | |||
nothingmuch | hmm | 23:09 | |
Limbic_Region | ethics question - is there an issue with me including examples from PerlMonks ? | 23:10 | |
obviously I can add my own | |||
nothingmuch | including examples from perlmonks where? | ||
Limbic_Region | perlmonks.org/?node_id=462987 | 23:11 | |
myself, iblech, eric256, and geoffb all already commit | |||
blokhead will soon | |||
mrborisguy | doesn't about everybody that commented on that come here? | ||
Limbic_Region | but should I first ask permission? | ||
yes mrborisguy | |||
I was just about to add it when I thought maybe I should get a sanity check | 23:12 | ||
mrborisguy | i guess you probably SHOULD check, but almost everybody here will tell you to go for it | 23:13 | |
(i would bet) | |||
geoffb | Limbic_Region, just here for a minute in between tasks . . . | ||
you pinged earlier? | |||
Limbic_Region | I also /msg'd | ||
geoffb | ah, yep, got it, cool. | 23:14 | |
Limbic_Region | geoffb - do you have an issue with me adding your coroutine example? | ||
geoffb | not at all . . . which version are you using? | ||
Limbic_Region | perlmonks.org/?node_id=463076 | ||
geoffb | cool. | 23:15 | |
Limbic_Region | ok - I am just going to /msg the remaining authors | ||
geoffb | And as a general rule, unless I do something for $work, I release stuff under the Perl dual license. All I generally ask for someone combining my code into something is notice that it happened, so I can link to it from my website or somesuch. | 23:16 | |
Limbic_Region | well sure - I think that is generally people's policy | 23:17 | |
but..... | |||
nothingmuch | Limbic_Region: btw, is the tutorial getting any better? | 23:18 | |
i filled in a lot of holes | |||
Limbic_Region | nothingmuch - sorry - haven't had a chance today | ||
mrborisguy | i never know what's actually a bug, and what people just haven't implimented yet | ||
Limbic_Region | will look at it just as soon as I am finished figuring out how to add this new directory | 23:19 | |
geoffb | Anybody need anything else from me, before I disappear again? | ||
nothingmuch | Limbic_Region: okay... svn add directory | ||
mrborisguy | eg: while( my $result = &code() ) { ... there's an error for my... bug or unimplimented? | ||
nothingmuch | =) | ||
mrborisguy | (or just completely wrong) | ||
geoffb | OK, assuming no . . . tt | 23:20 | |
geoffb dissolves into the aether again | |||
nothingmuch | mrborisguy: i doubt that's parsed | ||
but write a test anyway | |||
Limbic_Region | mrborisguy - unimplemented | ||
Limbic_Region has mentioned it a couple of times but keeps forgetting to write a test | |||
mrborisguy | you write an 'eval' like test then? | ||
nothingmuch | mrborisguy: exactly | ||
Limbic_Region | ok - if I did everything correctly - there should be a new examples/nested_loops directory | 23:21 | |
mrborisguy | (i'm kinda new to writing tests... my last boss never had me do it... i doubt he really knew) | ||
Limbic_Region | with 5 examples of how to do arbitrarily nested loops in p6 | ||
4 of which work in the current pugs | |||
nothingmuch | tests make you feel good =) | ||
mrborisguy | i've written a few... i do like them | ||
eric256 | did mine make the cute? ;) | ||
nothingmuch | when I studies assembler in school 3 years ago i knew nothing of testing, and I couldn't compile 8086 because i was on ppc | ||
eric256 | lol. cut* | ||
Limbic_Region | eric256 - yes and no | ||
it works | |||
mrborisguy | they make me feel... like i've brought more order to the world | ||
Limbic_Region | but it produces odd output | 23:22 | |
I left it alone though | |||
nothingmuch | i was sooo annoyed | ||
eric256 | odd output? | ||
nothingmuch | today i wrote automated tests for my student, also in assembler, before we even started the excercise | ||
and then she just went through it | |||
Limbic_Region | eric256 - output times 2 | ||
once with HERE prefacing | |||
and once without | |||
nothingmuch | she went into the debugger 3 times, and that's it. The whole excercise was done. | 23:23 | |
eric256 | yea. two examples, one using it as an interator, one giving it a code block | ||
Limbic_Region | nothingmuch - link? | ||
eric256 | probably wasn't as clear as it could have been. ;) | ||
nothingmuch | i'm just starting to write an important chapter | ||
backlog 10 minutes | |||
Limbic_Region: to the harroth stuff? feather.perl6.nl/~nothingmuch/harrorth | |||
Limbic_Region | yep | 23:24 | |
nothingmuch | but it doesn't really matter, because the begining is also important | ||
Limbic_Region | ok - well then I will wait | ||
nothingmuch | actually don't wait, i'm a slow writer, i doubt i will finish it by the time i need to sleep | ||
Limbic_Region | well there are a couple of more tests I should be writing | ||
trying to figure out where to put "is required" | 23:25 | ||
svnbot6 | r4359, Limbic_Region++ | Examples of arbitrarily nested loops iblech++ blokhead++ geoffb++ eric256++ | ||
Limbic_Region | ok - I know there was another test or 2 I was supposed to write | 23:30 | |
svnbot6 | r4360, Limbic_Region++ | Added is required tests to named parameters | ||
Limbic_Region | I am also supposed to be going through the Ss and find stuff missing | ||
Limbic_Region wanders off to read nothingmuch's tutorial | 23:31 | ||
nothingmuch | Limbic_Region: do you know a bit of haskell? | ||
Limbic_Region | nope | 23:32 | |
Once you can read a function like .... you should be ok to continue | |||
nothingmuch | yep.... =/ | ||
Limbic_Region | so I guess I need to go read a Haskell tutorial | ||
which isn't gonna happen ATM | |||
nothingmuch | the tutorial is mostly based on my frustrations trying to learn | ||
but not finding a real use | |||
don't be scared of it though ;-) | |||
it | |||
it's 5 minutes of YAHT | 23:33 | ||
Limbic_Region | nothingmuch - it scared me and I ain't fraid of nuthin | ||
nothingmuch | i do explain the basics, just not in the order that "normal" tutorials are | ||
Limbic_Region++ | 23:34 | ||
Limbic_Region | and well - I can figure out what is going on by looking at some Haskell - it is like reading pseudo code to me | ||
I can understand it well enough to figure out what is going on | |||
but I wouldn't feel comfortable trying to debug it | |||
nothingmuch | okay, so that's good enough | ||
basically what I'm avoiding in that paragraph is explaining that: | |||
haskell is lazy | |||
what haksell looks like | |||
what is functional programming, | 23:35 | ||
Limbic_Region | ok - well I need to wander off for a bit | ||
will bbiab | |||
& | |||
nothingmuch | ciao! | ||
eric256 | i can't seem to figure out substitutions with s/// in pugs... or do you have to use subst now? | 23:54 |