Run Perl6 Now! | pugscode.org ('Overview', 'Journal') | pugs.kwiki.org | chan now logged: xrl.us/e98m Set by theorbtwo on 28 February 2005. |
|||
buu | Juerd I spent it all on perl6 books | 00:28 | |
00:29
_metaperl is now known as metaperl
|
|||
Juerd | buu: How many copies did you buy then? | 01:10 | |
There only being two books about Perl 6... | |||
pbuetow | Perl6 is still not complete in specs. Am i right? | ||
Steve_p | Correct. | 01:11 | |
pbuetow | And the stuff about perl6 (syntax etc) which is public wont be changed any more? | 01:12 | |
Cale | pbuetow: it might be changed | 01:20 | |
Steve_p | They can still be changed. Welcome to a still evolving language :) | 01:21 | |
ingy screams | 01:28 | ||
mugwump | and that will never change, because the one thing that is constant is change | 01:29 | |
ingy | MakeMaker is a whore | 01:31 | |
pbuetow | Hehe. Perl6 might be very interesting :) | 01:32 | |
buu | ingy: True, why are you using it? | 01:33 | |
pbuetow: Might? It already is | |||
pbuetow | Hehe. | 01:49 | |
ingy | yay. I got the make system to build ext libs | 02:08 | |
well not quite | 02:11 | ||
make test is confused | |||
ingy screams some more | 02:12 | ||
buu | *psst* stop using make files.. | 02:13 | |
ingy | buu: *psst* be constructive | 02:26 | |
buu | =[ | ||
I'm still trying to parse kwid | |||
ingy | that's constructive | 02:27 | |
buu | That's not sarcasm? | 02:28 | |
ingy | I'm not sarcastic | 02:48 | |
I'm constructive | 02:49 | ||
buu | Awesome. | 02:50 | |
I need a statemachine like thingy. | |||
ingy | does anyone know where the code is that looks up a module for `require`? | 03:06 | |
viirya_ | ingy: Prim.hs? | 03:10 | |
ingy | viirya_: does it look like it works like Perl5? | 03:15 | |
or does it do anything funny? | 03:16 | ||
viirya_ | hmm, a sec | 03:19 | |
ingy: now it searchs all path in INC for specified filename | 03:21 | ||
ingy | yeah, that's what it looks like | ||
viirya_ | if found, eval it's content, if no, show error msg. | ||
buu | Does it append .pm? | ||
ingy | I am having issues | ||
I wonder if paths with .. are ok | |||
viirya_ | buu: no, I don't see that. | 03:22 | |
ingy | I am wondering why Perl5 paths are searched | ||
I might try taking them out | |||
because there are 5 million paths | 03:23 | ||
viirya_ | hmmm | ||
ingy | I'll just comment out if tests pass | ||
viirya_: look at fixLib in Main | 03:25 | ||
viirya_ | ingy: huh? | 03:36 | |
ingy | can folks on Linux svn up and test | 03:44 | |
I just checked in major build system changes | |||
and now I have to go out to dinner for an hour or so. | 03:45 | ||
viirya_ | buu: that's wrong I said it doesn't append .pm. It does do. | 03:46 | |
ingy | It has to! | 03:47 | |
viirya_ | buu: Not in Prim.hs, but in Parser.hs | ||
ingy | I hacked up Main to make things pass | ||
need to converse with autrijus when she awakes | 03:48 | ||
yay! | |||
works on linux too | 03:49 | ||
now i can go eat in peace | |||
viirya_ | ingy: hmm, you comment the p5lib line | 03:54 | |
indeed the p5lib is empty. | 03:55 | ||
crysflame | hello. | 04:03 | |
is autrijus awake yet? | 04:04 | ||
buu | No | 04:06 | |
Went to sleep like 6 hours ago | |||
crysflame | oh, ok | 04:09 | |
nnunley | Hrm. How do I pull an int from a Vint? | 04:11 | |
crysflame | wild, stupid guess: .pick | 04:12 | |
not expected to work | |||
nnunley | Nah. I mean on the Haskell side. | 04:15 | |
VInt is the AST representation of a p6 Int. | 04:16 | ||
crysflame | oh! | 04:17 | |
i've been wondering what V meant. thanks :) | |||
nnunley | No problem. | 04:18 | |
viirya_ | doCast | ||
nnunley | so, given a method int:: Int -> Doc, int $ doCast x (where x is VInt) should work? | 04:19 | |
viirya_: No dice. doCast returns type Val. | 04:23 | ||
nnunley figures it out. | 04:29 | ||
VInt is actually Integer, not Int. | |||
viirya_ | q | 04:31 | |
doCast retures Val? | 04:33 | ||
nnunley | viirya_: Hrm. Sorry... Expects a Val, not returns. | 04:35 | |
scw | unpackVInt (VInt a) = a | 04:54 | |
then, let n = unpackVInt a makes n a VInt | |||
let n = fromInteger $ unpackVInt a makes n a Integer | 04:55 | ||
let n = fromEnum $ unpackVInt a makes n a Int :p | |||
ingy | back | 04:57 | |
buu | ING! | ||
ingy | so I have a question to get things rolling... | 05:01 | |
1) where should perl6 modules be installed | |||
2) where should perl6/pugs look for modules | |||
for #1 I'm thinking that pugs could be compiled with the perl5 @INC that was used in the make process | 05:04 | ||
but with s/perl5/perl6/ for each path | |||
and s/5.8.6/???/ | 05:05 | ||
for #2... | 05:06 | ||
I guess in the long term it needs to look in perl5 paths as well as perl6 ones | |||
but that seems crufty for now... | 05:07 | ||
also, can I get an "amen" for putting '.' at the start of the path? | 05:08 | ||
cls_bsd | pugs++ | 05:09 | |
mugwump | s{/5\.\d+.*$}{}, I reckon, ingy | ||
ingy | mugwump: I think I concur | 05:10 | |
mugwump | in my stock perl5; it has 5 paths, that are all derived from the setting of $PREFIX/lib/perl5 and $PREFIX/lib/perl5/site_perl | ||
the duplication you get for version-specific and build-specific installation locations, under the locations specified in, eg, PERL5LIB | 05:11 | ||
ingy | hmmm. I'm looking at a perl that has no @INC paths with 'perl5' in them | 05:12 | |
mugwump | eg, try this: | ||
mkdir /tmp/foo | |||
PERL5LIB=/tmp/foo perl -le 'print foreach @INC' | |||
mkdir /tmp/foo/5.8.4 | |||
mkdir /tmp/foo/5.8.4/i686-linux-thread-multi-64int-ld | |||
PERL5LIB=/tmp/foo perl -le 'print foreach @INC' | |||
(substituting appropriate values, of course) | |||
you'll notice that the extra directories have automatically been found and added | 05:13 | ||
ingy | right | 05:14 | |
autrijus | greetings lambddacamels. | 05:15 | |
mugwump | interestingly, $PREFIX/lib/perl5 is not in my @INC, only $PREFIX/lib/perl5/5.8.4/ | ||
ingy | autrijus has things jiggered up so that the Test.pm is being found in ./lib/Perl6/lib during make test | ||
autrijus | ingy: we search for @INC under Perl6::lib namespace by default. | ||
ingy | oops... Hi autrijus !! | ||
buu | Hallo autrijus | ||
autrijus | r380 is there, which only checks for such paths that exists. | ||
so should be cleaner. | 05:16 | ||
i.e. @*INC only contains the sitelibs that actually has Perl6/lib/* installed under them. | |||
ingy: btw, great work on M::I | |||
ingy | thanks | ||
autrijus | pugs can find Test.pm because I set PERL6LIB in makefile. | ||
ingy | we should get more b&d on the @INC quagmire | ||
autrijus | or, rather, that was the idea. | 05:17 | |
let me add absolute path to perl6lib. | |||
ingy | hold on | ||
autrijus | mm? | ||
nnunley: having luck with Galadriel? | 05:18 | ||
ingy | make test should be finding Test.pm in blib | ||
autrijus | I mean, Pretty | ||
oh right. | |||
that's why the ixLib p5lib | |||
fixLib even | |||
because then it can find things in blib/lib/Perl6/lib | |||
since harness adds it | |||
ingy | autrijus: that is backwards though | ||
autrijus | how so? I thought it was pretty neat | ||
at least, until pugs has its own libpath and cpan and stuff | 05:19 | ||
ingy | Test.pm should go into blib/lib/Test.pm on make | ||
autrijus | I'm of the opinion that it should go into blib/lib/Perl6/lib/Test.pm | ||
because we ultimately install there. | |||
ingy | and blib/lib/Test.pm should go into a perl6 place on install | ||
autrijus | ah. | 05:20 | |
and where is that place? | |||
mugwump | either do it simply, or do it right :) | ||
autrijus | we don't have a Configure | ||
ingy | that's what we were just talking about | ||
we *do* have a Configure | |||
autrijus | uh. | ||
ingy | perl5's Config is just fine | ||
autrijus listens to ingy | |||
ingy | with substitutions | 05:21 | |
autrijus | ok... so on win32 activeperl says its sitelib is C:\Perl\site\lib | ||
what substitutions? | |||
C:\Pugs? | |||
c:\Perl6? | |||
ingy | Perl6 | ||
I would think | |||
but it matters little | |||
buu | pugs =/ | ||
autrijus | it matters a lot :-/ | 05:22 | |
ingy | as long as it doesn't clash | ||
with perl5 | |||
autrijus | hmm. my original plan is so that we can reuse CPAN during bootstrapping | ||
so one can upload arbitary perl6 module as Perl6-lib-Foo | 05:23 | ||
ingy | you don't need that though | ||
autrijus | of course, we can do a Module::Install::Pugs that works arounds all those, and install into pugs dir | ||
ingy | exactly | ||
autrijus | just not sure of the gain | ||
mugwump | wait... pugs shouldn't have seperate paths to perl6 | ||
autrijus | but it is still on CPAN as Perl6-lib-* ? | ||
mugwump | only at the build ID level... | 05:24 | |
autrijus | mugwump: that was what I was afraid. | ||
perl6 allows only.pm-like functionality | |||
except it's not very well specified | |||
it also allows .net-assembly-like functionality | |||
except it's not very well specified either. | |||
so the existing sitelib scheme under /usr/local/lib/perl6 or C:\Perl6 | 05:25 | ||
probably won't work satisfactorily. | |||
ingy | is .pm decided on? | ||
autrijus | .pm and .pl are reused. | ||
it's not been decided on whether .pm6 or something else can be used too. | |||
ingy | positively? | ||
autrijus | well, synopses says that a perl6 .pm must begin with | 05:26 | |
module ...; | |||
or | |||
class ...; | |||
to "avoid ambiguitiy with perl5 modules" | |||
which suggests pretty strongly that .pm is the decided extension | |||
but if you think .pm is a bad idea, bug p6l :) | |||
ingy | my current use case is to move lib/Perl6/lib/Test.pm into ext/Test | ||
autrijus | ok... | 05:27 | |
ingy | hi chromatic | ||
chromatic | Hi all. | ||
autrijus | greetings colorful one | 05:28 | |
chromatic | As your fearless leader said yesterday, I'm conducting an interview for Perl.com on Thursday. | ||
ingy | I think .pm is fine | ||
chromatic | Anyone awake in here is welcome to participate. | ||
ingy | I think lib/Perl6/lib sucks | ||
autrijus | ingy: PA01 I think makes it clear that it 1)sucks 2)is stopgap 3)will be replaced as soon as we have a coherent plan | 05:29 | |
buu | Hurray! | ||
ingy | autrijus: let's make a coherent plan | ||
autrijus | chromatic: oh, we don't do the interview now? :) | ||
ingy | :) | ||
chromatic | Yeah, but I'm afraid of ingy. | ||
ingy | :p | 05:30 | |
chromatic | He has scary tattoos. | ||
autrijus | ingy: can you do a braindump and let us SEE later today (or tomorrow) ? | ||
ingy: this is a complex issue :) | |||
ingy | chromatic is skinny like a praying mantis | ||
autrijus: I am a complex guy | |||
er, girl | |||
chromatic | That's why I'm eating extra ice cream. | ||
buu | Why is everybody a girl in this channel? | 05:31 | |
autrijus | ingy: sure, and both your real part and imaginary part is wonderful | ||
buu: it's an ingy thing, not a perl6 thing | |||
chromatic: I think we can begin at any time. | |||
ingy | autrijus: since there are no Perl6 modules to speak of... how about I just refactor around a bit | ||
chromatic | Alright. | ||
buu | autrijus: That explains it. | ||
chromatic | autrijus, I know you're a busy guy. How'd you decide to start Pugs? | 05:32 | |
ingy | autrijus: I'll even wear the build system admin hat | ||
buu | ingy: How many hats do you get? | ||
autrijus_ | (using a faster connection) | ||
ingy | buu: 13 | ||
autrijus_ | chromatic: ok. the story is that I hack SVK for many months with clkao. | 05:33 | |
buu | ingy: Will you marry me? | ||
autrijus_ | SVK works, except it is not very flexible. there is a VCS named "darcs", which is much more flexible, but is specced using quantum physics language and wirtten in a scary language called Haskell. | ||
ingy | buu: I don't love you | ||
buu | ingy: We should stop disrupting their interview. | ||
chromatic | It's not disruption, you'll just mortify our readers. | 05:34 | |
buu | (and or teach autrijus to spell) | ||
chromatic: Marriage is a happy thing! | |||
obra | what's that quote from, autrijus? | ||
autrijus_ | quote? | ||
so I spent one month doing nothing but learn Haskell, so I can understand Darcs. which worked well; I convinced a $crazy_client (who paid me to develop Parse::AFP) that perl5 is doomed because it has no COW (which, surprisingly, it now has), and fund me to develop an alternate library using Haskell. | 05:35 | ||
(I mean "perl5 is doomed for that task", not "perl5 is doomed in general") | |||
chromatic | Copy-on-Write? | ||
buu | =[ | ||
autrijus_ | yeah. | ||
buu | Er, perl didn't have COW two months ago? | ||
chromatic | So that's a "sort of has". | ||
autrijus_ | yeah, as in, sky suddenly worked on it and claims it mostly works | 05:36 | |
buu | heh | ||
autrijus_ | haven't checked the code, though. | ||
chromatic | It's been in the works for years. | ||
Or "doesn't works" perhaps. | |||
autrijus_ | (I know. but not usable in production.) | ||
ha. | |||
but I digress. using Haskell to develop OpenAFP.hs led to programs that eats constant 2mb memory, scales linearly, and is generally 2OOM faster than my perl library. | 05:37 | ||
oh and the code size is 1/10. | |||
chromatic | Okay, so you picked up Haskell to look at Darcs to borrow ideas from for svk, then you convincied a client to pay you to write in Haskell and you started to like it. | ||
~convinced~ | |||
What type of program was this? It sounds like it had a bit of parsing. | |||
autrijus_ | AFP is IBM's PDF-like format, born 7 years before PDF. | 05:38 | |
it's unlike PDF in that it's all binary, very bitpacked, and is generally intolerant of errors. | |||
there was no free library that parses or munges AFP. | |||
chromatic | ~phone~ | ||
Darcs and Haskell really impressed you then. | 05:39 | ||
autrijus_ | the algorithm did. the day-to-day slowness and fragility for anything beyond mid-sized projects did not. | ||
(but darcs is improving.) | |||
chromatic | Is that the implementation of Darcs you consider slow or the use of Haskell? | 05:40 | |
autrijus_ | but yeah, I was impressed by the conciseness. | ||
the implementation. | |||
it basically caches no info and recalculates all unneccessary information | |||
can't be fast that way. | |||
chromatic | Hm, it seems like memoization is something you can add to a functional program for free, almost. | ||
autrijus_ | yeah, and there are people working on that. | ||
chromatic | BUT NOT YOU | 05:41 | |
Which is good for us Perl people. | |||
autrijus_ | not me. sorry. | ||
anyway. so, I ordered a bunch of books online | |||
including TaPL and ATTaPL | |||
so I can learn more about mysterious things like Category Theory and Type Inference | |||
chromatic | How far did you get? | 05:42 | |
autrijus_ | and Curry-Howard Correspondence | ||
I think I have a pretty solid idea of the basics now. | |||
chromatic | Me, I'm happy just to recognize Haskell Curry's name. | ||
autrijus_ | thanks to my math-minded brother bestian | ||
:) | |||
but TaPL is a very information-rich book | 05:43 | ||
chromatic | Alright, the pieces are in place. | ||
autrijus_ | I read the first two chapters in a relaxed pace | ||
by the end of second chapter it starts to implement languages for real | |||
and usually by that time, the profs using TaPL as textbook will tell the students to pick a toy language to implement | 05:44 | ||
chromatic | I haven't seen you pop up much in Perl 6 land though. You seemed amazingly productive in the Perl 5 world. Where'd Perl 6 come in? | ||
autrijus_ | as an exercise. | ||
so I started using Perl6 as the exercise. I think that answers the first question. | |||
oh. p6 land. | |||
yeah, I was not in p6l, p6i or p6c. | |||
chromatic | More of a playground than a full land, but we have a big pit full of colorful plastic balls. | ||
buu | "As a young boy, autrijus_ tried to approach the land of the p6.. but they would not listen and cast him out" | ||
autrijus_ | however the weekly summary really helped | 05:45 | |
well, because I keep hitting the limit of p5. | |||
chromatic | It seems like an odd fit, putting a language with a good static type system to use with a language with a loose, mostly-optional type system though. | 05:46 | |
autrijus_ | most of more useful modules under my name, (including the ones ingy and I inherited from Damian) | ||
were forced to be done in klugy ways because the p5runtime is a mess. | |||
chromatic | (You should see Attributes::Scary) | ||
(Total sympathy here) | 05:47 | ||
autrijus_ | Template::Extract uses (?{}) as a nondet engine; PAR comes with its own perlmain.c; let me not mention source filtering. | ||
all these techniques are unmaintainable unless with large dosage of caffeine. | |||
chromatic | Oh yeah, I fixed some of the startup warnings in B::Generate a couple of weeks ago... | ||
autrijus_ | cool. yeah, B::Generate is abstracted klugery | 05:48 | |
chromatic | Parrot has the chance to make some of these things a lot nicer. I'm looking forward to that. | ||
autrijus_ | and may pave a way for Pugs to produce perl5 code | ||
chromatic | Yet you took off down another road.... | ||
autrijus_ | actually I think Pugs and Parrot will meet in the middle. | ||
where pugs AST meets parrot AST | |||
buu | I thought pugs would get rewritten in C for parrot? | ||
autrijus_ | and the compiler is written in perl6 that can then be written on parrot | 05:49 | |
buu: no, in perl6. | |||
s/written on parrot/run on parrot/ | |||
chromatic | Can ghc retarget a different AST then? | ||
autrijus_ | it can, but that's not the easier plan | ||
chromatic | It's easy for me. I don't plan to do it. | ||
autrijus_ | the easier plan is simply for Pugs to have a Compile.hs that emits parrot AST. | ||
which, I'm happy to discover yesterday, is painless to write. | 05:50 | ||
(ingy and I did a KwidAST->HtmlAST compiler in an hour, together with parser and AST) | |||
chromatic | Okay, but ingy will like this: retargeting GHC makes the full power of 6PAN available to the entire Haskell world! | ||
So I vote for him to do it :) | |||
Kwid and Html are markup languages? | 05:51 | ||
In this context, I mean. | |||
buu | Kwid is the spawn of satan! | ||
autrijus_ | yeah. | ||
buu | Don't let him convince you other wise =[ | ||
autrijus_ | ok. so back to p6. p5's limit is apparent and not easily fixable | ||
chromatic | It sounds like you wanted something more, and soon. | 05:52 | |
autrijus_ | parrot is fine except everytime I build it it failed. | ||
chromatic | Try running Linux PPC sometime. | ||
bleh | |||
autrijus_ | freebsd may not be a good platform for parrot, I gathered. | ||
chromatic | 4.x or 5.x? | ||
autrijus_ | 5.x | ||
(or my CVS luck is really bad.) | |||
(but I'm talking about several months ago.) | |||
chromatic | Could be. I would have said that 4.x has some weird threading things that have always driven me nuts. | ||
autrijus_ | true and true. | 05:53 | |
chromatic | Ahh, perhaps it was ICU. | ||
autrijus_ | two out of 3 times is. | ||
I think. | |||
ingy | averytime I install ghc it works! | ||
autrijus_ | yeah, ghc is very battle-scarred in real world. | ||
chromatic | I guess it's too late to interest you in a Ponie then. | ||
autrijus_ | I was very interested in Ponie. | ||
ingy | autrijus_: is svn.openfoundry.org down | 05:54 | |
autrijus_ | I volunteered to sky about doing svn and src org and stuff. | ||
but svn was not kind for ponie | |||
obra | well, that was before svn 1.0 | ||
buu | ingy: Yes =[ | ||
autrijus_ | ingy: it is. let me check | ||
chromatic | Was this a recent test? I remember the initial pre-1.0 svn tests for Ponie were exceptionally cruel. | ||
autrijus_ | right. now it all works just fine. | ||
ingy | hi obra | ||
autrijus_ | except libsvn_wc, but we have svk now, and I learned that sky has been addicted to svk. | 05:55 | |
chromatic | I keep reading the tutorial, but it never sinks in. | ||
autrijus_ | so 'tis all good. | ||
chromatic | Now SVN::Client, I really really like. | ||
obra | hi, ingy. I just spent the evening with a friend on $PROJECT teaching him searchbuilder, test::more and svk | ||
autrijus_ | I think wagner.elixus.org/~autrijus/svk-overview.png may help :) | ||
obra | started off the evening uncovering a bug in svk :/ | 05:56 | |
chromatic | It appeals to me aesthetically, anyway. | ||
autrijus_ | but anyway. and the beginning stage of Ponie is XS hackery | ||
which is by far not my forte | |||
chromatic | That's a special kind of pain. | ||
autrijus_ | I've read lathos's book, so I can do XS hackery when forced to | ||
but not by a volunteer basis. oh no. | |||
chromatic | It's like doing magic tricks, blindfolded, when you have to say "Watch me push and pop a rabbit out of this stack. By the way, don't take a reference to him yet...." | 05:57 | |
autrijus_ | lol. | ||
so, at Feb 1st | |||
when I was having too much caffeine and can't sleep | |||
I didn't imagine that Pugs will be anything near a complete implementation of perl6. | |||
I was just interested in modeling junctions | 05:58 | ||
and some other nifty things like subroutine signatures. | |||
ingy | autrijus_: I'm going to put YAML into core Perl6 :P | ||
chromatic | There's a fuzzy connection to the back of my head about Haskell's inferencing and pattern matching being somewhat similar. | ||
autrijus_ | but thing quickly went out of control. | ||
buu | ingy: You freak. | ||
autrijus_ | chromatic: sure. haskell has very robust inferencing, pattern matching, and sexy types. | 05:59 | |
buu | ingy: Stop polluting perl with your bastardized mark up languages. | ||
autrijus_ | which I'm trying to inflict on luqui to improve perl6's design. | ||
chromatic | As long as they do the right thing with regard to roles, go ahead. | ||
autrijus_ | they do. :) | ||
although I may need to question you about junctive roles. :) | |||
and role parameters. but that can wait. | 06:00 | ||
chromatic | I just have strong opinions about how things should work. Don't ask me how they do work! | ||
Yeah, parametrized roles are really cool! | |||
This was an academic exercise though? | |||
autrijus_ | yes. which leads to interesting kinding algorithms and rank-n polymorphism | ||
yeah. it stayed as academic exercise I think for two days. | |||
chromatic | "Hey, this Perl 6 idea is interesting. I wonder how it works in practice? I bet I could do it in Haskell!" | ||
autrijus_ | yup. | ||
chromatic | You young kids and your idea of fun. | 06:01 | |
autrijus_ | using it as nothing more than a toy language to experiment with. | ||
initially targeting a reduced set of perl6 that is purely functional. | |||
chromatic | Did you say "highly reduced"? | ||
autrijus_ | yeah. | ||
but by day 3, I found that doing this is much easier than I thought. | |||
chromatic | Can I get a "skeletal"? | ||
autrijus_ | the term is "Featherweight". | ||
chromatic | What makes it easier? | 06:02 | |
autrijus_ | Parsec. | ||
and ContT. | |||
ingy | mmmmm Parsec | ||
autrijus_ | parsec is like perl 6 rules. | ||
chromatic | Parsec's the most popular Haskell parsing library, right? | ||
autrijus_ | well, Parsec and Happy | ||
happy is more traditional | |||
you write in a yacc-like grammar thing | 06:03 | ||
and it generates a parser in haskell for you | |||
parsec is pure haskell. | |||
you just write haskell code that defines a parser. | |||
chromatic | For everyone who *loves* C.... | ||
autrijus_ | the term is "parser combinator". | ||
chromatic | Haskell is its own mini-language there. | ||
autrijus_ | it's a popular approach, yes. | ||
chromatic | I looked at the parser. It's surprisingly short. | 06:04 | |
autrijus_ | when you see "blah combinator library", think "blah minilanguage". | ||
and yet quite complete. | |||
chromatic | Now I've also read the Perl 5 parser, in the sense that I picked out language constructs that I recognized by name. | ||
autrijus_ | very maintainable, too. | ||
chromatic | Is it a combination parser/lexer, or how does that work? | ||
That's the tricky bit of Perl 5, in that lexing depends on the tokens seen and lots of context. | |||
autrijus_ | yup. it does lexing and parsing in one pass. | ||
with infinite lookahead and backtracking. | 06:05 | ||
chromatic | Does that limit what it can do? Is that why it's purely functional Perl 6 so far? | ||
autrijus_ | each lexeme can define a new parser that works on the next lexeme. | ||
the purely functional perl 6 plan stops at day 3. | |||
we are now fully IO. | |||
started with say(). | |||
ingy | monadic? | 06:06 | |
autrijus_ | and mutable variables, and return() | ||
and &?CALLER_CONTINUATION. | |||
so there's nothing functional about the perl6 that pugs targets now :) | |||
chromatic | Does Haskell support continuations and all of those funky things? | ||
obra | can perl6 symbolnames contain / ? | ||
autrijus_ | chromatic: yes. and you can pick and match the funky things you want for a scope of your code. | 06:07 | |
"in this lexical scope I want continuations" | |||
dynamic scope, really. | |||
"in that scope I want a logger" | |||
chromatic | Performance penalty? | ||
autrijus_ | "in that scope I want a pad" | ||
each comes with its own penalty, but is generally small. | |||
chromatic | Can you instrument scopes at runtime too? | ||
autrijus_ | GHC, again, compiles to very fast C code. | ||
sure. | |||
&?CALLER::SUB works. | 06:08 | ||
and $OUTER::var. | |||
chromatic | Are you compiling it to native code now? I remember that being a suggestion a few days ago. | ||
ingy | someone fix svn! | 06:09 | |
autrijus_ | pugs itself is compiled to native code; it is still evaluating perl6 AST, though | ||
ingy | pugs is suffering! | ||
autrijus_ | ingy: switch to svk! (or something) | ||
chromatic | Ahh, I see. | ||
It's like Perl 5 in that sense then. | |||
autrijus_ | ingy: foundry is upgrading their server room | ||
ingy: may take up two 2 days. | |||
s/two/to/ | |||
ingy | oh no | ||
autrijus_ | ingy: we can set up a temp repo | 06:10 | |
ingy | sure | ||
autrijus_ | ingy: but let me do this interview first :) | ||
ingy | np | ||
autrijus_ | chromatic: yes, it's exactly like Perl5. have you read PA01? | ||
chromatic | I have. | ||
autrijus_ | cool. | ||
so yeah. it's like perl5 now. | |||
chromatic | Except maintainable. | ||
autrijus_ | the difference is B::* is trivial to write in pugs | ||
and yeah, there's the maintainable bit. pugs is <4k lines of code. | 06:11 | ||
chromatic | Very nice. | ||
autrijus_ | I think porting pugs to perl6 will take about the same number of lines, too. | ||
chromatic | You already have one module, too. | ||
autrijus_ | yup. | 06:12 | |
obra | will you be able to port pugs to perl6 sub by sub? | ||
autrijus_ | and it's your favourite module. | ||
obra: yes. | |||
chromatic | Acme::Pr0n? | ||
autrijus_ | obra: as soon as the ext/ infrastructure is there. | ||
obra: which was what ingy was working on. | |||
it's basically XS for pugs. | |||
chromatic | I've started a few attempts to write Test::Builder in Parrot, but I'm missing a few pieces. | ||
How far along are classes and objects in Pugs? | 06:13 | ||
autrijus_ | they don't exist. | ||
chromatic | No T::B yet then! | ||
autrijus_ | 6.2.x will do that, though. | ||
but the short term task is to get all the todo_() cleaned. | |||
chromatic | I see in the dailies that you are producing boatloads of runnable Perl 6 tests. | ||
autrijus_ | which will give us an interpreter that really agrees with all synopses. | ||
at least in the places we have implementation of, that is. | 06:14 | ||
chromatic: yup. thanks to #perl6. | |||
I seldom write tests now :) | |||
chromatic | tsk tsk | ||
autrijus_ | the helpful committers do that for me. | ||
chromatic | How do you know your code works then? | ||
autrijus_ | I just look at newest todo_ and starts working on it. | ||
chromatic | Oh, they write tests for those before you implement them? | 06:15 | |
autrijus_ | yup. | ||
it's all test-first. | |||
chromatic | Okay, I'll let you continue then. | ||
autrijus_ | ha. | ||
so yeah, the cooperation has been wonderful | |||
camelfolks write tests and libraries | |||
chromatic | It's really grown fast. | ||
autrijus_ | lambdafolks makes those tests pass. | ||
if a camelfolk wants a particular test to pass sooner | 06:16 | ||
then that person can learn from lambdafolk :) | |||
things are easy to fix, and because of the coverage | |||
there's little chance of breaking things. | |||
chromatic | Have you started giving Haskell tutorials? I know Larry and Patrick have started to pick up some of it. I'm pretty sure Luke and Damian have already explored it (or something from the same family tree). | 06:17 | |
autrijus_ | and if lambdafolks wants to implement new things that may or may not agree with synopses or p5 norm | ||
then they learn from camelfolks. | |||
I think I've read a paper from Damian that says he taught Haskell in monash. | |||
it's before the Monadic Revolution though. | |||
chromatic | If not Haskell, certainly something from the ML family. | ||
autrijus_ | right. | ||
so, I've been pointing people to YAHT | 06:18 | ||
and #haskell | |||
chromatic | It sounds like you're attracting people from both sides of the fence then. | ||
autrijus_ | it indeed is. I get svn/svk patches and darcs patches. | ||
chromatic | Is there a lot of overlapping interest? Where does it come from? | ||
buu | ingy: You around? | ||
ingy | buu: ? | ||
autrijus_ | well, every since the monadic revolution of '98 | 06:19 | |
buu | ingy: In kwid, if you have a = foo; header, should plain text and such that comes after it be considered part of that block? | ||
autrijus_ | s/every/ever/ | ||
haskell people have started to do Real World apps | |||
chromatic | Now that they can do IO, for example. | ||
autrijus_ | yeah. it's been only 7 years ago. | ||
chromatic | There's still a lot of attraction there for real world applications, of which Pugs is one? | 06:20 | |
autrijus_ | and recently haskell world has its native version control system; a perl-review like magazine; cpan/makemaker-like infrastructure, etc. | ||
ingy | buu: headers are currently a single line | ||
buu | ingy: Right, so they just generate a single block? | ||
autrijus_ | so it's growing fast. | ||
ingy | buu: yes | ||
a header is a block | |||
autrijus_ | and Pugs is a practical project :) | 06:21 | |
chromatic | You're devoting a lot of time to it. obra mentioned that you've cleared most of your paying projects out of the way for the time being. | ||
buu | ingy: And where the heck did you put that kwid bytecode thing? | ||
ingy | very practical | ||
autrijus_ | in that working on it has chance of solving real problems, and is very fun to boot. | ||
and although p5 Got No Respect in general | 06:22 | ||
ingy | buu: ext/Kwid/t | ||
buu | How logical | ||
autrijus_ | p6 is very slick. | ||
buu | ingy: Oh wait, I don't have ext/Kwid/t because svn is down =[ | ||
autrijus_ | so the mental barrier is lower for lambdafolks to join. I think. | ||
chromatic | The lambdafolks like what they see in Perl 6? | ||
autrijus_ | yup. | ||
buu | ingy: Is it online anywhere up? | 06:23 | |
ingy | I'll paste it | ||
buu | l33t. | ||
autrijus_ | I quoted abigail on #haskell a while ago | ||
chromatic | I saw something earlier about access to libraries and such. Do you have a plan for the XS-alternative? | ||
autrijus_ | chromatic: yeah, ingy is working on it | ||
ext/Kwid/ | |||
eventually inline haskell code. | |||
and with luck, inline other kinds of code as well through haskelldirect (the haskell equiv of Inline) | 06:24 | ||
chromatic | Is this within Pugs or Perl 6 atop Pugs? | ||
obra | will you need to replace haskelldirect when pugs is is translated into perl6? | ||
autrijus_ | it's within pugs. the parrot side had not been well-discussed. | ||
chromatic | Yeah, the Parrot AST needs more documentation. | 06:25 | |
autrijus_ | obra: sure can, as long as it's running on GHC | ||
ingy | buu: nopaste.snit.ch:8001/1976 | ||
buu | ingy: k | ||
autrijus_ | obra: now if s/GHC/Parrot/, I really have no answer, because of the lack of information. | ||
chromatic | So, what's the eventual end? | ||
autrijus_ | And whither then? I cannot say :) | 06:26 | |
as you mentioned, I've diverted most of my paying projects away | |||
chromatic | How about in the next month? | ||
autrijus_ | so I should have at least 6 months for pugs. | ||
this month? | 06:27 | ||
chromatic | Yes. | ||
autrijus_ | this month should see robust semantics for basic operations | ||
the beginning of classes and objects | |||
many real modules | |||
chromatic | I'll do T::B then. | ||
autrijus_ | hooks to haskell-side libraries | ||
chromatic++ | |||
oh and pugs hands out committer bit liberally | |||
so if you want to do T::B, I'll make you a committer :) | |||
chromatic | I'd like to play with it, but I'm writing a book right now. | 06:28 | |
autrijus_ | you can start now actually. | ||
buu | heh | ||
autrijus_ | just write imaginary perl6 code. | ||
chromatic | Well, two, but one for pay. | ||
autrijus_ | and we'll figure out how to make it run. | ||
cls_bsd | autrijus_: do we have "shift @array" in pugs? | ||
buu | chromatic: Really? Which books? | ||
autrijus_ | most of the examples/* started that way. | ||
cls_bsd: we have. | |||
chromatic | Ah, I'll take a look/ | ||
I don't want to announce the book yet. I don't think we have an ISBN, though we're halfway through. | |||
buu | =[ | ||
Come on. You can tell us. | |||
chromatic | Yeah, I read the archives here. I know everyone'll find out. | 06:29 | |
autrijus_ | I have this feeling that I have dropped some questions. | ||
chromatic | I'll clean it up and send off a link to a preview tomorrow. | ||
cls_bsd | autrijus_: but I have 'unimplemented unaryOp: shift' when I call my $h = shift @xs; | 06:30 | |
autrijus_ | it worksforme. | ||
pugs> my @xs = (1,2,3); my $h = shift @xs; $h | |||
1 | |||
buu | Is the other svn server up or was that just a mirror of the first svn? | 06:31 | |
autrijus_ | cls_bsd: try 6.0.9? | ||
or the latest svn.perl.org | |||
buu: the other svn server is up. | |||
chromatic | Alright, that wraps it up for me. | ||
cls_bsd | oh ok | ||
autrijus_ | pugs> my @xs = (1,2,3); my $h = shift @xs; $h | ||
err | |||
svn.perl.org/perl6/pugs/trunk/ | |||
chromatic: cool, thanks! | |||
oh. right. I was quoting abigail. | |||
"Programming in Perl5 is like exploring a large medieval castle, surrounded by a dark, mysterious forest, with something new and unexpected around each corner. There are dragons to be conquered, maidens to be rescued, and holy grails to be quested for. Lots of fun. | |||
chromatic | Autrijus, if you want to thank lots of people, send me an e-mail. | 06:32 | |
autrijus_ | "Perl6 looks like a Louis-XVI castle and garden to me. Straight, symmetric, and bright. There are wigs to be powdered, minuets to be danced, all quite boring.". | ||
I, for one, am happy for perl to move from the dark age to the age of enlightenment. | |||
I think many camelfolks and lambdafolks share the same sentiment :) | |||
cls_bsd | autrijus_: oh, My pugs is 6.0.8 :p | 06:33 | |
autrijus | cls_bsd: that's ancient, stone age code :) | 06:34 | |
cls_bsd | :p | ||
autrijus | ingy: | ||
14:01 <rafan> can you find ingy and tell him that YAML fails test on 5.6? | |||
14:01 <rafan> YAML 0.36 | |||
14:02 <rafan> p5-YAML maintainer does not like to update unless it is fixed.. | |||
14:02 <rafan> in that case, I can not update svk neither :( | |||
14:02 <rafan> thanks | |||
14:01 <rafan> can you find ingy and tell him that YAML fails test on 5.6? | |||
scw | strange, pugs> 1 == 2 ?? 'a' :: 'b' works fine (returns "b") | 06:35 | |
but pugs> (1 == 2 ?? 'a' :: 'b') leads parse error | |||
autrijus | scw: write an eval test? | 06:36 | |
buu | Gah, ingy, you are satan. | ||
autrijus | ??:: is currently badly hacked together. | ||
mostly because no-one is sure about how to do it inside the Rules engine. | |||
as the svn is down, please please send patches to p6c. | 06:37 | ||
openfoundry-- # downtime | |||
ingy | buu: why do you keep saying that | ||
buu | ingy: Because I'm trying to write a parser for kwid and failing =[ | ||
scw | autrijus: err, what is `eval test'? Like things under t/ ? | 06:38 | |
autrijus | scw: yes, and wrapped inside an eval | ||
like this: | |||
buu | ingy: And it's more fun to blame you. | ||
ingy | autrijus: host pugs on svn.kwiki.org/autrijus/pugs/ | ||
autrijus | is(eval('(1 == 2 ?? 3 :: 4)'), 4, "??:: in parens") | ||
ingy: will do when I'm on codefest place | |||
need food now | |||
had not have food since morning | 06:39 | ||
and it's near 3pm. | |||
ingy | ok, sleeping now... | ||
scw | autrijus: I got nothing # my $a = eval "(1 == 2 ?? 'a' :: 'b')"; say $a | ||
autrijus | so, bbiab. | ||
ingy | zzzz & | ||
autrijus | scw: that is correct. that's what the evaal test will do. | ||
scw | autrijus: Oh! to avoid pugs stop parsing? | ||
autrijus | scw: exactly. | 06:40 | |
there's no coincidence that eval() is among the first primitives :) | |||
scw | hmm... And use todo_is, too :/ | ||
autrijus | exactly. | ||
cls_bsd | autrijus: sorry, another question | 06:44 | |
is it leagal when there is a subroutine abc(); | |||
"abc().say;" will execute abc() twice? | 06:45 | ||
autrijus | no, it's not legal, it is certainly a but^Hg. | 06:46 | |
cls_bsd | autrijus: ok, now just tell you that :p | 06:47 | |
autrijus: nopaste.snit.ch:8001/1977 | |||
example (error) code | 06:48 | ||
autrijus | okay :) | ||
ok. food, bbiab & | |||
cls_bsd | How do I write "if ($text =~ m/\d/) .." in pugs style? | 07:07 | |
Synopsis 5 seems not mention about it | 07:08 | ||
$text ~~ m/\d/ seems failed | 07:09 | ||
rgs | is \d legal ? | ||
in pugs, that is | |||
cls_bsd | even $text ~~ m/abc/ failed | 07:10 | |
crysflame | do any of the tests indicate how? | 07:25 | |
it might be ~~ //, not ~~ m// (but that's just a wild guess) | |||
cls_bsd | of course I tried it:p | 07:26 | |
my $text = "abcdefg"; | |||
if ($text ~~ /a/) { say "hihi"; } | |||
crysflame | heh, k | ||
which test covers that kind of thing? | 07:27 | ||
cls_bsd | there's no regex.t I guess | 08:04 | |
crysflame | oof | 08:09 | |
autrijus | greetings. | 08:51 | |
rules.t would be welcome. | |||
there's no Rules in pugs. yet. | |||
integral | is there input from filehandles? | 08:52 | |
autrijus | I can code up unary = for you now | 08:53 | |
if you'd like | |||
cls_bsd | oh, rules.t is good... | ||
Juerd | I think rules/*.t is more appropriate | ||
autrijus | cls_bsd: there is some existing tests for PGE and/or regex in the parrot tree I think | ||
integral | unary =? | ||
autrijus | yeah, I agree, rules/*.t | ||
Juerd | If we don't want CGI.pm-sized test scripts | ||
autrijus | integral: unary prefixing = is readline() | ||
integral | oooh, I couldn't find that. Neat | 08:54 | |
malaire | btw, are there backticks in pugs yet (or system, or something to get system calls) ? | ||
integral | Do you have a ref in the synopses to that, autrijus ? | ||
Juerd | Here goes every last hope of keeping it side effect free :) | ||
autrijus | side effect? ;) | ||
autrijus embraces side effects. | |||
Juerd | :) | ||
clkao | how's codefest? | ||
autrijus | integral: no, it's p6l stuff. please yell at p6team | ||
integral | autrijus: :-) | 08:55 | |
autrijus | I really want it documented. better, send patches | ||
Juerd | The synopses used to be the most up to date, but Pugs put everything in much faster gear | ||
So even the synopses are hopelessly out of date now :) | |||
integral | I'm not sure where it'd go though. Syn02 has one brief bit showing unary *, but A2 just says that filehandles are iterators; so presumably = needs doc'ed next to them | ||
cls_bsd | autrijus: so where to get those tests?_? and can put them into pugs? | ||
Juerd | One month. I see the evidence, but I can't imagine this much has been done. | 08:56 | |
autrijus | cls_bsd: just download aprrot | ||
parrot, even | |||
integral | the shortest month too 8-) | ||
autrijus | and look at compilers/pge and languages/regex I think | ||
integral: true | |||
cls_bsd | hmm | 08:57 | |
autrijus | openfoundry is back! | 08:59 | |
malaire | cls_bsd: sometime ago I posted file with 700 tests for pugs to p6c, topic was "700 tests for PGE" (converted from perl5's re_tests) | ||
autrijus | ingy: commit in your sleep! (or something) | ||
malaire | err... for PGE not pugs | ||
autrijus | oh! wow. | 09:00 | |
malaire++ | |||
Juerd | mailaire++ indeed | ||
malaire: Is that portable to pugs? | |||
malaire: Or parrot specific? | |||
autrijus | "Markus Laire"-san? | ||
malaire | easily portable, as it uses perl-code | 09:01 | |
autrijus | greetings whiteg | ||
malaire | yes, I'm Markus Laire | 09:02 | |
autrijus | clkao: not much happening in #codefest-asia-2005 it seems | ||
clkao | :/ | ||
autrijus | 30 or so people in a small room | 09:03 | |
not much coordination happening it seems | |||
scw | ^H0 | ||
o_O | |||
Juerd | Speaking of people in a small room... | ||
autrijus | malaire: so has yoru tests been committed as part of parrot/pge/devperlorg? | 09:04 | |
Juerd | This channel has 58 nicks now | ||
That's bigger than my favourite channel, which has existed for over five years now | |||
autrijus | your favourite channel being... ? | ||
Juerd | ircnet #lol.nl, a Dutch channel | ||
(NOT related to the lol.nl website) | 09:05 | ||
autrijus | ok. | ||
malaire | autrijus: don't think so - I just posted the file to p6c. And I'm not 100% sure all tests are OK, When I posted it, 24% of them passed with parrot. | ||
clkao | it's bigger than #svk too :p | ||
autrijus | that sounds good enough. | ||
Juerd | Our lol is dutch for "fun", possibly "laughing out loud", the site is "limburg online" (limburg is a province) | ||
autrijus | and what's this svn://software.wordzoo.com/p6ge-test-harness/trunk thing? | ||
scw | Is repository at openfoundry up to date? Different from the one at svn.perl.org. | 09:06 | |
autrijus | openfoundry is the main repo. | 09:07 | |
I sync to svn.perl.org from time to time. | |||
malaire | autrijus: IIRC, that is abandoned, might contain some usefull tests - (I can't find the message where that was mentioned) | 09:08 | |
cls_bsd | great | ||
www.mail-archive.com/perl6-compiler...00127.html | |||
malaire++ | |||
let me try it :p | 09:09 | ||
autrijus | pugs currently does none of those :) | ||
so we need a skip_all | |||
but I'd very very much welcome we commit them to t/rules/* | |||
malaire: you willing to take care of t/rules/* once pugs grows rules engine? | 09:10 | ||
(i.e. may I make you a committer?) | |||
scw made his first commit :p | |||
autrijus | scw++ | ||
malaire | autrijus: perhaps, I just need to learn how use use svn (I currently only know the 'svn co ...' command) to get the stuff | 09:11 | |
scw | autrijus: only three lines changes :p | ||
Juerd | malaire: It's not much different from cvs for the basics | ||
autrijus | malaire: sure. you only need to learn another command, which is "svn ci" | 09:12 | |
and that's all :) | |||
malaire | I don't know cvs either ;) | ||
Juerd | autrijus: ci? | ||
cls_bsd | svn co; blahblah svn ci | ||
autrijus | ci == commit | ||
Juerd | Ah, I used commit :) | ||
autrijus | if you modified something you don't like, use "svn revert" | ||
Juerd | Because that's what I was used to from cvs | ||
autrijus | that's all, folks | ||
cls_bsd downloaded parrot-0.1.1 | 09:14 | ||
malaire | cls_bsd: If the format of re_tests is too weird, I can easily generate those tests in any other format. I still have the perl5-scripts to generate it from original re_tests - and it can easily generate other formats also. | 09:15 | |
autrijus | malaire: you familiar with pugs's test formar? | ||
format, even | |||
the "require Test;" one | |||
malaire | An example of this format: | 09:20 | |
# 1: abcabcy$&abc | |||
# 2: abcabcy$-[0]0 | |||
# 3: abcabcy$+[0]3 # SKIP | |||
p6rule_like('abc', 'abc', qr/0: <\Qabc\E @ 0>/, 're_tests 1/$0 (#1)'); | |||
# 4: abcxbcn-- | |||
p6rule_isnt('xbc', 'abc', 're_tests 2 (#2)'); | |||
# 5: abcaxcn-- | |||
p6rule_isnt('axc', 'abc', 're_tests 3 (#3)'); | |||
# 6: abcabxn-- | |||
p6rule_isnt('abx', 'abc', 're_tests 4 (#4)'); | |||
# 150: (a)b(c)abcy$&-$1-$2abc-a-c | |||
p6rule_like('abc', '(a)b(c)', qr/0: <\Qabc\E @/, 're_tests 105/$0 (#109)'); | |||
p6rule_like('abc', '(a)b(c)', qr/1: <\Qa\E @/, 're_tests 105/$1 (#110)'); | |||
p6rule_like('abc', '(a)b(c)', qr/2: <\Qc\E @/, 're_tests 105/$2 (#111)'); | |||
# 174: (a|b|c|d|e)fefy$&-$1ef-e | |||
p6rule_like('ef', '(a|b|c|d|e)f', qr/0: <\Qef\E @/, 're_tests 123/$0 (#137)'); | |||
p6rule_like('ef', '(a|b|c|d|e)f', qr/1: <\Qe\E @/, 're_tests 123/$1 (#138)'); | |||
autrijus | whew. | ||
malaire | commented lines are original lines from perl5 re_tests | ||
autrijus | what is the qr//? | 09:21 | |
malaire | And the qr// part is a bit strange, as I just generated the tests in the format parrot-testing supported at the time. | ||
autrijus | it's matching the captures? | ||
malaire | yes, p6rule_like(...) is used to match captures. | 09:23 | |
Test-script uses: | |||
use Parrot::Test 'no_plan'; | |||
use Parrot::Test::PGE; | |||
cls_bsd | oh | 09:24 | |
autrijus | ok. I'm sure we can do a Test::Rules that provides stubs | 09:25 | |
is qr// still perl6? | |||
malaire | that uses perl5 syntax, as parrot-tests where written in perl5 | 09:26 | |
cls_bsd | autrijus: so do you have a simple paragraph code of regex in pugs? | ||
such as ' if ($a ~~ m/abc/) { say "hi"; } | 09:27 | ||
autrijus | there is no ~~ yet. | 09:28 | |
but feel free to write tests for them :) | |||
cls_bsd | ya, but I have no clues about regex in pugs | ||
autrijus | there isn't regex in pugs :) | 09:29 | |
cls_bsd | oops | ||
autrijus | please write tests targetting dev.perl.org/perl6/synopsis/S05.html | ||
cls_bsd | so 'ok ($k ~~ m/$p/, "Matched");' will failed | ||
autrijus | see roadmap | ||
cls_bsd | sorry :p | ||
autrijus | classes is before rules | ||
cls_bsd | didn't check it | ||
autrijus | but I'm willing to be pursuaded. | 09:30 | |
ok, I need to run for dinner. | |||
I'll go back with unary = :) | |||
bbiab. & | |||
cls_bsd | todo_is ( eval '"abcbc" ~~ m/abc/', 1, 'string "abcbc" should match pattern "abc"'); | 09:49 | |
is it valid? | |||
autrijus | you want todo_ok | ||
or, even better, abstract it away in Test.pm into todo_eval_ok | |||
cls_bsd | hmm | 09:50 | |
autrijus | todo_ok(eval('"abcbc" ~~ m/abc/'), '...'); | ||
todo_eval_ok('"abcbc" ~~ m/abc/', '...'); | |||
cls_bsd | ok, but maybe I should practice junction now, since I can't even make sure the regex is valid in pugs :p | ||
autrijus | heh. :p | 09:51 | |
cls_bsd | feel good to be pursuing, huh? :p | 09:52 | |
autrijus | indeed :) | 09:56 | |
cls_bsd | autrijus: nopaste.snit.ch:8001/1979 # how about this new test (also modify above test to show the description) | 10:01 | |
autrijus | look correct. | 10:02 | |
cls_bsd | ok, so this is my first test to pugs XD | ||
autrijus | cls_bsd: commit it yourself bah :) | 10:04 | |
cls_bsd | autrijus: oops, I didn't grant a commit bit | 10:05 | |
autrijus | cls_bsd: you are a committer now. | ||
welcome aboard, etc :) | 10:06 | ||
cls_bsd | ha | ||
let me try try ci | |||
Committed revision 1343 from revision 382. # so this is my first commit log to pugs | 10:08 | ||
also it's the first check-in log via svk XD | |||
autrijus | =) | 10:09 | |
cls_bsd++ | |||
cls_bsd | oh, ask anothor question, I found pugs.small.png on the web site, can I make it to my category icon?_? | 10:25 | |
autrijus | category icon? | 10:26 | |
sure | |||
cls_bsd | :D | ||
thx | |||
autrijus | basic file I/O done. | 10:55 | |
as part of 02atoms. | |||
running regression now. | |||
rehi. | 10:57 | ||
r384: | 11:05 | ||
* Unary &prefix:<=> landed along with readline(). | |||
* Unary open() can now take mode sigils as part of the file name. | |||
my @lines = =</etc/passwd> | 11:07 | ||
works. | |||
'out.txt'.open.print(=<in.txt>) | 11:08 | ||
works too. | |||
Odin- | Oooooooo. | ||
malaire | Does pugs yet have system() or backticks or qx// or any way to use system commands? | ||
Odin- | Cool. :) | ||
autrijus | malaire: no, but I can do one for you now. a sec | ||
malaire | ok, I'm still reading YAHT, so I won't try to patch pugs just yet... | 11:09 | |
autrijus | you want unary system or list system? | ||
system("ls -l") vs system("ls", "-l") | |||
malaire | perhaps list, but either is ok | 11:10 | |
autrijus | \\n Bool pre system (Str)\ | 11:11 | |
\\n Bool pre system (Str: List)\ | |||
I'll do both :) | |||
done. testing. | |||
test passed. r386. enjoy | 11:14 | ||
malaire | that's quite fast development :) | ||
autrijus | :) | ||
lightstep | what was r385? or did you skip it? | ||
autrijus | r385 fixed a simple parsing glitch. | 11:15 | |
=<$fh>; # was parsed as illegal pod | |||
lightstep | is 3 releases/10 minutes the usual rate? | ||
autrijus | =$fh, even. | ||
lightstep: not unusual when there's people requesting things. | |||
and r is revision :) | |||
not release | |||
775 tests now. mmm | 11:16 | ||
lightstep | yeah, i meant revision, of course | ||
autrijus | yeah. not unusual :) | ||
ooh. we have native dlopen(). | 11:17 | ||
autrijus discovers the System.Posix.DynamicLinker module | |||
lightstep | when was the switch from fp6 to p6? | ||
autrijus | within the first week | ||
I think day 3 | |||
not very sure | |||
autrijus checks journal | |||
lightstep | oh. so te wiki page was misleading even when i first found it | 11:18 | |
malaire | Can you give any estimate how much is still to be done before v6.2 ? (just curious..) | ||
autrijus | ah. the decision is done on day 3 | 11:19 | |
but not checked in until day 13 | |||
day 13 sees the Eval monad. | |||
lightstep: feel free to update the haskell wiki for me. | |||
malaire: it's all bugfix :) | |||
I'm aiming for 6.2 at end of this month | |||
but no promises. | 11:20 | ||
I'd like 6.2 to be Correct | |||
in the sense that while there's unimplemented features, all implemented features have correct semantics | |||
in other words, all todo tests are really todo tests, not fixme tests | 11:21 | ||
cls_bsd | nightly build XD | ||
autrijus | :) | ||
lightstep: I'd welcome if you can just put a large notice on the FP6 page | 11:22 | ||
saying "it's all obsolete now, pugs is targetting the full perl6; while there may be a functional sublangauge in perl6 as a dialect, the current goal is to get the main perl6 done" | 11:23 | ||
or some such. | |||
nnunley: any news on the Galadriel front? | 11:24 | ||
integral | hmm, possible bug: ./pugs -e'say =$*IN' gives hGetLine: illegal operation (handle is closed), but ./pugs -e'$OUT.say =$*IN' works | 12:15 | |
Steve_p | Galadriel? | 12:56 | |
ycheng | autrijus: I write a chmod, and use a "read" which make me unconfortable. | 12:59 | |
Steve_p | is that for a chmod function for Posix.hs? | 13:00 | |
ycheng | yes | 13:01 | |
maybe I commit it first.. | |||
integral | Galadriel maybe is Pretty.hs? | 13:04 | |
Steve_p | integral, thanks | 13:05 | |
integral | nnunley was doing the Text.PrettyPrint hacking on that | ||
Steve_p | ycheng, go for it :) | 13:06 | |
integral now wants to port ideas from that into a nice formatter for perl5 :-) | |||
Steve_p | chmod is likely to be slightly different depending on the libc | ||
ycheng | Steve_p: my problem is on type. AFAIK, read is to transform string to something else. | 13:07 | |
when chmod get an Integer, "read" seems to be unnecessary. | 13:08 | ||
integral | hmm, maybe you want a perlish cast into a VInt, which you then convert to a haskell Integer? | ||
see int() for example maybe? | 13:09 | ||
ycheng | integral: before this, a vCast seems automatically choose the type for me. | 13:10 | |
I think it's a mechanism of haskell that will automaticall choose the right one for me. | |||
integral | hmm, then you'd just need an explicit haskell type signature then? | 13:11 | |
ycheng | but this time, I have to use: read $ vCast v | ||
integral: I thought that in the beginning, but when I change to read to toInteger, I got a compile error "Couldn't match `System.Posix.Types.FileMode' against `Integer'"... | 13:15 | ||
lightstep | vCast automatically selects an instance of Value (by type inference) | 13:16 | |
ycheng | lightstep: agre | 13:17 | |
agree | |||
but it I remove read, the error message is: No instance for (Value System.Posix.Types.FileMode) | 13:18 | ||
arising from use of `vCast' at src/Prim.hs:139 | |||
integral | can you construct a FileMode from an Integer? | 13:19 | |
lightstep | i'm not completely sure | ||
integral | perhaps you need to do some work to convert the octal mode to a haskell FileMode, ycheng? | ||
lightstep | nor am i sure how to convert Val which is a VInt to Int | ||
oh, intCast is it | 13:20 | ||
ycheng | waa, intCast compiled ! | 13:22 | |
oh it works ! | 13:23 | ||
lightstep | ycheng, does it give the correct result when you pass a string to chmod? | 13:24 | |
ycheng | lightstep: chmod "1", "filename" still work. | 13:25 | |
lightstep never learned perl, so he doesn't know how perl's chmod should work | |||
ycheng | lightstep: from `man perlfunc`, it shouldn't work. | 13:26 | |
lightstep: maybe the spec of perl6 will be different. | 13:27 | ||
Steve_p | The big difference is how octals are represented | 13:28 | |
ycheng | hmm, if I replace the "intCast" with "fromInteger $ vCast", the it compiles, too. | 13:29 | |
lightstep | ycheng, the definition of intCast is (almost) intCast = fromInteger . vCase | 13:33 | |
s/vCase/vCast/ | |||
ycheng | lightstep: oh, yes. | ||
As far as I observer, toInteger transform anything it could to integer and fromInteger transform from Integer to whatever it could. | 13:36 | ||
I use to Integer for I think the FileMode must be something as Integer.. | |||
s/to Integer/toInteger/ | 13:37 | ||
I'll commit the "intCast" version latter if no better solution appears. | 13:40 | ||
lightstep | most of the time any Num is good enough, and you don't need Integer | 13:41 | |
nnunley | autrijus: I've got Pretty working the same way it did. It just has to capture more of the AST in order to work correctly. | 13:51 | |
autrijus: It punts down to Show in too many places, otherwise. | 13:52 | ||
autrijus | woot. | 14:16 | |
clkao | autrijus: see #svk, win32 binary is foobard | ||
nnunley | Hrm. Trying to figure out how to capture App String [Exp] [Exp] as a Pretty instance. | 14:18 | |
autrijus | nnunley: commit it first? :) | 14:19 | |
so I can look at it | |||
nnunley | autrijus: Ok... Let me do a little cleanup, and then I'll commit it. | ||
autrijus | nnunley++ | 14:20 | |
lightstep | is it a karma system? | 14:21 | |
autrijus | virtually, yeah, because there's no bot to count them (yet) | 14:22 | |
Steve_p | I guess virtual is better than no karma at all | 14:26 | |
Steve_p really begins his journey into Haskell this evening | 14:27 | ||
autrijus | Steve_p++ :) | 14:29 | |
greetings, cogm^Hno^H. | 14:34 | ||
err, cognominal, even. :) | 14:35 | ||
hi marcusT. nice to see you here :) | 14:41 | ||
autrijus ponders a URM compiler extension for pugs | 14:42 | ||
marcusT | autrijus: hi... I haven't had a look on pugs in ages (I guess it was days, but your speed is so high) ... what's the state... when can I start porting Curses::UI ;-)? | ||
cognominal | hi, autrijus. I curse you. I was on in the process on learning ocaml when you are now obliging me to learn haskell. :) | ||
autrijus | well, the knowledge between haskell and ocaml are largely interchangeable :) | 14:43 | |
lightstep | does svn.perl.org provide cross-linked source view? or some other server? | ||
cognominal | hopefully | ||
rgs | hi cognominal. | 14:44 | |
cognominal | hi, rgs. how cooker is coming? | ||
autrijus | lightstep: not as far as I know. I'm not even sure there exist a crosslink source view for haskell code. or perl6, for that matter | ||
marcusT: you can start porting now :) | 14:45 | ||
rgs | cognominal: currently hacking some python. | ||
cognominal | rgs: I said you, you should not listen that Eve girl | 14:46 | |
Steve_p | heh | ||
cognominal | next thing we will hear of you, you will bite the Apple. | ||
Steve_p | I would bite my Apple, but I think it would hurt my teeth ;) | 14:47 | |
nnunley | autrijus: Well... It's in. It's not pretty, but it's in. | 14:55 | |
Which is a bit of an oxymoron, but anyway. | |||
malaire | I'm currently reading YAHT on chapter 7.6.2, and I've started to wonder if Haskell really is better than perl6 ... :| | ||
autrijus | malaire: hmm? | 14:56 | |
malaire | (Of course when we get Inline::Haskell that doesn't relly matter) | ||
nnunley | malaire: Well, for one, it's fully specified, and secondly, it works right now. :) | ||
autrijus | wa^Wwhat is 7.6.2? | ||
oh, the Show class. | 14:57 | ||
yeah, type classes are neat. | |||
sexy types doubly so; they let you think "higher thoughts" without going (completely) insane | 14:58 | ||
malaire | If we ever get Haskell into Parrot, that would be be quite powerfull with perl6 etc.. | ||
nnunley | Hmm... Spineless, Tagless G-Machine to Parrot... | 14:59 | |
autrijus | sounds like a good project :) | 15:02 | |
autrijus looking at Pretty.hs | |||
nnunley | autrijus: *nods* | ||
autrijus: It's mostly just a transliteration right now. | 15:03 | ||
autrijus | hmm, ycheng broke win32 again. | 15:05 | |
fixing | |||
ingy | hola | 15:10 | |
what is new in pugs? | |||
clkao | ingy: yaml bug! | ||
ingy wakes up with big ideas | |||
clkao: rt number? | 15:11 | ||
autrijus | ingy: ext/kwid building broke on win32 5.8 | ||
I fixed it; r38^H94 | 15:12 | ||
ingy | is foundry up? | ||
autrijus++ | 15:13 | ||
autrijus | sure, it's only been down for a few hours | ||
ycheng | @_@ broke again... | ||
autrijus | ycheng: small typo mostly | ||
B[B[Bit's fixed | 15:14 | ||
ycheng | ^_^ | ||
clkao | ingy: 11296 | 15:15 | |
ingy | autrijus: I have a decent comprehensive plan for module install/resolution fu | ||
I will write up in the wiki | |||
autrijus | ingy: whoa. write it down, write it down | ||
ingy | and start hacking! | ||
nnunley | Hrm. | 15:17 | |
ingy | hi norman | ||
nnunley | What's necessary to get kwid to compile? | ||
autrijus | nnunley: latest source? | 15:18 | |
ingy | nnunley: I need to add a Main | ||
nnunley | ingy: Hey. How's it going Brian? | ||
ingy | and some fu | ||
nnunley | nnunley: Latest source. | ||
make[1]: *** No rule to make target `/home/dragon/play/pugssvn/kwid', needed by `../../blib/script/kwid'. Stop. | |||
autrijus | ok, I broke it. | 15:19 | |
fixing | |||
ingy | hmmm. maybe autrijus broke | ||
ah | |||
haha | |||
nnunley | :) | ||
Need more coffee. | |||
autrijus | should be fixed | 15:20 | |
ingy | autrijus: let me fix it :P | 15:21 | |
autrijus | nnunley++ # cool, Pretty looks pretty now | ||
ingy | nnunley: should be fixed :P | 15:22 | |
nnunley | Now, to start working on the extreme makeover bit... | 15:23 | |
:) | |||
ingy likes extreme | |||
nnunley | autrijus: It was a bit like pinball. I kept bouncing off of type errors, spinning off to understand the type error, repeating, until it was re-written. | 15:27 | |
autrijus | :) | ||
it's unlike pinball in that your score is not zeroed. | |||
what worke | |||
whatever worked, stays working | |||
ingy | I like how ghc suggests how to fix your program sometimes | 15:28 | |
nnunley nods. | |||
All part of the joy of a good type system. | |||
ingy | "You were close, now try this..." | ||
www.burningchrome.com/wiki/index.cgi?YahooImage | 15:30 | ||
cdent++ | 15:31 | ||
nnunley | Hrm. I wonder how hard it would be to repurpose the shell in pugs to allow debugging. | 15:36 | |
Kinda wish I grokked one of the tricks that the O'Caml folks did with their debugger, which allows backstepping. | 15:37 | ||
autrijus | backstepping would not be hard in pugs. | ||
that will play nicely with serializable continuation. | |||
basically we freeze our CC at each step of evaluation and | 15:38 | ||
reload prior CC means backstepping | |||
nnunley nods. | |||
integral | after each evaluation you just call the debugger via callCC, and it saves? | ||
autrijus | it will be doubly nice if we can have Exp derive Read. | ||
integral: that's roughly the idea. | |||
or rather, have "Eval Val" derive Show and Read. | 15:39 | ||
(which is the definition of serializable continuation) | |||
that will require some thought. will think about it tomorrow :) | 15:40 | ||
integral | presumably they'd only be thawable within the same execution environment, eg open files etc? | ||
autrijus | (it's getting late and I need to fill in today's journal) | ||
integral: well, one way to do this is to log all side efe^Hfects | |||
and reopen handles as neccessary | |||
see WASH for preior art^W^Wprior art | |||
integral | hmm, complicated | 15:41 | |
autrijus | yeah, all side effects are | 15:42 | |
cognominal | rgs, I have bought "Concepts, Tevhniques and Models of Computer Programming" | 15:52 | |
they say: "monads are used to encode state by threading it thru the program. This makes the program more intricate but does not achieve the modularity properties of true explicit state". | 15:54 | ||
This seem to confirm my intuition that monad is bullshit. | 15:55 | ||
autrijus | right. | 15:58 | |
using monad to model state is not interesting. | |||
the state monad is the most trivial of monads | |||
ingy | autrijus: yo | ||
autrijus | and you can almost always find better ways to do the same thing. | ||
however, for other things like CPS, lexical fix points in side effects etc, monads are invaluable. | 15:59 | ||
ingy | I generate Config.hs in the make system now | ||
autrijus | r0x0rs | ||
I'll sleep in a bit | |||
ingy | Trying to figure out how to format it | ||
I'm thinking of introducing %*CONFIG | 16:00 | ||
since it is all lazy, I think it could be sold to p6l | |||
autrijus | uh I think the perl6 idea is lots of readonly $? | ||
$?OS | |||
blah bla^W^Wetc. | |||
instead of stuffing everything into a hash. | 16:01 | ||
so just add $?FOO symbols to env. | |||
with Val VStr | |||
ingy | ok | ||
autrijus | zzz & | ||
ingy | darn | ||
how to I expose Config to the haskell side? | 16:02 | ||
cognominal | autrijus: is that a good book or do I have blown my money on a turkey? | ||
ingy | Oh well, I make something up | 16:03 | |
cognominal | it sounds used often in university setting | ||
autrijus | I've not read it. | 16:06 | |
I recommend TaPL :) | |||
clkao | that was a quick sleep | ||
autrijus | but you can ask on #haskell for more book recommendations. | ||
cognominal | I have yet to go thru the ~900 pages of that one :) | 16:07 | |
autrijus sleeps, for real & | |||
cls_bsd | ok, refresh source code again | 16:34 | |
stevan | autrijus: I have found a really odd issue in PUGS | 16:55 | |
well not that odd really | |||
nnunley | steven: Autrijus is sleeping. What's up? | 16:56 | |
stevan | ah | ||
pugs -e 'my @l = (1, 2, 3); my $a = shift(@l); say $a' | |||
produces 1 | |||
as expected | |||
as does this | |||
pugs -e 'my @l = (1, 2, 3); say shift(@l);' | |||
but this | 16:57 | ||
pugs -e 'my @l = (1, 2, 3); say shift(@l); say shift(@l);' | |||
prints and 1, 3 | |||
it seems that shift(@l) is getting evaluated twice when it is an argument to a function | |||
I am documenting this in t/op/shift.t | |||
but I have actually encountered this before, I just didnt realize what it was (I thought it was my perl6 code :) | 16:58 | ||
nnunley | stevan: Yeap. There's definitely some todos there. | ||
stevan | nnunley: I will update shift.t soon,.. it will better illustrate the issue | 16:59 | |
crysflame | hi | ||
stevan | howdy | ||
nnunley | stevan: I guess including a todo_is on +@s to assert sizes would better demonstrate what's going on. But it does already demonstrate the double pull if you run the test explicitly. | 17:05 | |
cls_bsd | stevan: I've raised similar issue several hours ago :p | ||
stevan | cls_bsd: yes, it was your issue which got me thinking | 17:06 | |
cls_bsd | oh :p | ||
stevan | nnunley: good idea with the +@ | ||
cls_bsd: i knew it had seen a similar issue before,.. but I couldnt figure it out at the time | 17:07 | ||
nnunley, cls_bsd: r397 has the new t/op/shift.t if you want to check it out | 17:11 | ||
cls_bsd | ok | 17:12 | |
but we can bug autrijus :p | 17:13 | ||
nnunley | stevan: Cool. Better bracketing of the problem. | 17:14 | |
stevan | nnunley: looks like this is the source of the todo's in pop.t as well, i will update those tests as well | 17:16 | |
nnunley nods. | 17:22 | ||
stevan | any lambdafolks around who are currently hacking away at PUGS? | 20:19 | |
nnunley | stevan: is only semi-lambda. Not currently hacking on PUGS. Hoping to get movement on the evaluation problem? | 20:20 | |
Limbic_Region | the only for sure lambdafolk I see here is tmoertel (who is also a camelite) | ||
not sure if he is hacking Pugs though | |||
tmoertel is too busy with "work", unfortunately | 20:21 | ||
stevan | ok,.. well I just commited some issues with r400 | ||
and documented them in p6c | |||
nnunley: yeah I found the eval issue and one with push and unshift | 20:24 | ||
oh well, autrijus will likely be up in a few hours anyway :) | |||
ingy | hola nnunley stevan Limbic_Region | 20:26 | |
hi chromatic | |||
chromatic | Hi there. | ||
ingy | you return | ||
chromatic | Interview preview: | ||
ingy | autrijus is sleeping fyi | ||
chromatic | www.perl.com/cs/user/print/a/908 | ||
Juerd | My p6 talk slides are online | ||
ingy | until about 6pm our time I would guess | 20:27 | |
Juerd | juerd.nl/files/slides/2005dpw/perl6op.html | ||
juerd.nl/files/slides/2005dpw/perl6myths.html | |||
chromatic | S'okay, I'll send him e-mail. | ||
stevan | howdy chromatic | ||
ingy | chromatic: update the kwiki | ||
Juerd: you too :P | |||
Limbic_Region | salutations ingy | ||
Juerd | ingy: This was FYI | 20:28 | |
chromatic | ingy: any particular page? | ||
ingy | Juerd: F*M*I? | ||
Juerd | ingy: For anyone's I. | ||
ingy | chromatic: see topic | ||
Juerd doesn't like adding his own links to wikis | |||
chromatic | Any particular page on the kwiki? | ||
Limbic_Region | chromatic - intentionally left in the mispeelings? | 20:29 | |
chromatic | Limbic_Region, yes. | ||
ingy | ah, go ahead and make a new page | ||
chromatic | <- lazy | ||
Limbic_Region is the epitome of laziness, but I will let you be second in command | |||
ingy | heh | 20:30 | |
Limbic_Region | Juerd - haven't gotten through p6 operators presentation, but have you considered a link to the periodic table of p6 operators? | 20:31 | |
chromatic | All yours now, ingy. | 20:32 | |
Juerd | Limbic_Region: Certainly have, but with the horrible internet link we had the day before DPW, I couldn't find it fast enough | ||
Limbic_Region: I gave up quickly and went to the bar | 20:33 | ||
crysflame | hi, chromatic | ||
Juerd | Limbic_Region: It was supposed to be the first slide | ||
Limbic_Region | oh - will see what I can do | ||
crysflame | oh, neat, hello autrijus | ||
(in writing) | |||
rgs | salutations chromatic | ||
Juerd | But I don't like changing slides afterwards | ||
ingy | chromatic++ | ||
crysflame | "no COW"? | ||
Juerd | I only changed some typos | ||
chromatic | Hi all. | ||
Limbic_Region | www.ozonehouse.com/mark/blog/code/P...Table.html | 20:34 | |
crysflame | ah, ok | ||
rgs | ooh COW :) | ||
a hop topic in perl 5 currently. | |||
hot, even. | |||
ingy | I should add a kwiki notification bot to #perl6 | ||
chromatic | purl, COW is CopyOnWrite Oughtta Work! | 20:35 | |
Limbic_Region | oh - is purl and/or any other bots not here intentionally? | ||
crysflame | it'd be nice if there was a list of the books that he ordered | ||
so that eveyrone who wants to buy more knowledge can do so :) | |||
Limbic: purl is too stupid to do multinetworks. | |||
if you know of any bots that can bridge irc channels, that'd be neat | 20:36 | ||
Juerd | There's an irssi script that does that | ||
Irssi in a screen is as good as a bot | |||
Limbic_Region | well, I know some neat bots on the freenode network | ||
Juerd | In fact, I base IRC bots on irssi, because that works better than P::C::I :) | ||
crysflame | Juerd: okay, since i see your name any time i google for irssi, it's your task to get purl in here. | ||
Juerd | crysflame: I don't have a host to run such a script on | 20:37 | |
And I can't get purl to join the empty channel that is needed for this | |||
crysflame | Juerd: i do. plan for irc nickname "rhizopurl" on freenode. | ||
i can. | |||
Juerd | Then you do it :) | ||
crysflame | no. | ||
i can't make irssi happen. | |||
Juerd | Huh? | ||
crysflame | hand me a .irssi/ tarball | ||
Juerd | apt-get install irssi | ||
Then in irssi, /script load somescript.pl | |||
crysflame | okay, provide the script then | ||
Juerd | scripts.irssi.org | 20:38 | |
rgs remembers the Abigail quote. | |||
crysflame | that's your bag. i mindwarp purl, you mindwarp irssi. which script? | ||
crysflame has a fixed attention limit thanks to work atm | |||
Juerd | crysflame: I'm not warping any minds today | ||
Limbic_Region | Juerd - in p6 operators - forcing context - your for numeric context - did you also mention it is no longer a no-op? | ||
crysflame | aww | ||
Juerd | crysflame: This isn't something we need right now | ||
Limbic_Region: That is implied | |||
It's a no op for numbers, as ~ is a noop for strings :) | 20:39 | ||
A scalar context forcing noop, though | |||
crysflame: scripts.irssi.org/html/linkchan.pl.html | |||
Limbic_Region | good presentation Juerd - when/where did you give it? | 20:42 | |
Juerd | Limbic_Region: Dutch Perl Workshop, last Friday | 20:44 | |
buu | crysflame / Juerd: What were you trying to accomplish? | 20:47 | |
Juerd | When, where, with what? | ||
And why? | |||
crysflame | buu: getting purl on this network. | ||
Juerd | Oh, that | ||
buu | oh | ||
What's so difficult? | |||
crysflame | irssi, and that's not at all | ||
Juerd | purl's singular | 20:48 | |
buu | crysflame: Er, what? | 20:49 | |
... | 20:52 | ||
Limbic_Region thinks the yadda yadda yadda operator (...) should be renamed to the wacka wacka wacka operator ;-) | 20:53 | ||
buu | Sounds about as reasonable | 20:55 | |
Juerd | Limbic_Region: I prefer "todo operator" | ||
ingy | google++ www.kwiki.org/?action=edit;page_nam...0%BA%D0%B0 | ||
Steve_p | heh heh | 20:56 | |
I love the public service ad | |||
Juerd | It has something to do with pyramids :) | 20:58 | |
And the history of them, probably | |||
crysflame | was this an irc interview? | 20:59 | |
nnunley | crysflame: Apparently. It included buu's comments. :) | 21:00 | |
Steve_p | Limbic_Region: most programmers prefer seinfeld over fozzie | ||
:) | 21:01 | ||
Limbic_Region | hmmm - I don't consider myself a programmer so I guess I am ok with that statement | ||
Steve_p | heh | ||
buu | Limbic_Region: What do you consider yourself? | 21:02 | |
Limbic_Region | a problem solver | ||
buu | ... | ||
crysflame | problem solvers rock | 21:03 | |
nice to meet you | |||
Limbic_Region | salutations crysflame - don't expect me to be solving too many p6/Pugs problems | 21:04 | |
crysflame | i was around for the first pugs.exe from autrijus, when it had nasty bugs with joints | 21:05 | |
Limbic_Region | Speaking of bots on freenode - Chris62vw has one | ||
Chris62vw | perl6 sucks :-( | ||
buu | ^ | ||
Limbic_Region | and there it is perlbot | ||
crysflame | he left perlbot though | ||
buu | It was my idea for perlbot, so yell at me. | ||
crysflame | perlbot: status | 21:06 | |
Limbic_Region | heh - thanks buu | ||
crysflame | perlbot: hi, chris62vw :) | ||
Limbic_Region | perlbot karma for Limbic_Region | ||
perlbot | Karma for Limbic_Region: 1 | ||
buu | perlbot help | ||
perlbot | Syntax: (fact) :: tell (who) about (what) :: (who) > (what) :: learn (what) as (info) :: relearn (fact) as (info) :: facts (search term) :: shorten (url) :: shorten it :: search (module) :: docs (module) :: perldoc -f (function) :: math :: fortune :: flip :: host (type) (record) :: rot13 :: roll (die) :: tempconv (temp) :: scramble (text) :: 8ball :: slap :: diss :: what time is it :: highest karma :: lowest karma | ||
crysflame | eeeee | ||
as soon as i'm not at work i infobot us | |||
buu | What does infobot do? | ||
crysflame | familiar bot interface | 21:07 | |
buu | ... | ||
That's it? | |||
rgs | perlbot, pugs | ||
buu | perlbot pugs is jesus. | ||
perlbot | added pugs to the database | ||
rgs | perlbot, pugs | 21:08 | |
perlbot | jesus. | ||
rgs | perlbot, jerk it | ||
well, maybe doesn't it support rss feeds; | |||
buu | Er, of the channel? | 21:09 | |
rgs | buu: purl can register rss feeds as factoids. | ||
buu | rgs: And do what with them? | ||
rgs | display the latest "headlines" | 21:10 | |
buu | ah | ||
Feel free to suggest it to chris | |||
crysflame | purl is a legacy application | 21:12 | |
so much legacy that it's nearly human | |||
complete with a db of 460,000 factoids built up over time | |||
rgs | how old is purl's factoid db ? | ||
crysflame | pre-2001 | ||
very, very old | 21:13 | ||
she was cloned from efnet database at some point | |||
around the Split, 97-98ish | |||
cognominal | I suppose that makes me a legacy programmer because I am really human (with a flawed logic thoug h:) | ||
crysflame | which means even older than that | ||
crysflame nods to cognominal | |||
buu | Someone should open source the facts. | 21:17 | |
pjcj | I don't think facts is quite the right word. | 21:19 | |
Steve_p | heh | ||
suppositions? | 21:20 | ||
rgs | theories. | ||
Limbic_Region | supposition theories - it isn't just quantum mechanics anymore | 21:21 | |
buu | The pretensions at fact. | 21:22 | |
Steve_p | But "jerk it" isn't much of a fact is it? | 21:23 | |
buu | It exists! | ||
There for, it is a fact. Some place. | |||
sorje | Nice, revision 400 :-) | 21:24 | |
buu | Yay pugs! | ||
sorje | The speed of that project really is amazing. | 21:25 | |
Steve_p was about to write "I jerk it; therefore, I am." but realized what he was about to write | 21:26 | ||
rgs | it would have implied that purl is. | ||
nnunley | r401: Improved the pretty printing a little bit. | 21:27 | |
stevan | Juerd: the operator presentation is great fodder for writing tests, thanks for posting it | 21:31 | |
nothingmuch | is the darcs pugs repo up to date? | 21:39 | |
nnunley | nothingmuch: Good question. High likelyhood that it's lagging. | 21:41 | |
nothingmuch | =/ | ||
nothingmuch will bug autrijus about it | |||
buu | Darcs just isn't as cool as svn! | 21:42 | |
nnunley | buu: It's plenty cool. It's just earlier in its development cycle. | 21:43 | |
nothingmuch | buu - given choice i'd rather choose =) | ||
live and let control versions | |||
nnunley | I'd be using it, except that it bogs down on my system even with simple changes. | ||
nothingmuch | supposedly droundy is working hard on fixing that, nnunley | 21:44 | |
nnunley | nothingmuch: Good to hear. | 21:45 | |
buu | Is there any advantage to using Darcs over svn? And while I'm asking, what the heck is svk? | 21:46 | |
nothingmuch | svk is a meta vcs, afaik | ||
rgs | this means nothing :) | ||
nothingmuch | it knows how to wrap many vcs systems under one interface | ||
buu | oh | ||
decay | nothingmuch: it doesn't | 21:47 | |
nnunley | buu: svk is a meta-revision control system. It lets you work in a distributed way -- checkout, unplug from the network, commit some stuff, and then merge with the central VCS. | ||
nothingmuch | afaik <-- grain of salt | ||
one that is heavy enough to hurt | |||
buu | nnunley: Sounds like svn =/ | ||
nothingmuch | as for darcs vs. svn - darcs is distributed, in a very pure way | 21:48 | |
svn is central, and sort cvs done right | |||
nnunley | buu: It's implemented on top of svn. | ||
buu: It also borrows some concepts from TLA (arch) | |||
buu | I .. see. | ||
nothingmuch | darcs.net if you want more info on darcs | 21:49 | |
nnunley | buu: That is, it can remember your merge points, so you don't have to when you merge back in. | ||
nothingmuch | the manual is easy to skim through quickly | 21:50 | |
buu | I just learned svn damn it | ||
nothingmuch | once you know one vcs you know them all except arch | ||
;-) | 21:51 | ||
nnunley | buu: It wouldn't take you long to learn svk (it has the same command set, more or less). Nor should it take you long to add darcs to your knowledge base. | ||
nothingmuch: too--many--dashes-in--commands for me. | |||
nothingmuch | i learned a bit of arch once, but i got tired very very quickly | 21:52 | |
lightstep | but tom lord is so cool | ||
oops | |||
(that wasn't supposed to be in irc) | |||
nnunley grins. | |||
rgs | we have logs. | 21:53 | |
nothingmuch | buu - come to think of it, i would argue that darcs is simpler than cvs for example, which I know, since it breaks things down to more generalized bits | ||
and there's fewer of them | |||
you write files | 21:54 | ||
then you make a patch by saying what changes go into it | |||
and then you move it around | |||
buu | nothingmuch: I'm still at the stage of check out, modify, commit, cry if theres any conflcits. | ||
nothingmuch | darcs (and arch, and anything distributed) breaks committing down into several steps | 21:55 | |
you commit a patch to your local repo | |||
and then you decide what repo to move it into | |||
example scenario: | |||
stable branch, unstable branch | |||
developer's each have their own repo too, for their working dirs | 21:56 | ||
s/'//; | |||
commits naturally go into the unstable branch | |||
and occasionally feature freeze or critical fixes propagate down to the stable branch | |||
the process is just saying 'put this change there' | |||
buu | Head.. exploding | ||
nothingmuch | chromatic is silly | 21:57 | |
crysflame | darcs is fun | ||
buu | "Adolf .... elizabeth? Yah, that was his middle name!" | 21:59 | |
nothingmuch | does anybody care enough to have a look at a patch to Test::MockObject before I go to sleep? | 22:00 | |
stevan | nothingmuch: I will | ||
nothingmuch | nothingmuch.woobling.org/Test-MockObject/ | ||
i'm not too sure about the naming convention i chose, for the most part | 22:01 | ||
and the documentation is also, eh, so so | |||
unified diff is at top level, modified file inside lib, and it's also a darcs repo | |||
stevan | nothingmuch: interesting feature | 22:02 | |
nothingmuch | grazie | ||
stevan | nothingmuch: looks cool to me,.. send it over to chromatic | 22:03 | |
nothingmuch | i did, he said he didn't receive, my logs say his MX accepted, blah blah. Anyway, he's logging on perlmonks once every few hours and sending a message or two, so i am not up to date on that | 22:04 | |
i just wanted some review of the change before i go | 22:05 | ||
so thanks, stevan | |||
stevan | nothingmuch: no problem :) | ||
nothingmuch | oh buu, another nice thing about darcs is it's tolerance to PEBCAK | 22:08 | |
most operations are easily reversable | 22:09 | ||
(unrecord, unpull, revert, unrevert, amend-record... =) | |||
stevan | nnunley: you still around? | 22:11 | |
nnunley | stevan: About to head out for a few hours. What's up? | ||
stevan | just looking the Pretty printing stuff | 22:12 | |
what's the best way to test that, or have you already tested it? | |||
nnunley | stevan: No formal tests, yet. I think autrijus did, on the other hand, show what the desired output was on PerlMonks... | 22:13 | |
stevan: So... two choices... write a test in Haskell (Check out QuickCheck), or write a simple script to diff the output against what's expected. | 22:14 | ||
Sorry. Gotta run... Good luck. | |||
stevan | nnunley: thanks, later | ||
nothingmuch | in regards to helping pugs out, i guess i'll start with tests | 22:28 | |
should I port perl 5 tests? | |||
write new ones based on synopses etc? | |||
what is the norm? | 22:29 | ||
ingy | hope the kwikibot still works :\ | 22:36 | |
hmmm. kwikibot test failed | 22:37 | ||
stevan | nothingmuch: I have been writing tests based on the synopsis mostly | 22:39 | |
nothingmuch: and anything else i find | |||
nothingmuch: a number of the tests can be expanded as well | 22:40 | ||
nothingmuch | stevan: anything specific in mind? that sounds like a good start | ||
stevan | nothingmuch: you could try the new readline and open features | 22:41 | |
nothingmuch: I think they did them yesterday (taiwan time that is, last night for me) | |||
nothingmuch: autrijus will probably be up soon too, you can always ask him | 22:42 | ||
nothingmuch | . o O ( I wonder why colloquy is not scrolling down properly ) | ||
i will probably be asleep shortly | |||
i would like to it | |||
and fit in 20 minutes of bass time before bed | |||
stevan | nothingmuch: I am going to get some food myself ... | 22:43 | |
nothingmuch | i can't find the documentation for open | 23:01 | |
no synopses mention IO | |||
buu | Larry posted some stuff saying basically | 23:02 | |
stevan | nothingmuch: the general assumption is that if its not mentioned, its the same as perl5 | ||
buu | $foo = open ("bar"); $foo->print(); | ||
stevan: Not true in this case =] | |||
stevan | buu: I stand corrected :) | ||
nothingmuch | i tried tradition, it failed me ;-) | ||
buu | Is open implemented yet? | 23:03 | |
stevan goes to get some pizza & | |||
buu: per autrijus's last use.perl journal it is | |||
buu | Hrm | ||
Ya know, I'm strongly considering using the dreaded xml for documentation | |||
mugwump garotts buu | 23:06 | ||
nothingmuch | can i get a list of known function sigs? | ||
mugwump | presumably from $($?PACKAGE):: or something like that? | 23:08 | |
buu | nothingmuch: Read the source! | ||
nothingmuch | gently! | ||
ingy | ok, I'll get this bot working elsewhere | ||
:( | 23:09 | ||
buu | ingy: What does it do? | ||
ingy | notifies of pug's wiki updates | 23:10 | |
buu | Great! | 23:13 | |
nothingmuch | eval '$bad = open "__inexistent_file__"'; | 23:14 | |
this doesn't seem to suppress the error | |||
am I missing something? | |||
buu | try ? | 23:15 | |
eval { }? | |||
nothingmuch | not there yet | ||
buu | No idea. | 23:16 | |
Oh, how are you checking for the error? | |||
Are you perhaps printing the output of eval? | |||
nothingmuch | eval { } is ok | ||
i saw eval '' all over the place | |||
buu | as in, my $x = eval "open 'foo'"; print "done" | ||
nothingmuch | so i sort of assumed | ||
buu | nothingmuch: Did you understand what I just said? | 23:17 | |
nothingmuch | oops, sorry, missed that | ||
err, no | 23:18 | ||
i was not printing | |||
eval was in void context | |||
my $bad; | |||
eval { $bad = open "__inexistent_file__" }; | |||
ok(!$bad, "bad is not"); | |||
this is ok | |||
buu | oh | ||
nothingmuch | but tr/{}/'/s will not be happy | ||
buu | So submit a bug about eval '' | 23:19 | |
nothingmuch | maybe it's notabug | 23:20 | |
i have to be more familiar to make such decisions | 23:21 | ||
these have been my first 10 minutes pugsing | |||
buu: can you point me to the thread about open? | |||
buu | nothingmuch: It was the 'perl 5 annoyances' on perlmonks. Meditations. | 23:22 | |
nothingmuch | gratz | ||
hola L~R | 23:26 | ||
Limbic_Region | salutations | ||
buu | Limbic region! | ||
Limbic_Region | . o O ( <sing>where everyone knows your online handle</sing> ) | 23:27 | |
buu | Yeah | ||
nothingmuch is trying to hack in a prefix unary wopen | 23:35 | ||
since open is currently (appearantly prefix unary, and gets no mode data | |||
and is always readonly | |||
i managed to get wopen to work | |||
but open doesn't | |||
i just duplicated open's 3 lines... what could it be? | 23:36 | ||
oi | 23:41 | ||
i think eval is a no op | |||
good night everyone | |||
Limbic_Region | TTFN nothingmuch | 23:43 |