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