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