6.2.3 is airborne! | pugscode.org <Overview Journal Logs> | pugs.kwiki.org
Set by autrijus on 12 May 2005.
putter scook0: brief discussion of Pugs design occurred earlier today. its in the log. 00:00
scook0 woo!
scook0 complains that all the interesting stuff happens when he's busy :( 00:01
putter life ;)
Juerd Good night. 00:04
svnbot6 r3550, Juerd++ | Fix readability of quickref/namespace. This document needs more structure, less
r3550, Juerd++ | long lists and less sentences.
r3551, Juerd++ | s/matches nothing/matches null string/, because it does match something, namely
r3551, Juerd++ | the null string, which happens to look like nothing, but certainly is
r3551, Juerd++ | something, even though it has no width. There is no syntax in regexes/rules
r3551, Juerd++ | that matches nothing, or that doesn't match. In documentation, only mention the
r3551, Juerd++ | things that something does match. ("<-[a]>" matches any character that isn't a,
r3551, Juerd++ | instead of: doesn't match a. Note also how position is left out of the
r3551, Juerd++ | description, even though it does only match at the current position.)
putter 'night 00:06
00:06 g1powermac_AFK is now known as g1powermac
theorbtwo wonders how to do what putter is asking for. 00:09
putter wonders what he asked for. 00:12
kelan some kind of loop ending thing?
< putter> actually, some languages readily handle the concept of "I expect to be done by foo. If I'm not, kick me."
putter ah. 00:13
theorbtwo $foo = lazy :timeout<20s> {block} 00:18
Hm, stick a "default" clause there too.
Hm, and make that async instead.
I'm still wondering if it's already implementable with what we have, though. 00:19
Oh, and make that 20`s.
clkao there's no Time::HiRes? 00:25
svnbot6 r3552, putter++ | minor fix of quickref/namespace
clkao and no export of select(2) ?
putter clkao: M$ 00:26
clkao ? 00:27
putter clkao: re HR, you could check if ghc has something similar and expose it. its an easy "follow the lemmings" haskell exercise.
clkao: re select, it's a portability problem. windows lacks select. 00:28
darcs jumps through ugly hoops to try and deal. pugs doesnt. 00:29
theorbtwo: could one attach the timeout to a block? 00:31
in C++ one might do a local var IfScopeExitHasntDestroyedMeInNSecondsIllThrowAnException. ;) 00:32
hmm... if one could attach traits to call points...;) 00:33
but, perhaps just $foo = timeout(20) :{ lazy {block} } 00:34
theorbtwo clkao: there's no Time::HiRes in p6 because all time functions are expected to be highres. 00:36
They are defined to return/take a number of seconds... but not neccessarly an integer number of seconds. 00:37
putter blarg. but my original thought was more along the lines of a keepalive. $ka.stillalive; my @array=...; $ka.stillalive; 00:43
clkao so how do i tell time() to return with more precision? 00:44
putter time currently returns and integer Prim.hs 00:48
clkao that i already read in the fine source. i mean in langauge level, how do i tell it to return with more precision 00:49
putter my fuzzy impression is its more that the current implementation should be returning a float rather than an int... yes? 00:54
theorbtwo clkao: Why would you want to? 01:02
clkao because i want Benchmark.pm
theorbtwo the time() builtin should return the best resolution it can. 01:03
If you know how to get higher-resolution time, fix it.
clkao i dont
putter in addition to ghc's cpu time, which we might expose, it looks like there is dtPicoseconds... I'm wrestling with haskell now... 01:09
svnbot6 r3553, ninereasons++ | examples/cookbook/01strings/01-00introduction.p6, add a very basic definition of strings and what they are used for. Todo: give a basic introduction to quotes and quote-like operators, to preface the examples that follow.
ninereasons eyes invited to look at what I just committed.
stevan ninereasons: that easily could have spread over several lines
karma prude :) 01:10
jabbot stevan: prude :) has neutral karma
ninereasons mistakes in the basics wreck everything.
lol prude :)
stevan, I started using the -m "" switch, and it keeps everything very tidy. 01:11
stevan ninereasons: I do the same
old habit from work
although at work my commit messages are usually svn commit -m 'uploadin'
since I am the only one who uses SVN :)
ninereasons not from karma avoidance though. I just don't like jumping into vim to write two lines. 01:12
yuck. the pod is barffled 01:13
I should have checked that first.
kelan karma ninereasons 01:16
jabbot kelan: ninereasons has karma of 4
kelan karma kelan
jabbot kelan: kelan has neutral karma
kelan how can you get negative karma? 01:17
ninereasons wow, I've lost a lot of karma latele
I wonder why
kelan karma autrijus
jabbot kelan: autrijus has karma of 208
kelan heh
karma castaway
jabbot kelan: castaway has karma of 8
ninereasons see .. that's why I don't like karma. It messes with my mind.
stevan ninereasons: it is like perlmonks "points" 01:18
it really doesn't matter how many you have, its the quality of your contribution that matters
ninereasons yes. you will note that I no longer post to perlmonks.
kelan karma stevan
jabbot kelan: stevan has karma of 43
ninereasons I have a weak ego
kelan wha has the most?
who
ninereasons autrijus, for sure. 01:19
stevan ninereasons: i dont either, but thats because I am too addicited to pugs
clkao karma autrijus
jabbot clkao: autrijus has karma of 208
stevan perlbot highest karma
perlbot The top 5 karma entries: C: 310, autrijus: 305, iblech: 201, stevan: 111, nothingmuch: 68
kelan C!
clkao karma svk
jabbot clkao: svk has karma of 10
stevan C-- is better than C plus plus
kelan kelan++
perlbot What kind of idiot karmas himself? Your kind of idiot!
stevan perlbot karma ninereasons
perlbot Karma for ninereasons: 14
ninereasons C-- x 100
mrborisguy ninereasons: why don't you post to PM anymore?
kelan hah
stevan svk++ # ;) 01:20
ninereasons because it makes me feel funny, worrying about what people vote up and down.
kelan ignore the votes then
mrborisguy haha, oh, okay
kelan karma kelan
jabbot kelan: kelan has karma of 1
ninereasons can't, kelan. I tried for a couple of years, and failed.
kelan woo!
perlbot karma kelan
perlbot Karma for kelan: -1
kelan hah 01:21
stevan ninereasons: I obsessed to at the begining
mrborisguy i think recently somebody posted some css so you don't see any of the voting stuff
stevan mrborisguy: yes, i think I saw that too
kelan post anonymously, then you can't see votes
mrborisguy that would work too
ninereasons I feel funny about that, too, kelan.
maybe I'm weird.
kelan harder to keep track of your nodes that way tho 01:22
stevan ninereasons: they are soooo perl5 anyway ,... :)
kelan heh
limbic region is trying to sway everyone
stevan #perl6 is much more fun
kelan he keeps posting p6 stuff
mrborisguy i may have to start posting p6 answers when i get a hold of it too
stevan mrborisguy++
mrborisguy maybe people will vote ++ just 'cause they're confused! ;) 01:23
stevan :D
ninereasons s/confused/impressed/
putter haskell question?
stevan Monads
kelan it'll be like back when perl didn't have its own usenet group and randal kept answering questions in the shell group with perl. people started saying, "no perl answers" 01:24
someone will ask a question on PM and be like "no p6 please"
mrborisguy i wouldn't doubt it
ninereasons a reasonable request for any practical question. 01:25
at the moment.
but not for long :)
mrborisguy what!? you're telling me pugs isn't ready for production code!!!!
i give up
stevan that is why L~R has been moving them to their own threads IIRC
kelan parrot is!
mrborisguy i'm outta here
svnbot6 r3554, ninereasons++ | add extra lines for pod
stevan mrborisguy: we have mod_pugs ;)
mrborisguy haha, really? 01:26
putter ;) I have a do return $ foo $ x where ... and wish it a do n <- (x where ...) return $ foo$ n but thats not it. suggestions?
stevan mrborisguy: yes, it works on top of mod_parrot
mrborisguy cool
i won't use it though
i don't even use mod_perl right now
i couldn't get it set up once
and my 'website' has about... 3 hits a week
stevan mod_perl on Win32 was still beta
mrborisguy that may have been the reason 01:27
stevan 1.0 that is
mrborisguy either way i don't have much use for it
stevan mrborisguy: I think autrijus is actually using Pugs in prod
kelan okay this will be fun because i don't know the monad terminology but: 01:28
mrborisguy and as i understand, autrijus is the genious behind pugs? (or at least, at the beginning)
stevan yes, and still is
he is the main force behind it
kelan putter: where is the function that returns a moadic value?
mrborisguy yeah... i added the parenthetical statement because i'm sure there are more now
kelan is it the x? 01:29
if it is the x, i think you can do it like: 01:30
do n <- x
return $ foo $ n 01:31
where ...
putter the original form is:
anyone mind 10ish lines of code blatted? 01:32
op0 "time" = const $ do
clkt <- liftIO getClockTime
return $ VInt $ toInteger $ tdSec $ diffClockTimes clkt epochClkT
where
epochClkT = toClockTime epoch
kelan perlbot, do you mind?
putter epoch = CalendarTime 2000 January 1 0 0 0 0 Saturday 0 "UTC" 0 False
I hypothesize that higher precision time info might be available by doing 01:33
... + ((tdPicosec diff) * 10^(-12))
but pulling out d <- diffClockTimes clkt epochClkT leads to unhappiness. 01:34
stevan putter: you might want to ask on #haskell
putter k. tnx. 01:35
stevan my haskell book is being neglected in favor of my Smalltalk/metaclass books
putter goes off to remind himself how where works...
:)
kelan where is the `diff` coming from in your hypothesis? 01:36
from the `diffClockTimes` application?
do you want to replace `tdSec` with the hypothesis? like this: 01:37
return $ VInt $ toInteger $ (\diff -> ((tdPicosec diff) * 10^(-12))) $ diffClockTimes clkt epochClkT
putter s/diff/d/ 01:39
kelan but am i right, you want to replace `tdSec` in the original? 01:40
putter ahhhhhhhh. is there a lightbulb emoticon?
kelan the question mark is closest. heh
?
putter back in a sec^Wbit... 01:41
mrborisguy what does @array = <1 2 3 4 5>; mean? is it like @array = qw/1 2 3 4 5/; ? or is it something special and new?
kelan don't forget to tell us the answer:)
it is like @array = qw/1 2 3 4 5/;
mrborisguy alright, thanks! 01:42
kelan the <> is the new easy-quotewords
mrborisguy does it do more stuff then?
or is it just that pretty much?
kelan i don't think so. just returns a list of strings
although
you can use it like this:
%hash<hash slice> 01:43
which gives you two elements from the hash with those keys
mrborisguy so, instead of something like the old @hash{ ('hash','slice') }
yeah?
kelan yep
vcv I love that :) 01:44
mrborisguy oh, sweet!
kelan <<>> is the similar
but non-interpolating? or <<>> interpolates but <> doesn't? 01:45
not sure, let me check
ninereasons right, kelan
kelan right to which? :)
ninereasons <<>> interpolates
vcv what about %hash<<@array>>
whats that do?
lets say @array = ("key1", "key2") 01:46
kelan i think <> and <<>> impose list context, so the array should flatten and give you the hash slice 01:47
ninereasons and, <<>> is supposed to respect quotes
kelan well, if <> doesn't interpolate, it wouldn't
ninereasons but I don't think that it does, right at the moment 01:48
(respect quotes, I mean)
kelan yeah, i didn't understand the rules about when things inside <<>> break up or stay together. like this: <<"two words" another>>
i think that is just two strings, not three 01:49
ninereasons yes, but I don't think that pugs thinks so, right now.
it'll be fixed eventually if it's not already.
kelan or if you have: @array = ("two words", "another"); <<@array>>
is that the same? two words, not three?
ninereasons should be, in that context, if I understand it right. 01:50
kelan but <> doesn't respect quotes? so <"two words" another> thats really three? 01:51
ninereasons ("two, words", another)
kelan nods
putter 01:55
come back and tell us how you fixed the haskell
inquiring minds need to know 01:56
mrborisguy i've been playing with map a little bit, but i couldn't find any information on it. i want to do @array.map:{ $_ ** 2 }; (which works). is there an @array.map( $_ ** 2 ) of some sort? i can't get it to work, so maybe there isn't one? 02:10
just a "i think it looks better" sort of deal...
kelan i dont think so 02:11
mrborisguy alright, thanks 02:13
scook0 @array.map( $_ ** 2) would almost certainly /not/ do what you're expecting it to
mrborisguy yeah, i tried it, it gave me an error
just wondering if there were something similar 02:14
scook0 @array.map:{ $_ ** 2 } /is/ it
mrborisguy alright
scook0 unless you want to say @array.map({$_ ** 2 }), which is even uglier
wolverian you can't just make up syntax and expect perl to go along with you. :)
mrborisguy hahaha, okay
scook0 remember that map takes a block, not an arbitrary expression
mrborisguy i'll keep that in mind
kelan wolverian: that isnt the quote!
wolverian kelan: I didn't have the real quote handy and I was too lazy to query purl. :) 02:15
mrborisguy i'll try to trim down the stupid questions a little bit! ;) 02:16
kelan nah
p6 is new to everyone basically
scook0 the only stupid questions are the ones you don't bother to ask
besides which, 'stupid' questions can sometimes reveal profound things :) 02:17
svnbot6 r3555, Stevan++ | Perl::MetaModel - adding rw/ro traits to Meta::Properties; and sketched some ideas of Roles as well (I need to do some more reading on this actually); 02:19
r3556, Stevan++ | Perl::MetaModel - changing the Roles sketch, I had moved it up too far in the meta-model; back to reading about Roles
ihb scook0: no, there really are stupid questions that people do ask :-) 02:22
mrborisguy haha, i'd have to agree with you ihb 02:29
"can i get taste loss from licking a pool table?"
kelan if you licked it so much that you rubbed off your taste buds you could 02:31
mrborisguy haha
i guess i probably shouldn't assume everybody has seen that commercial 02:32
kelan one of those beer commercials? 02:33
pasteling "putter" at 66.30.119.55 pasted "time() -> 1.69957894027142e8" (12 lines, 493B) at sial.org/pbot/10297 02:35
putter hey kelan. well, bleep.
kelan hey!
does that work? 02:36
if so you can move the lambda down to the where clause and give it a name so it doesnt look so funky 02:37
putter ooo, yes, good idea.
any other thoughts? 02:39
kelan hmm 02:40
im surprised about the 10^12 02:41
putter me too. 02:42
kelan did you try fromInteger and fromIntegral on it? 02:43
putter (fromInteger 10^12) 10.0^^12 (fromIntegral (10^12))::Float realToFrac (10 ^ 12) ...(the last 2 from #haskell) no joy. 02:44
kelan even #haskell couldn't figure it out? 02:45
heh, i'm not going to be able to then
if you're going to do (1000000 * 1000000) why not just write 1000000000000 02:46
svnbot6 r3557, ninereasons++ | a little more clean-up of the pod, for the introduction to strings, examples/cookbook/01strings/01-00introduction.p6; plus render a few examples executable
putter their suggesting was to add more of signature. (it's quiet there, and there was perhaps a bit less warm fuzzy helpfulness than I've seen in past) ah well. 02:47
re why 1^6 * 1^6, because everytime I looked at the latter I felt nervious and wanted to count the zeros. ;) I can eyeball 6 of them. "If it's not obviously correct... then it isn't." 02:48
Before commiting, I'm trying to find someplace at least semi-authoritative which says its the right thing... 02:49
ie, that p6 time() now returns a float. 02:50
kelan i can't eyeball groups of more than four:(
putter ok. switching to three...;) 02:52
kelan heh
probably put a comment in why its written out like that
ninereasons you also might enjoy one or another of the alternative syntax, kelan: 02:53
kelan maybe someone will come along and figure out a way to type it
ninereasons map{$^item ** 2;} @array ; map->$item{$item ** 2} @array ;
or, I guess actually it was mrborisguy
kelan heh
mrborisguy why does the first work? 02:54
the $^item part i mean
ninereasons think of sort {$a <=> $b}
it works for the same reason
mrborisguy so $^item is the only one that will work, not $^something 02:55
kelan variables with carets are like implicitly passed arguments
Odin-LAP $^a <=> $^b now, I think.
kelan no
ninereasons $^whatever you want
kelan it can be anything
mrborisguy but map->$something{$something ** 2} @array would?
kelan yes
mrborisguy Odin-LAP: yes
Odin-LAP Implicitly passed, and ordered alphabetically, I think.
kelan so would map { $^something ** 2 } @array
mrborisguy huh
kelan Odin-LAP: yes, from what i remember
the implicit arguments are bound to the ^ variables in alphabetical order 02:56
mrborisguy @in ==> map { $^something ** 2 } ==> @out; is correct syntax, correct? (but not working yet?) 02:57
kelan: does that hold for sort too?
kelan yes its correct
well i think sort kinda got redone 02:58
but the basic usage i think works the same
mrborisguy oh
kelan damian proposed adding all this crazy stuff to it. don't know if its canon yet
mrborisguy oh, alright 02:59
Odin-LAP Damian proposed crazy stuff? :o
;)
kelan but for the basic usage, this would work: @in ==> sort { $^a <=> $^b } ==> @out
ninereasons that looks so cool 03:00
Odin-LAP I suppose the best way to save functions and/or syntax is to get it implemented before he has the chance.
ninereasons it looks like it's moving
kelan and this would sort in opposite order: @in ==> sort { $^zed <=> $^apple } ==> @out
mrborisguy oh, no, i was wondering about the variables... sort { $^first <=> $^second } since "first" lt "second"
yeah, okay.
kelan yes
the implicit positional args are bound alphabetically 03:01
its kind of weird
Odin-LAP sort { $^before <=> $^after } # ;D
kelan but as good as any way to bind implicit vars, i guess
heh
obfu here we come
Odin-LAP kelan: Ya figure?
Although I think that last one is kinda cute. 03:02
I think they meant it partially as a discouragement for using too many implicit arguments.
One is fine, two is workable, three is stretching it... 03:03
kelan well how about
sort { $^aaaaaaaaa <=> $^aaaaaaaaaa }
which order??
yeah, thats fun
Odin-LAP O_o
kelan see, there are a different number of 'a's 03:04
Odin-LAP I suppose the shorter one goes first. (ASCIIbetic order.)
I figured.
But I most certainly am not going to count. ;)
kelan heh
mrborisguy now i'm just scared! 03:05
kelan thats why i'm saying its weird. the variable name is meaningful to the semantics
Odin-LAP mrborisguy: Perl6 is going to be very, very frightening when abused.
pupilzeng: Are you IRCing as root, and if so, is that intentional? 03:06
kelan i guess that isnt much different from: sort -> $aaaaaaaaaa, $aaaaaaaaa { $aaaaaaaaa <=> $aaaaaaaaaa }
except shorter
but still hard to tell whats going on
Odin-LAP kelan: Pretty much the same thing.
I think it might be harder with the longer version.
pupilzeng Odin-LAP, yes, it's intentional, I'm on Windows 03:07
Odin-LAP pupilzeng: Ah. :)
pupilzeng: Just asking. I've seen people do it by accident. :>
kelan heres fun: sort -> $b, $a { $a <=> $b }
Odin-LAP kelan: Oweeee. 03:08
mrborisguy oh my!
kelan plain descending, but odd looking
Odin-LAP Or ouch.
putter ok, clkao is waiting patiently, and I'm failing to find an authoritative source which says time() now returns a float.
kelan this language will be fun:)
pupilzeng Odin-LAP, I know, you're very kind to do so
kelan oh let me help you look, putter 03:09
mrborisguy i do think things will make more sense in this language though (unless you try to be obscure)
Odin-LAP kelan: Oh, and we haven't even started with the syntax-warping macros they promised us.
mrborisguy i can already see it in my understanding
putter Hmm. Looks at the time. "clkao has long since given up waiting, and..." ;)
kelan Odin-LAP: those are a cop-out for true obfuers:)
Odin-LAP kelan: True.
kelan of which i am not
Odin-LAP The metaoperators are a god's gift to obfuscation, though. 03:10
kelan `wrap` will be nice for obfu too
you never know whats being called
Odin-LAP mrborisguy: Yeah. Though it's tending a bit towards Lisp, in some regards. (Not syntax-wise, thank god.) 03:11
kelan putter! 03:13
putter hey!
ninereasons *fix + folding operators will make some amazing obfu
putter ok, it looks like parrot has two forms, int and num. that plus two peoples' fuzzy recollection... what more could one need? 03:15
does anyone object to time() returning float? 03:16
ninereasons it seems Right that it should
but, I'm not the Real programmer, here
kelan i'm trying to find the message referred to, but in this summary: www.mail-archive.com/perl6-language...19302.html 03:17
it says "Larry agreed that Perl 6's time interfaces
would favour floating point time values..."
the linked message to google groups is not there
putter yeah! kelan++ 03:18
ninereasons kelan++ # indeed. man, that was fast
kelan here we go: www.mail-archive.com/perl6-language...19076.html
putter Thank you kelan. Patch going in. 03:19
kelan np
mrborisguy has anybody got p6 to install on Win32?
kelan mail-archive.com has a search function. makes it easier to find messages:) 03:20
mrborisguy i get this error when trying to use nmake: 03:21
makefile(414) : fatal error U1087: cannot have : and :: dependents for same target
kelan i've heard theres some trouble with win32. don't know if anyone's solved it 03:22
vcv mrborisguy: i was working on it. got some different errors though
putter clkao: fyi, time() now returns floating-point seconds. 03:24
svnbot6 r3558, putter++ | time() now returns a float. kelan++
putter Thanks again folks. 03:25
Good night.
kelan g'night
mrborisguy oh, okay 03:30
well, any Makefile editing I can do? I went to line 414 (figured that's what the error meant, not sure), and there wasn't anything worthwhile there 03:31
i'll check line 1087 vcv
1087 is the last line
if there's no solution, it's not a big deal, i already have p6 on a different computer 03:32
Khisanth try it with a different make implementation? 03:33
mrborisguy i'll see what i can find 03:34
the makefile downloaded nmake for me, so that's the one i was trying
Khisanth is slightly confused
how did you manage to use the makefile without make?
mrborisguy my bad. correction, the Makefile.PL file 03:35
kelan MakeMagic 03:36
thats how
mrborisguy is that a program, or a perl module? 03:38
kelan its a joke:) 03:39
mrborisguy oh, gotcha
kelan i meant thats how you could use the makefile without make installed
mrborisguy a different make (from UnxUtils) failed too, citing that I can't have more than one " config :: " in the file (there's about 3 of 'em in a row where it reports the error) 03:40
eh, i'll give up for tonight 03:41
thanks for all of the help tonight. i'm out. 03:46
svnbot6 r3559, putter++ | docs/development/tips -> docs/development/development_tips 04:20
r3560, putter++ | docs/development/ -> docs/other/
r3561, putter++ | In modules/PORTING_HOWTO, added pointers to other resources.
r3562, putter++ | Moved modules/PORTING_HOWTO to docs/other/. Being out of the way, it was getting overlooked. Left a "moved to ../docs/" file.
05:55 wilx` is now known as wilx
vircuser anyone here? 06:00
06:00 vircuser is now known as avinash240
avinash240 anyone? 06:01
stevan hello
avinash240 hi I was just looking through the overviews of perl6 06:02
stevan avinash240: it gets quiet around here this time of night/day
avinash240 and it's striking me as an extremely complex language.
stevan avinash240: that is a correct observation
although I would not let the docs overwhelm you
there is much more in there then will probably get used 06:03
avinash240 any hope on them keeping some of the reason I started using perl in the first reason around
stevan by the majority of programmers
avinash240: much of what is so great about perl is still there
avinash240 some of it is down-right non-intuitive
stevan just more consitent
avinash240 i mean I love perl5
i just makes sense 06:04
I'm a converted c, c++ coder
stevan avinash240: I agree, I love p5 too
avinash240 and that garbage about perl five not being readable
is only from non perlers
who read the regex competitions
stevan :)
ninereasons there are small idiom adjustments. I think you'll find it to be very simple to pick up, starting from perl5, avinash240
avinash240 if you code it like you do c++ but use the extra power it's very readable
i hope your right
cause right now 06:05
svnbot6 r3563, ninereasons++ | more massaging of the text and examples in cookbook's introduction to strings
avinash240 I'm down right depresed
stevan avinash240: well, I am sure perl5 wont go away anytime soon
ninereasons I really like perl5, but every day I am more eager to see perl6 fully implemented, avinash240 06:06
stevan and part of the whole motivation of Pugs is to iron out the issues with the perl6 design
avinash240 yes..but i'm not big on using ''old' languages when new ones exist
ninereasons it puts some really wonderful things in your hand.
stevan avinash240: what have you read so far?
on perl6
avinash240 so far the only language I've seen that's really impressive is ruby. I know Java but you need 30 lines of code just to do hello world...so much forced structure.. 06:07
but the
has
$.something
it's really just all the new sigals
that are killing me
stevan avinash240: they actually make a lot of sense when you understand what they all mean
avinash240 but why so many...i'd really like explained 06:08
ninereasons new levels of abstraction, that's all
avinash240 i'm sure they make sense
but do we really need that many
i was really just hoping the OO system in perl would get alot easier..
it's more consistent but makes less sense
stevan there is a set of quickref documents in the docs/ folder which try to explain
avinash240 actually
sorry I take it back
it makes sense
but it's not intuitive 06:09
ninereasons look at exmples/games/wizard.p6, avinash240
AtnNn it beats clos
avinash240 k
whats the whole URL for hthat?
err
ninereasons I think you'll immediately understand what's happening throughout.
avinash240 that?
the wizard.p6 06:10
ninereasons it's in the checkout tree. but just a sec.
stevan avinash240: also look in ext/ as well in particular Set, Tree, Test::Builder and Net::IRC
avinash240 i appreciate t..
stevan svn.openfoundry.org/pugs/examples/
svn.openfoundry.org/pugs/ext/ 06:11
svn.openfoundry.org/pugs/docs/
:)
ninereasons thanks, stevan++ 06:12
avinash240 the has Str something;
is that an object declaration?
stevan ninereasons: I have typed that URL many many times :)
avinash240: yes
avinash240 nice
what's the
stevan has declares a property
Str the type
avinash240 ?$prompt
stevan and $.name
avinash240 what eh ?$
?
stevan ? means the parm is optiona; 06:13
optional
so sub foo ($bar, ?$baz)
$bar is required and $baz is optiona;
avinash240 ok
that could stand for a change
stevan (damn I keep missing the l and hitting the ;)
avinash240 it's not readable
and that's what i mean
has $.something
is soo smooth
it makes total sense
?$something isn't 06:14
my head is doing loops
going from looking stuff up
to just reading and it making sense
wolverian there are named traits that do the same thing as the +, ? zones
in signatures
avinash240 lol
i have no idea what a signature is
wolverian the thing that specifies the arguments. 06:15
stevan method signature
wolverian sub foo (...signature...) { ...body... }
avinash240 what does the $?something mean?
stevan its actually a combination of the label, the args, and the return value (IIRC)
wolverian stevan: good point.
stevan $?something is different :)
avinash240 i just saw that 06:16
what does that mean?
it looks lke it's inviting me banging my head while looking for a bug
between $? and ?$
stevan svn.openfoundry.org/pugs/docs/quickref/var
wolverian $? are magical lexical vars
stevan its a twigil :)
avinash240 i'm going to pook at the quickref really quick
stevan avinash240: I agree on the $? stuff 06:17
and $*
etc
they can get ugly
wolverian I think I agree.
ninereasons yep. me too.
stevan $. and $: are good for objects
wolverian maybe someone should post on p6l about this. :)
stevan that makes sense to me
avinash240 twigils?
i think that's an answer to a question that no-one was asking 06:18
stevan basically $?foo is like my $foo (lexical scoped)
ninereasons but, secondary sigls are the sort of thing that don't get written all the time
avinash240 seriously of all the things I found wrong with perl5
variable scope was not one of them
stevan $=foo is our $foo (file scoped)
avinash240 it just made sense..
can I still scope the same way as I did in perl5
?
stevan avinash240: I dont actually think it changed
avinash240 i can accept $. in classes 06:19
stevan it should DWIM in most cases
avinash240 koo koo
i think the docs should focus on what will be the same
more
cause right now I'm scared
stevan seriously the fundemental parts are not really changing
avinash240: that is kind of an issue
avinash240 and I run the programming direction..for my shop
stevan right now the docs are actually the spec
ninereasons for that, I think that our cookbook will be helpful, avinash240
stevan and they focus on the diffs
ninereasons but right now I think it's a bit of a mess 06:20
avinash240 yes, it's not making much sense
i think they shouldn't release anymore
until it's clear
i've been looking forward to perl 6 for a year
stevan avinash240: dont forget perl6 is still being designed
Pugs is just a reference implementation
avinash240 mainly because I really want a clarified OO system
stevan to help iron out the details 06:21
avinash240 I agree
I think once I get my hands on it
i'll be ok
if I can use very close to perl5 syntax
and use perl 6 OO system
ninereasons that's what pugs is for.
avinash240 i'll be very happy
stevan avinash240: you should be able to do that
ninereasons to get your hands on a very blurry idea, and actually do something real. 06:22
stevan with only a few other changes to make things more consistent
ninereasons: well put :)
avinash240: I suggest compiling pugs and giving it a try
its quite addicitve
avinash240 anyone here use catalyst? 06:23
stevan even though not everything works
avinash240: nope, but I know people who have
ninereasons speaking of addictive, I should go to bed. night all
avinash240 how do they like it?
stevan they really liked it
avinash240 i just installed it..
stevan I am actually considering switching to it myself
avinash240 i'm really workin it out
stevan also makes the descisions for his shop :)
how do you like it? 06:24
avinash240 lol
working'
is workin
to be totally honest
i've just never gotten Perl 5 OO approach too much
that's why I'll be happy to seee it go
and I've written modules
lol
stevan avinash240: I liked perl5 OO a lot at first 06:25
avinash240 i like my version of it
it's when I see other peoples
it's just not always clear
the 'convention' is very odd
stevan but I came from Javascript (prototype based) and Java (too much code for too little)
avinash240 yes, I come from c++ and Java
stevan avinash240: I know what you mean, too many ways to do the same thing 06:26
avinash240 so right no
so right now
I"m trying to "get" catalyst
stevan AFAIK its really just straight MVC
avinash240 yeah that's right
but Class::DBI is something I'm not too familiar with 06:27
i'm old school SQL i wrote everythng by hand
stevan me either
avinash240 now I feel strapped
to figuring out how to use that thing
and it's not so clear
stevan never used Class::DBI myself 06:28
avinash240 the whole framework MVC idea is not so clear to me
what makes me a bit depressed though
is I read the Catalyst stuff
and I scratch my head
i read the Ruby on Rails stuff..and I get it..
stevan :D
avinash240 that's how I used to feel when I compared Perl to other languages 06:29
this is why the complexity thing..
is getting me down
stevan that might be just a "quality of docs" issue
avinash240 yes
definately
I agre
e
but the built in tech is just easier
stevan Catalyst is pretty new though, so it may take some time
avinash240 but I'm honestly convinced to stick it out with a Perl MVC framework 06:30
and Maypole was just a frustration
Catalyst looks nice
i've seen an app and it's not bad..
it's just a learnign curve..and that's never stopped me before
unless you haven't noticed I'm very big on intuitive programming practices
and catalyst has that 06:31
stevan I think a Ruby on Rails "port" will be easier with perl6
avinash240 well
more of less
Catalyst is a port..with some extra features
in essense it's more powerful
just not as intuitive
which is why RoR is doing so wel
it's brainless to set up a working app
stevan I am always distrustful of "brainless to set up" though 06:32
I feel constrained by that
I like to see the guts :)
avinash240 i agree but they allow you to remove all the implicit stuff..which is why I was impressed
but Catalyst is more powerful from what I can see 06:33
I think ActiveRecord is really the only BIG thing on RoR..
stevan O/R mapping is really nice if done well 06:34
obra avinash240: what about actionpack?
avinash240 i
have heard mixed things about it
but the mixed things I've heard were retarded
saying no-one wanted the object/method URL approach
but that's pretty much the defautl way for MVC right now 06:35
it doesn't allow anything else from what I gather
and I wouldn't have a problem with that
obra isn't a fan of that approach.
avinash240 Catalyst allows you to do other ways
like I said..Catalyst seems more powerful
as I expected from the perl approach
obra but most of what seems _really_ nice about actionpack is the sets of helpers to abstract out the boring bits that everyone screws up.
avinash240 just a bit more entry fee..I'd really like to see more documentation 06:36
obra and that's not something I've seen in Cat
avinash240 yes
err
no
you mean the helper scripts
for things like
adding views and what not?
and building the directory structure and whatnot? 06:37
obra all the viewkit metalogic
avinash240 what do you mean?
obra actionpack comes with a gorgeous set of helpers for everything from hyperlinks to forms 06:38
stevan ok bed time for me - nite all
obra last time I asked sri and draven, cat just didn't have that yet.
avinash240 yeah I don't believe it has that stuff yet 06:39
obra nods
avinash240 version 5 has the helper scripts for setting up the skeleton structures and whatnot
and they've ported over the java protoype library 06:40
which is hude
err
huge
so you can do Ajax
i think I'm going to run over the the catalyst irc channel 06:41
svnbot6 r3564, Stevan++ | Perl::MetaModel - adding more details to the Meta::Compiler tests
avinash240 all this catalyst talk has me gong
= )
bsb ping scook0 06:46
scook0 pong bsb
bsb that was quick
scook0 I got home about 15min ago
how goes it? 06:47
bsb Good, but busy with non pugs stuff
I saw your munge haddock changes and had a similar ideas
scook0 What did you have in mind? 06:48
bsb I'll just post the oldish patch
pasteling "bsb" at 203.214.67.82 pasted "haddock munging" (29 lines, 848B) at sial.org/pbot/10301
bsb Basically using the ignore-exports option 06:49
optionally
I thought that the munger could have an API mode and an internal mode
I didn't get the Makefile work done though 06:50
scook0 hmm
so, munge_haddock would only nuke the export list if a special flag was applied? 06:51
bsb Not sure if it's any use now but thought I may as well share the idea
scook0 I just wonder whether having only the exported symbols is any use... 06:52
bsb yes, it would turn "-- haddock-internal: ignore-exports" into "-- # ..."
scook0 clicks
bsb I don't know, the docs are mainly internal at the moment
scook0 so, the export list should only be nuked if we specify a certain option in the file itself? 06:53
bsb Yeah, or the reverse could be the default
It's probably more useful currently
scook0 It could be useful idea 06:54
I'm just trying to think of a use for it
It would decrease the compatibility burden on my poor little script if we knew that it was only being applied to approved source files 06:55
bsb It could also tweak other attributes, none look as useful though
www.haskell.org/haddock/docs/module...butes.html
scook0 suddenly feels stupid 06:56
bsb oops
scook0 I was wondering whether Haddock had an option like that, but I could never find it
I only hacked up the munge script because I couldn't get Haddock to do what I wanted
bsb Haddock seems a bit hard to use sometimes 06:57
Have you found that?
scook0 aye
I suppose it is only 0.6
bsb Yeah
scook0 I think you should try undoing my changes, and implementing your solution 06:58
bsb Sure, I haven't got anything else of use here, I'll be here a little while
scook0 Actually, instead of that, you could just get munge_ to add #ignore-exports to the top of every file 06:59
no, that wouldn't quite work
you'd have to be careful to only insert it before actual module declarations
because I think there are some source files that are #included, and don't have module declarations 07:00
bsb Exactly, that's why I like the safer munging
scook0 It was always my intention to cooperate with Haddock instead of fighting it
bsb Although it's more tweaking initially
scook0 I'd be quite happy to see my code go 07:01
bsb If there's no need for two doc modes, then we could just insert the ignore-exports where required 07:02
scook0 print "-- #ignore-exports" if /module/ or something 07:07
bsb scook0: No, I just meant manually, not with the munger 07:16
scook0 oh 07:17
doing it in the munger would be easier to maintain, I think
bsb: I just put 'print "-- #ignore-exports";' at the top of munge_ and everything seems to work fine 07:25
bsb scook0++
scook0 I'll commit shortly... 07:26
r3565 07:28
bsb: see if it works for you 07:29
bsb ok
making 07:30
src/Pugs/Config.hpp:21:1: parse error in doc string 07:33
svnbot6 r3565, scook0++ | * Haddocks for 'juncApply' in Junc.hs
r3565, scook0++ | * Export-list nuking is now much more elegant (bsb++)
scook0 hmm
bsb That might be me messing around locally, let me check 07:34
scook0 try doing 'find -name '*.hpp' | xargs rm' to clean out all the old .hpp files
Having old pre-processed files sitting around will prevent make from trying to refresh them 07:35
bsb svn diff 07:36
Index: util/PugsConfig.pm
It's incompatible local tweaks to util/PugsConfig.pm 07:37
scook0 What line from the .hpp is causing trouble?
pasteling "bsb" at 203.214.67.82 pasted "config gen haddock" (41 lines, 1.1K) at sial.org/pbot/10303 07:38
bsb src/Pugs/Config.hpp:21:1: parse error in doc string: [TokString "\n",TokPara,TokString "The configuration is derived from Config.pm from the installed perl.\n"]
Nothing for you to worry about
I see /usr/bin/perl -Iinc util/munge_haddock.pl src/Pugs/Types/Scalar.hpp 07:39
-- #ignore-exports
during make haddock
head src/Pugs/Compile/Parrot/AST.hpp doesn't have the ignore-exports yet 07:40
weird 07:41
scook0 ack
you're right
I just had a look at Eval, and all the private functions are gone again... :(
Looks like my new, elegant solution doesn't actually work 07:43
Maybe it's because the 'print' is before the 'while (<>)'
OK, I nearly have it working... 07:47
Phew, r3566 07:51
That'll teach me to actually make sure that things work /before/ I say that they do
bsb: try it again, if you please 07:52
bsb soon, on the phone
still not happy... 07:59
svnbot6 r3566, scook0++ | * Oops, my elegant #ignore-exports wasn't actually working
bsb actually, it's good.
I just didn't get the ignore in the "head"
scook0 the ignore now shows up immediately before the module declaration 08:01
and by 'module declaration', I mean any line matching /^module/
I'm now rebuilding everything, just to be sure... 08:02
worksforme 08:05
Aankhen`` Juerd, you around? 08:10
bsb scook0: ok so far, with my changes reverted 08:13
svnbot6 r3567, autrijus++ | * POD cleanup of pugs.pm; recommend Filter::Simple
bsb any file & function I should check? 08:14
scook0 bsb: Eval 08:15
if you find more than 4-or-so functions, it worked
bsb got heaps, its working
scook0 the other thing to try is: find docs/haddock | xargs grep -n 'exports' 08:16
to make sure that nothing was inserted where it shouldn't have been
bsb none
scook0 cool
sounds like it's all working :) 08:17
bsb I was also thinking that if "Pad -> Pad" had a name then the docs might be clearer
My haskell skillz don't stretch that far yet
scook0 bsb: teatime for me; perhaps we shall talk later 08:22
bsb bye, enjoy your meal
scook0 returns 08:53
svnbot6 r3568, autrijus++ | * unbreak hs-plugins integration.
scook0 bsb: ping
bsb scook0: pong
scook0 you were mentioning "Pad -> Pad"... 08:54
In my docs, I've been calling them 'pad-transformers' 08:56
if we wanted a special type alias, I think we could just use: 08:57
type PadTransformer = Pad -> Pad
I wonder if there's a better name...
bsb PadTrans, VarUpdate, PadEdit 09:00
svnbot6 r3569, scook0++ | Tweaks to Haddocks for Junc.hs
bsb I didn't think of anything good
scook0 You understand what they're doing, right?
Installing new symbol bindings into a lexical or global pad, and returning the new, augmented pad
bsb I understand what, when confuses me 09:01
lazy evaluation...
autrijus wakes up to find mod-perl 2.0.0 released 09:03
scook0 I kinda-sorta understand when, but not 100% :(
autrijus rehi \camels!
hm, Win32 build broken?
bsb: PadTransformer is probably not any more readable than Pad->Pad 09:06
I tried to find a good name... PadSyms, PadTrans, etc
but nothing stuck
scook0 now that you mention it, it's probably a good idea to leave the '->' in there as a clue 09:07
autrijus *nod*
scook0 but for now, 'pad transformer' is the de-facto name for them in the docs
autrijus that's good
scook0++ # haddock-fu 09:08
bsb It's haskell function and it's perl function seem to collide
I'm not sure if I can make myself clearer :(
scook0 autrijus: could I trouble you to look at the docs for 'juncApply'?
autrijus scook0: I did, it's good, I even tweaked it 09:09
scook0 autrijus++
autrijus hm, time to upgrade all my www/ ports to chase mod_perl2 change
scook0 any specific reason for all() & none() getting autothreaded before one() & any()?
autrijus scook0: specced this way. 09:10
I don't think S09 gives reasons
Juerd Aankhen``: I am now.
scook0 (you|me) should put that in the docs then
autrijus p6l may have some archive on that tho
in tests we'd use
L<S09/Junctions>
not sure how to do so on haddock... care improvise a bit? 09:11
I need to find food :)
<- slept for 12 hours...
scook0 autrijus: is there a canonical URL for the latest versions of the AES (in HTML)? 09:19
svnbot6 r3570, scook0++ | Haddocumented the justification for all & none
r3570, scook0++ | autothreading before one & any (specced)
autrijus scook0: yes, look at dev.perl.org/perl6/doc/synopsis.html 09:20
nice "haddocumented"
scook0 autrijus: are those versions kept up-to-date with the pod sources? 09:21
autrijus I think they are autogenned
so yes
scook0 I was under the impression that they lagged heavily, but maybe I just looked at them at a bad time 09:23
anyway, I think Haddock only supports vanilla URL-hyperlinks
autrijus I think robrt set up autoupdater only recently
scook0 ah
autrijus anyway, I think dev.perl.org is as canonical as any
scook0 can you think of any other places in the docs where AES links would be handy? 09:24
(I feel uneasy committing a one-line change... :)
bsb g'night all
scook0 bsb: night 09:25
integral is there a copy of the pugs haddocks online somewhere?
scook0 www.pugscode.org/haddock/ 09:26
integral ty
scook0 not sure whether it's autogenned or not though
autrijus: how are the online haddocks generated? 09:27
autrijus scook0: as part of util/smoke_loop.sh 09:29
scook0 how often is that?
autrijus I'll redir. a sec
done 09:32
Aankhen`` Does ext/Tree/Makefile.* need to be added to svn:ignore? 09:53
svnbot6 r3571, scook0++ | Added S09 link to Haddocks for juncApply
r3572, Aankhen++ | * docs/other/PORTING_HOWTO: added :P5 to Perl 6 translation of regex, for even easier porting.
r3572, Aankhen++ | * other minor tweaks.
Aankhen`` Or rather, Makefile and Makefile.*
I'm getting this from `svn status`: ? ext\Tree\Makefile 09:54
autrijus sure, feel free to svn:ignore them
Aankhen`` OK. 09:55
Aww crud. 10:01
svnbot6 r3573, Aankhen++ | * added svn:ignore to ext/Tree
Aankhen`` Should I add all the P5 -> P6 regex translations to PORTING_HOWTO? 10:07
svnbot6 r3574, Aankhen++ | * fixed messed-up svn:ignore.
Aankhen`` Or should that only contain the bare minimum?
autrijus Aankhen``: please check it in :) 10:08
Aankhen``: I'm also thinking about porting/data porting/oo porting/rules
i.e. following quickref format
but it's just an idle though.
Aankhen`` Ah.
autrijus thought. 10:09
Aankhen`` Hrm, then PORTING_HOWTO could contain the bare minimum.
autrijus anyway, improvise! :)
dinner &
Aankhen`` A'right.
Enjoy.
Shillo Hullo! 10:10
Aankhen`` Hiya. 10:20
scook0 is away
svnbot6 r3575, Aankhen++ | * docs/other/PORTING_HOWTO: added reference for translating regexes. 10:43
Aankhen`` Wow... delayed reaction. o_O 10:44
Shillo Heh. :) 10:49
svnbot6 r3576, shillo++ | added more tests to gather.t (1 fails)
Shillo He likes me. ;)
(and this was more of a commitbit test)
Aankhen`` Bah. 10:50
Shillo Well, although I found out that sub take {} will permanently break gather/take pairs.
Aankhen`` Heh.
Shillo ... and gather/take should work lexically.
Aankhen`` And I shall BBL. 10:51
Shillo Laters. then. :)
svnbot6 r3577, iblech++ | Usual svn properties. 11:07
r3578, iblech++ | PORTING_HOWTO Ć¢ porting_howto (consistency)
r3579, iblech++ | Prim.hs -- Changed in the definition of op0 "time" the VNum to a VRat so time() 11:16
r3579, iblech++ | is nicer formatted if one outputs it (1.69988707046647e8 vs. 169989018.147893).
r3579, iblech++ | putter++ for a floating time!
r3580, iblech++ | Algorithm-TokenBucket - unSKIPing a test which needed accurate time() -- thanks putter! :)
meppl guten morgen 11:32
Shillo Hullo. :) 11:34
iblech Hi :) 11:35
theorbtwo is gack. 11:37
Er, back.
Shillo found out why when junc(1, 2, 3) doesn't work. 11:45
Now to fix it...
Shillo scratches his head and goes oooooom and ahhhhh... 11:46
Shillo got it, eventually. :) 12:44
svnbot6 r3581, shillo++ | when any(...), when all(...), when one(...) bugs fixed
iblech Shillo++ :) 12:45
Shillo Well, wasn't particularily nice job. I just made when really dispatch to infix:~~ (and this calls juncApply at some point, as side-effect) 12:46
So op2Match doesn't know junctions yet.
The remaining hour was spent with type police. Still learning Haskell. :)
Aankhen`` Does `temp` work? 12:47
Nevermind, temp.t seems to say otherwise.
stevan autrijus: I will start the Changlog sometimes today (within the next 10 or so hours) 12:48
off for breakfast now though :) 12:49
Aankhen`` Is there any easy way to force a test with a particular version of a module? 12:54
Hrm.
That's not quite right.
Aankhen`` tries again.
Aankhen`` realises it's a stupid question and goes back to work.
Aren't there tests for module { ... }, use and import? 13:06
Juerd grep?
iblech IIRC no. And module {...} is IIRC not yet implemented (only module ...; is) 13:11
Aankhen`` Ah.
grep seems to agree.
How can I force the use of a module from a file residing in the current directory? 13:12
iblech use() searches in @*INC for the file to load, so a BEGIN { unshift @*INC, "." } should work 13:13
Aankhen`` Ah, the BEGIN { ... } is what I was missing. 13:14
Hrm, that didn't work. 13:15
D'oh!~ 13:18
Nevermind, it did work, thanks. :-)
iblech :) 13:19
svnbot6 r3582, iblech++ | * Made &::("infix:<+>") work. I put the code in Pugs.AST.Internals (lookupVar), 13:35
r3582, iblech++ | hoping it's the correct location.
r3582, iblech++ | * unEVALed the therefore now succeeding test and added two more succeeding
r3582, iblech++ | tests to operator_overloading.t.
r3582, iblech++ | * Added a comment to examples/obfu/random_operator_overloading.p6, explaining
r3582, iblech++ | why my &::("infix:<$op>") won't work.
iblech stevan: Hm... I think I'll try to implement the builtin fail(), but this will clash with Test.pm, so need to rename Test::fail. Suggestions? 13:46
svnbot6 r3583, Aankhen++ | * &HTML::Entities::decode_entities can now handle a list. 13:49
r3583, Aankhen++ | * &HTML::Entities::encode_entities modifies the original string too.
r3583, Aankhen++ | * HTML::Entities version bumped up to 0.2.
r3584, Aankhen++ | * updated tests for HTML::Entities: added test for decoding lists, added plan.
r3584, Aankhen++ | * all tests now pass.
Aankhen`` Maybe "all tests" was a bad choice of words, now that I come to think of it... 13:50
iblech >> force_pass() and force_fail()?
iblech Aankhen``: Like those. They make clear that one is forcing the test result 13:54
Aankhen`` :-D
13:54 Odin-FOO is now known as Odin-
Shillo waves. Laters! 13:55
Aankhen`` See you Shillo.
integral ponders ripping retError out everywhere in favour of fail 14:09
iblech Hm... can I return a IVar VScalar without readIVar'ing it? 14:10
integral iblech: "return"? 14:11
you can certainly have a function of type: a -> IVar VScalar
iblech integral: Yeah, return is probably mis-chosen. I meant the Perl return value of a Prim 14:12
integral ah
integral thinks not
iblech The problem is: I'm implementing fail(), and it needs to build a proxyScalar which will die() when it's actually used. Unfortunately, proxyScalar (...) (...) is a IVar VScalar, not a Val 14:13
Maybe I can box it in some kind of reference?
integral you can return a VRef to an IVar
Aankhen`` Isn't fail() supposed to be used in rules? 14:14
iblech Aankhen``: Yeah, there too. fail() generally either dies() or returns an unthrown exception
integral: How?
Aankhen`` Ah, okay.
integral iblech: VRef MkRef a
iblech compiles, thanks :) 14:15
integral Aankhen``: fail is in the Monad class, so should do something sensible in any monad
Aankhen`` Monad?
integral er, did you mean p6? 14:16
iblech Aankhen``: integral referred to the Haskell fail()
Aankhen`` OK.
integral >> Yes. :-)
integral oops ;-)
Aankhen`` No sweat.
Aankhen`` wonders how much upgrading from an AMD Athlon XP 2000+ with 512 MB of regular DDR333 RAM to a P4 3 GHz. w/ HT and 512 MB of dual channel RAM will speed up building Pugs. 14:19
Ought to speed it up quite a bit, since P4s trounce Athlons in multi-tasking... 14:21
Aankhen`` smiles.
theorbtwo It'll still be somewhat slow, but not horrible. 14:22
theorbtwo has twice as much RAM, but it's not dual-channel.
Aankhen`` I have to choose between getting dual channel RAM and doubling my RAM. 14:23
Forth__ with P4 3GHz and 1GB dual-channel RAM, still can read pages of book while building
Aankhen`` And simply doubling my RAM would mean that I have to stick with DDR333.
Forth__ >> I could read a full book in the time it takes Pugs to compile on my machine... 14:24
A somewhat short book, but yeah. :-)
integral use unoptimized builds :-) 14:25
Aankhen`` Ahh, I decided to go with the regular build this time.
I've got lots of stuff to read in the meantime, so I figured I'd let it take its time.
Whoa. 14:41
Failed 42/287 test scripts
iblech How many subtests?
Aankhen`` 246/5431.
That seems like a more reasonable number. :-D
iblech Ok, yesterday or so we had 224/5347 -- 100 new tests, only 20 new fails, that's a good balance, I think :) 14:42
Aankhen`` Hehe. 14:43
integral We don't put the subtests failed in the topic any more? 14:44
Aankhen`` wanders off to play GunBound.
Hrm, I can't.
Dang.
Aankhen`` wanders off regardless. 14:47
scook0 #perl6 Ā».bye 15:35
iblech Hm... ok I think there's a problem. I've a IVar VScalar (created using proxyScalar) which will Haskell-fail when it's readIVar'ed. If I return a VRef . MkRef, readIVar will be called, resulting in a too early die(). It works though, if I return a VList containing this reference, because VLists are lazy, while a normal VRef is not. 15:41
The problem is though, that then the Perl space will see an array, so my $x = fail "error_msg" and then $x + 3 *won't* die 15:42
(But it should)
Hm wait
Ok, works :) 15:43
nothingmuch 's body is going to revolt soon 15:59
svnbot6 r3585, Stevan++ | Perl::MetaModel - adding a document describing the implementation of the Meta-model (the planned impl, not the current one really); I will work more on this later
nothingmuch for the record, the lazy { } idea was not really mine 16:02
eric256 take is flattening array-refs..
iblech eric256: Write a test? :) 16:04
eric256 i am. but i wanted to find the documentation of what it should do..looks like A12 has just a quick reference to it
svnbot6 r3586, iblech++ | Fix eval.t (precedence issue).
r3587, iblech++ | First sketch at a (Perl) fail() implementation.
r3587, iblech++ | Note: It's currently called fail_, to avoid the clash with Test::fail.
r3587, iblech++ | Note: fail() returns VList, as VList is the only lazy Val currently.
r3587, iblech++ | If we return a strict Val, Haskell will die immediately.
r3587, iblech++ | This needs some support from a more enlightened lamdafolk. :)
iblech Yeah... gather/take is a bit underspecced 16:05
nothingmuch perlbot karma iblech
perlbot Karma for iblech: 219
nothingmuch oh my
iblech But it surely shouldn't flatten arrayrefs, I think
:)
eric256 i would think not. should i start a new test file for it? or is there someone else better? googling the SVN repository found no mentions of gather/take but i don't trust it.. i realy need to get a grep on this machine 16:06
iblech t/statements/gather.t
grep++ :)
autrijus iblech: lazy val is called vthunk... I think
iblech autrijus: oh? sec 16:07
autrijus (VRef . thunkRef $ MkThunk foo)
where foo is of type Eval Val
this will manufacture something that is evaluated in a delayed fashion
I'm intentionally making laziness explicit 16:08
because relying on haskell's builtin laziness will make constructs less portable when we want to translate to p6 or other languages
so VList may be made strict one day
or gone totally, too
iblech works! :)) 16:09
autrijus :D 16:10
eric256 thanks iblech, test added 16:16
svnbot6 r3588, iblech++ | fail_ now returns a VThunk instead of a VList, autrijus++! :)
r3589, eric256++ | Take flattening array-ref bug test added.
eric256 is there any help i can be in improving errors when inside subs/classes?
iblech ...errors when inside subs/classes? 16:19
eric256 the error messages when you have an error inside a sub.. they just say...or never mind. hmm i'll have to see if i can replicate it. the last few days any syntax errors inside subs didn't return very helpful messages. 16:20
iblech Do you mean that the error messages always say that the "s" in "sub foo {...}" is evil? 16:21
food & 16:22
eric256 that is the one. of course i can't get it to recreate it now. lol
nothingmuch shower & 16:23
eric256 did classes get broken? wizarp.p6 that was working yestarday fails today ;( 16:27
gtg. later 16:28
putter I have a project proposal I'd like to brainstorm. Quickly bootstrapping p6 rules on pcre. Anyone up for it? 16:32
svnbot6 r3590, iblech++ | * Small cosmetical fix to fail_(). 16:54
r3590, iblech++ | * For now, we set a magical var to a true value, because there's no fatal.pm yet.
putter with r3584, pugs> "{" 17:29
Internal error while running expression: *** Error: unexpected end of input expecting "\"", block, "\\", "\\q", "$!", "$/" or "$" at <interactive> line 1, column 4
I'm not sure if that's spec or not... 17:30
could be.
hmm. ok, likely is. nevermind
iblech Yeah, {...} interpolate in strings 17:32
...in double-quoted strings
putter is still accidently writing p5 in p6 and p6 in p5... tnx 17:35
Aankhen`` LOL. 17:39
knewt ok, since there are people here who know haskell... is it possible to filter a list using a function that returns IO Bool instead of Bool ? 17:42
svnbot6 r3591, putter++ | added length() to porting_howto
kelan whats in the list
i mean how is the list typed 17:43
oh i see what you're asking
hmm
iblech Control.Monad.filterm?
Control.Monad.filterM?
Control.Monad.filterM :: (Monad m) => (a -> m Bool) -> [a] -> m [a] 17:44
knewt and i need a non IO lists as a result
s/lists/list/
iblech That's not possible, I think, as IO is a one-way monad
but you can do:
kelan so the list elements are IO and you want non-IO?
iblech result_list <- filterM (\_ -> return False) [1,2,3]
then result_list if of type [a] 17:45
kelan maybe it would help if you told us what you want to do instead of how you want to do it:)
iblech but that only works inside a do expression
Um... where is my, our, state, and temp parsed? 18:01
knewt back. sorry, had to disappear a moment. ok, I have a [String], where each String is a filename. I want to filter the list such that I end up with a new list that only contains filenames that don't exist 18:03
doesFileExist will do the check, but i can't figure out how to do the filtering 18:04
iblech ok, then: do { filenames_which_exist = filterM doesFileExist list_of_filenames; ... } 18:05
knewt using filterM actually compiles, but assuming it's otherwise ok, how do i negate an IO Bool ? not doesn't work for that
iblech you can use (liftM not) to lift not in the IO monad 18:06
knewt i've been playing with haskell for less than 24 hours so far, so i'm still at the point of randomly trying things when i'm not sure *g*
iblech liftM not $ io_bool
;)
[where is my, our, state, and temp parsed] nevermind, found it 18:14
svnbot6 r3592, putter++ | Removed an unhelpful line from porting_howto (a line I authored long ago). 18:27
r3593, putter++ | Added syntax/heredoc.t. Heredocs do not appear to be implemented yet. 18:43
nothingmuch putter: see also quoting.t 18:52
nothingmuch goes out
crap, i thought i'd leave you with bugs internals beginings, but pastebot is not working (404) 18:53
s/bugs/pugs/
eric256 is there a way to run the tests in a way that just gives a list of the :todo<> tests ? 18:57
stevan eric256: not just a list, but if you use prove, it will tell you how many TODOs in each file 18:58
grouped by the reason
putter nothingmuch: drat. missed that. tnx. 19:01
nothingmuch: use diffent pastebot? 19:03
svnbot6 r3594, autrijus++ | * add the remaining missing signatures for TH expressions.
r3595, eric256++ | added sanity check on calling uninherited methods
r3596, putter++ | Removed syntax/heredoc.t. Heredoc tests are in operators/quoting.t.
r3597, autrijus++ | * fix method() parsing -- thanks eric256 for pointing it out
putter Could I get a reality check on the following concept: 19:05
I am writing a p6 rules to pcre (aka rx:perl5) converter in p6. Right now, p6 rule support is a bit minimal. The parsing is done by PIR code in PGE, which is minimal, and is apparently intended to be thown away. 19:07
Extending the PIR parser... well, writing parsers in assembly language... 19:08
eric256 beleives autrijus credits me with finding things accidentaly... i guess maybe that is my role in these things....finding bugs i don't even understand are bugs. ;) 19:09
theorbtwo Sometimes, the easiest way to have an open mind is to have an empty mind. 19:10
Er, please don't take that the wrong way...
putter With a p6->p5 converter, the parser could be written as p6 rules. Some constructs which are difficult for the converter to handle would have to be avoided.
integral it'd be better than Perl6::Rules, right? 19:11
autrijus anything is better :)
putter I considered just porting Perl6::Rules... 19:12
eric256 no theorbtwo i agree completly. which is why i often ask what even i think are stupid questions in here ;)
integral with a p6->pir converter you can write the parser with p6 rules too ;-) 19:13
putter P6::R implements a rather old version of p6, so it would have to be updated as well as ported. 19:14
And it seems the same thing could be done more simply.
autrijus putter: porting the PGE parser to p6 would be wonderful.
the emitter/interpreter too, but pmichaud said that he would be delighted if somebody can start porting the parser to p6.
eric256 "No compatible subroutine found: "&infix:<="" .... i'm confused. what happened to <= ?? 19:15
putter Ok. Proceeding... Thanks for the feedback.
autrijus eric256: hm? 4 <= 5 no longer works?
eric256 method dead () { $.life <= 0 }
gives that error. 19:16
and in the pugs interactive mode it give the same error with 4 <= 4
autrijus ho hum!
autrijus tries it
iblech Ah... /me knows why 19:17
autrijus iblech: /you will fix it then?
iblech course :)
sec
autrijus iblech++
eric256++ # wizard-driven development
integral iblech++ # two haskell programmers, wow! :-)
iblech :)
eric256 do we need more tests for that? i mean shouldn't that have trigger an alarm?
autrijus eric256: I'm sure it's tested... but I hadn't been looking at smokes in two days 19:18
integral autrijus: btw, is retError deprecated? Should current uses of it be converted to fail?
autrijus integral: well, retError is actually fine now
I converted it to become 19:19
retError :: (Show a) => VStr -> a -> Eval b
Aankhen`` autrijus >> If the entire Perl 6 parser is implemented using PGE, wouldn't that be a tad slow?
autrijus retError str a = fail $ str ++ ": " ++ show a
integral ah, ok :-)
autrijus so it's a convenience method to fail with two parts
Aankhen``: not neccessarily...
Aankhen``: I mean there's room for optimisation
Aankhen`` OK.
I'll take your word for it. It was a rather vague question anyway.
autrijus PGE is supposed to do what p5regex does 19:20
integral if you've got a specific application, you can write your optimizer specifically for it...
autrijus so it needs to be optimised to at least on par with pcre
in the long run
Aankhen`` Yeh.
autrijus (where we're all cyborgs)
Aankhen`` Speaking of the long run, I had two questions:
1. Is Pugs going to stick around as one implementation of Perl 6?
2. Is MSYS always going to be required for linking Parrot into Pugs? 19:21
I mean, is it going to change at any point so that Parrot can be linked using MSVC++?
iblech Fixed, committing... 19:22
autrijus so, 2. is the easy one
Aankhen`` Heh.
autrijus oh wait. you succeeded in using msys to link parrot? 19:23
Aankhen`` No, it's just what you had recommended...
autrijus the only reason MSYS is needed is that GHC's .msi was built with mingw.
Aankhen`` I can't get it to link using MSVC++.
autrijus so persumably you can just rebuild GHC with MSVC++
Aankhen`` And I keep putting off downloading and using MSYS.
Wha?
I can?
Aankhen`` runs to his browser!
autrijus and the Pugs that compiled with it can probably link with MSVC++.
but! I havn't tried it 19:24
and I'm not sure if it even works.
Aankhen`` I'll try it!
autrijus cool
svnbot6 r3598, ninereasons++ | 01strings/01-00introduction.p6 : clean up the section on quote operators and interpolation
iblech eric256: Fixed as of r3599, try again? :)
autrijus grab haskell.org/ghc/dist/6.4/ghc-6.4-src.tar.bz2 19:25
eric256 i assume i'll need to recompile right?
sproingie AHA, is that why i can't embed parrot into pugs?
autrijus sproingie: right
sproingie: but you can use external parrot.exe just fine
sproingie could someone please hack the perl makefile to forbid parrot embedding under MSVC?
autrijus it will still run PGE via externall parrot.
iblech eric256: Yes
autrijus sproingie: please do it? in Makefile.PL put a check for $Config{cc}
Aankhen`` autrijus >> Was already on the download page. ;-) 19:26
sproingie will check. un moment
autrijus sproingie: I'm not sure you're a committer though... if not, what's your email? I'll send an invitation for you to checkin
sproingie autrijus: [email@hidden.address]
autrijus invitation sent. welcome aboard! 19:27
sproingie woo!
autrijus be sure to forbid the user with a nice message saying external parrot will really work :)
sproingie external parrot?
autrijus (and not slower by much)
sproingie i'm not familiar with it
autrijus sproingie: as long as you have a parrot.exe in path
you don't need to embed parrot 19:28
Aankhen`` Okay, good, WinRAR supports BZ2 archives.
autrijus all eval_parrot and rules will still run.
sproingie whoah, really? did not know that
autrijus yeah... I think I said that in Makefile.PL
sproingie that needs to be in the README. guess i'll edit that too ;)
Aankhen`` sproingie >> You download a binary distribution of parrot, put it in a directory, add it to the PATH.
autrijus sure, go ahead :)
Aankhen`` Or if you enjoy inflicting pain on yourself, check out the source and build it for yourself.
autrijus while you're at it you can also refactor README to README.x86_64 and README_gcc4 and friends :)
sproingie oh there it is
autrijus but anyway, improvise
Aankhen`` I chose the latter. I really don't like inflicting pain on myself though. Really. 19:29
autrijus building parrot is 1)easy 2)fast though.
sproingie dunno what the issues are on x86_64 right now, i'm building it on windows ATM
Aankhen`` I wouldn't say it's fast...
sproingie parrot builds easy sheazy
autrijus sproingie: I was referring to the long README with multiple chunks that can stand a refactor out
Aankhen`` But yeah, I guess building Parrot is a lot less painful than most things.
sproingie fast on my machine ... 'course it's msvc on a athlon 64 3200+ 1G ram
svnbot6 r3599, iblech++ | Make 4 <= 4 work again. eric256++ for noticing the b0rk! :)
r3600, ninereasons++ | 01strings/01-00introduction.p6 : french quotes didn't remain unicode :(
sproingie so is PUGS_EMBED=perl5 worth it? 19:30
eric256 No compatible subroutine found: "&infix:<=>"
autrijus wizards.p6 runs again, yay
eric256 that is from running relational.t
autrijus sproingie: probably not -- it's very lightly tested and can't use XS modules
(for now)
iblech: oops, looks like <=> is borken
ah, dropBrackets ;) 19:31
iblech Exactly
autrijus infix:<=> is ambiguous, eh?
iblech Yeah
autrijus just hard code for it for now :)
eric256 i love the (20..30).pick idiom for random number selection beatts int(rand(30-20) + 20)+1 . lol
iblech Ok
autrijus eric256: yes, that's very sick 19:32
I mean slick
pick(10..30) # works too
sproingie should i have it die if it detects PUGS_EMBED=parrot and MSVC, or just have it print a nastygram and disable it?
autrijus sproingie: a nastygram.
<- not a fan for unneccesssary rerun
eric256 i wonder if that is not a good idea for big ranges though. i mean you don't realy want to build (1...10000) in memory just to pick a number 19:33
autrijus eric256: supposedly it can be made lazy
(but currently not)
autrijus decides to throw three more proposals to Euro OSCON, bringing total to 5 19:34
Juerd poweredbyperl.stage.zsi.at/index.html
eric256 while you guys are talking about parrot...why do i get
*** Cannot parse PGE:
*** Error: end of file
Juerd autrijus: Can you add Pugs there?
eric256 when trying to use rules?
autrijus eric256: you have parrot in PATH?
putter autrijus: the other day you mentioned p6 type variables. I hadn't previously encountered mention of them. Leaving me wondering if you have a *hidden cache* of p6 type system specs. ;)
eric256 yep 19:35
iblech r3601, <=> working again
autrijus putter: I don't... all I have is larry's reply to my Fortress question
eric256 thanks iblech
autrijus $ ./pugs -e 'say 1 ~~ /1/'
1
putter ok.
autrijus eric256: do you get the error when running that?
eric256 yep 19:36
autrijus eric256: which parrot is this? 0.2.0-release?
putter: I'll freely admit I have my plain-as-day agenda of brining in a respectable typesystem into perl6
eric256 0.2.0-devel (r8106)
autrijus even though most of them has to be carried at runtime ;)
eric256: cd into src/pge
hi japhy 19:37
putter eric256: you can also try rules out directly on pge by doing parrot demo.pir .
japhy putter - you were talking about a parser for perl6 rules?
hi autrijus
autrijus eric256: run this from src/pge:
$ parrot run_pge.pir japhy japh
PGE_Match 0 4 [] []
Corion Oh. The symbol table tests start working ;)
putter autrijus+=<big number> # p6 with nice typesystem 19:38
eric256 the binary distro i found doesn't have a src directory
putter japhy: yes...
autrijus isn't it nice that the number of dedicated internal hackers just doubled :)
Khisanth "just"?
autrijus eric256: binary distro of pugs?
eric256 of parrot
japhy putter - I wrote Regex::Parser and have been meaning to make another version that handles Perl 6 grammars/rules/whatever they're called
eric256 sorry didn't realize you meant pugs 19:39
autrijus Khisanth: "just", as in since the past few days
putter goes to look at Regex::Parser...
autrijus japhy: I wonder if you can write it in perl6 :)
(but it's fine to write in p5 and we port later)
japhy I could probably write Regex::Parser in Perl 6, and once that was done, write the new one in Perl 6
Juerd Hi japhy!
svnbot6 r3601, iblech++ | Made <=> work again.
autrijus japhy: woot. that will likely exercise many corner cases in pugs 19:40
japhy oops, Regexp::Parser I meant
eric256 there is no japhy or japh file.
Corion Hmmm. t/builtins/time.t now dies. I guess that has to do with the redoing of time() ...
japhy autri/eric - whatever japhy file you're looking for, it probably doesn't exist. I haven't actually done any Perl 6 work yet.
autrijus eric256: those are args
eric256 excuse that. error is
error:imcc:No such file or directory
in file 'run_pge.pir' line 6
sproingie guess i'll have it scrub parrot out of PUGS_EMBED and print the nastygram 19:41
autrijus sproingie: cool
sproingie normally i'm not a fan of auto-munging environment variables, but that's the cleanest in this case
autrijus japhy: never mind that... that's just me using your name as a run_pge.pir test for eric256 to play with
eric256: no such file or directory? curiouser and curiouser
hm, your parrot doesn't have iglobals.pasm.
gah. 19:42
who made that bindist?
eric256 wiki.kn.vutbr.cz/mj/attach/parrot/binary/
autrijus eric256: ok, svn up and try again
eric256 i would happily use any other.
autrijus (no need to recompile)
sproingie here's a silly question. what the hell happened to DELTREE in DOS? 19:43
sproingie wonders how to get rm -rf without having to put cygwin or mingw in the path
knewt it never existed in NT iirc
sproingie bleah
autrijus it became rmdir /s/q
sproingie ah 19:44
knewt i always got annoyed about it myself
autrijus I hope you are not using it in our Makefile.PL
:)
sproingie i'm going to write a DELTREE.BAT and put it in my path
eric256 yea it works!
autrijus eric256: woot. thanks for the feedback
now try using rules
sproingie autrijus: warn "*** Use a real OS D00D!"; system "DELTREE C:\"; ... darn, won't work ;)
eric256 they work too. cool
svnbot6 r3602, autrijus++ | * add back iglobals.pasm
autrijus hmm 19:45
sproingie
.oO( wouldn't compile like that either )
autrijus "Pugs 6.2.4, bundled with VMWare 5.0"
putter japhy: nifty. my exerise is much simpler. transliterating a p6 rx into a combination of pcre (aka rx:perl5, though some nice pcre extensions shine through) and p6 code.
Just enough so someone can do a real p6 rx parser using p6 rules.
eric256 freaks when he realized he hasn't heard his daught make any noise for a while... 19:46
she fell asleep behind the couch. goofy girl
japhy putter - so you want something that takes Perl 6 regexes and turns them into the Perl 5 equivalent?
autrijus putter: that effectively means you need a p6rule parser. 19:47
so it's not at all simpler :)
(plus an emitter too)
japhy putter - for that, I'd write the extension to Regexp::Parser for parsing Perl 6 rules
the way the extensions work is they change the grammar of "regex", and require you produce emitters that work in Perl 5
Juerd japhy: One problem with parsing Perl 6 rules is that you need to be able to parse Perl 6 19:48
autrijus hmm, so austrian perl workshop and french perl workshop's J*PH competition is an Obfu contest after all. I guess Obfu contest is sanee than Golfing contest
putter autrijus: not really. you don't have to worry about distinguishing valid for invalid regexp, and
Juerd japhy: As arbitrary expressions become more important, and something like / { /foo/ } / dwym.
japhy juerd - can't you simply match braces?
autrijus japhy: you can -- it won't be 100% correct -- but to hell with it 19:49
Juerd japhy: Not without knowing which braces/quotes mean what.
autrijus i.e. I think it's good enough
japhy I mean, you'd think I'd have to know how to parse Perl 5 to write a Perl 5 regex parser...
but I don't parse Perl 5. when dealign with (?{ ... }) I use the same mechanism that 'perl' does -- brace counting
Juerd japhy: / [ @foo[ %bar{ "]" } ] ] / will be hard to parse.
svnbot6 r3603, Juerd++ | Fix quickref/namespace. Please use some kind of bullets when writing
r3603, Juerd++ | non-code-example non-table lists, *especially* when the list is hierarchical. I
r3603, Juerd++ | previously left-aligned this thing because I thought some strange editor was
r3603, Juerd++ | used messing things up. Single space indents really do not sufficiently make
r3603, Juerd++ | anything clear.
putter (sorry, distraction, where was I...) 19:50
Juerd japhy: Perl 5 first finds the ending, then parses the code inside
japhy: Perl 6 parses both in one pass
japhy juerd - yes, by brace matching.
juerd - well, isn't perl 6 special.
iblech autrijus: Is there a way to make newTVar/readTVar/writeTVar in Pugs.Parser work?
autrijus japhy: vars are never interpolated in p6rules :)
Juerd japhy: No, by actually using the Perl 6 grammar
autrijus iblech: sure! 19:51
japhy juerd - I meant Perl 5 used brace matching
Juerd japhy: Oh, yes, it does.
autrijus iblech: you can use unsafePerformSTM
iblech: but you can also do something I'd wished from time to time
putter ah, it looks to be a couple of pages of low density code. thats for the parser. as for
autrijus iblech: namely declaring RuleParser to be a MonadIO instance
iblech: and define liftIO there as unsafePerformIO
iblech autrijus: #2 is too hard for me yet 19:52
autrijus iblech: also if you want an entire expression, unsafeEvalExp too
Juerd japhy: But that technique is not equally suitable to Perl 6. I'm not saying it can't work in some cases, but it is something to look out for, and perhaps warn for in documentation.
autrijus (which is often saner)
iblech: sure
japhy well, I'll ignore the parsing-perl part, and start work on the Perl6 regex parser
autrijus japhy++ # getting something done
japhy the beauty of Regexp::Parser is the handlers are entirely arbitrary
autrijus japhy: PGE::P6Rule looks quite grokkable, if a bit verbose
putter the emitter... not sure. 19:53
autrijus so refer to it if you encounter ambiguities
japhy so, when I match something that means Perl code comes next, the handler can just call the Perl parser.
where's PGE::P6Rule located?
autrijus good. then Pugs will have a .parse_perl() method :)
japhy: a copy is in pugs tree, but the newest copy if always in parrot tree 19:54
japhy is a n00b to this
autrijus here:
svn.perl.org/parrot/trunk/compilers/pge/
Aankhen`` autrijus >> Apparently GHC won't compile on Windows without MSYS either, so I'm just going to download that. >_>
autrijus and this:
svn.perl.org/parrot/trunk/compilers...P6Rule.pir
Aankhen``: wow. :-/
Aankhen``: sorry for costing you so much time
japhy gotchya
Aankhen`` Not your fault, dude.
sproingie autrijus: got the OSSF invite, registered as chuck 19:55
Aankhen`` I am only annoyed at GHC. :-P
japhy wait, so what is PGE::P6Rule?
a perl6-rule parser written in parrot?
Aankhen`` Oh, there was one thing, autrijus...
japhy and you guys want one written in perl6? is that what this is about?
autrijus sproingie: in my journal would you like to be known as chuch or sproingie?
japhy: yes!
japhy ah ha.
autrijus sproingie: also please commit to AUTHORS, adding yourself to it 19:56
s/chuch/chuck/
sproingie autrijus: chuck is fine. sproingie is strictly irc (too many chucks wandering around IRC)
japhy forgive me for sounding naive, but why would a perl6 regex-parser be faster than a parrot regex parser?
Aankhen`` As far as I can tell upon inspecting the output from `nmake`, the *.lib files are being looked for in the current directory.
sproingie using my name would give me problems in #freebsd as well as #forth :)
putter the parrot parser is _very_ incomplete.
autrijus japhy: it won't. but for p6 to be self-hosting at the end, the parser part needs to not be in assembly
japhy: plus, I have this feeling that a p6-based parser will be easier to hack. 19:57
japhy yes, I agree to both of those.
ok then.
autrijus japhy: finally, it will push optimisation for p6->* codegen
sproingie autrijus: do i need to re-checkout the pugs tree with a username or something? i don't know svn that well
japhy I'll try to have something tangible by the week's end.
or, after memorial day
autrijus oh and finally, it will make pugs not neccessarily depend on parrot. I'm not sure it's a good thing or not
japhy that's a better target.
autrijus sproingie: no, you can just check in with the same tree
japhy++
japhy OW!
power packs are freaking hot. 19:58
stupid electricity
autrijus japhy: your email? I need to make you a committer ere I forget
japhy [email@hidden.address]
I need a laptop that runs on dreams and ambitions
ok. I'll be back later in the week, folks.
autrijus danke. if you ever start p6izing Regexp::Parser, svn.openfoundry.org/pugs/ under ext/Regexp-Parser/ is the place
japhy: cool, ciao!
japhy ok
autrijus invitation sent, too. welcome aboard! 19:59
autrijus feels excited to have another clearly insane soul on board.
sproingie hm, hope i don't hose the pinyin names... notepad doesnt think the file is UTF8 20:00
putter do all the pugs targets use the parrot-based pge? or are we going to need multiple emitters (near term)?
sproingie s/notepad/notepad++/
autrijus putter: we already emit haskell :)
putter: and the haskell tries to run external parrot at this moment.
sproingie doesn't like it in utf8 either actually
putter ah. ok.
autrijus but a pure-p6 pge would be fun. 20:01
at least the parser+emitter part
then we can compile that to PIR
and finish the mini-bootstrapping for the rules part
putter understood.
autrijus oh wow. I found a way to trick PCRE into supportting (?{}). 20:05
svnbot6 r3604, corion++ | Promoted some symbol table tests that succeed
autrijus not sure if it's worth pursuing at this point though.
since we'll abandon it soonish
putter callbacks?
autrijus yeah 20:06
putter I was wondering how hard they would be. But I thought I'd wait to see if they were really needed for the bootstrap. Some uses of (?{}) can be faked... 20:07
sproingie what's (?{})? balanced?
putter embedded code. 20:08
sproingie oh duh
neato
iblech autrijus: Ok. So I tried to make state $x = 42 work, and realized it'd probably be easier to implement FIRST{...} and then make that state $x; FIRST { $x = 42 }. So I created a new TVar (Maybe Val), TVar Nothing meaning the block hasn't been run yet and TVal (Just rv) meaning the block did ran and it's result was rv. Problem:
sproingie has one app that requires PCRE and not perl because it uses variable-width backward asserts
iblech autrijus: Even after a writeTVar, if the block is executed again, the readTVar I'm using to get at the contents of the TVar (Maybe Val) continues to return Nothing... 20:09
autrijus: Maybe that's because of unsafePerformSTM?
putter ruby's new regexp engine is also nice. (name escapes me at the moment)
sproingie i wonder why perl still doesn't support variable backward asserts? is PCRE's method that incompatible?
autrijus iblech: that may be so
iblech: I wonder why you need a new tvar for FIRST. 20:10
I mean state() is already supported
sproingie: because noone understands the rx engine
svnbot6 r3605, chuck++ | Added check for MSVC to disable parrot embedding.
r3606, chuck++ | Added Chuck Adams to AUTHORS
putter sproingie: and note that pcre has restrictions on its use.
autrijus although a certain demerphq seems to be getting up to speed
iblech autrijus: Not in its assignment form -- state $x = 42 will reset $x to 42 each time the statement is executed
Aankhen`` Would temp() be supported any time soon?
iblech iblech: I need a TVar to remember if I already run the block or not
sproingie putter: what kind of restrictions? licenses? 20:11
iblech autrijus: And I need it to record the return value of the block 20:12
putter sproingie (?<=ab(c|de)) isnt permitted. (from man pcrepattern) 20:14
oh, "its" meaning variable length lookbehinds.
autrijus iblech: so it indeed looks like the VCode want traits including FIRST
sproingie putter: mine are just straight branches. negative, actually. (?<!foo|bar|wibble|yaddayadda) etc 20:15
autrijus iblech: you grok the freshness hack I used for my(), right?
Aankhen`` MSYS is messed up.
sproingie domain names actually
Aankhen`` I give up.
iblech autrijus: file:line?
Aankhen`` I'll just use the external Parrot.
autrijus iblech: 314 eval 20:16
iblech: I wonder if you can do the same for SState.
iblech: namely, on 20:17
Pad SState lex exp
check if the next exp is an assignment form
if yes, and we are not fresh
skip that
it's a horrible hack!
(but would probably work)
of course the "assignment form" here is a specialised one.
Aankhen`` Oh... ought I add my name to AUTHORS?
autrijus Aankhen``: sure
Aankhen`` OK.
autrijus iblech: more properly, probably maintain a lexical @?FIRST for each vcode 20:18
iblech: by using a Syn to push into them
much like what gather/take does
and it needs to be evalExp'ed during parser
there are other possibilities
you can see that I didn't think about this too through :) 20:19
iblech autrijus: I think the @?FIRST thing looks good, I'll try it... 20:20
eric256 for some reason it seems hard to drum up much interest in pugs on perlmonks. 20:27
svnbot6 r3607, Aankhen++ | * added meself to AUTHORS.
eric256 autrijus: the links to the newsgroup in your journal seem broken 20:28
putter ah, here's the ruby regexp engine www.geocities.jp/kosako3/oniguruma/ 20:30
a few interesting things.
charset intersections for instance. 20:31
xerox Just a question
Where is Exp defined in pugs sourcecode?
I can't find it :)
wilx AST.hs? 20:32
svnbot6 r3608, ninereasons++ | correct a few spelling problems in 01-00introduction.p6
iblech xerox: src/Pugs/AST/Internals.hs, 751 20:33
integral ST.Interals
s/.*// ;-)
xerox What is the "!" ? 20:34
integral it makes that field strict, and the compiler can then unbox it 20:35
xerox Do you know what is the part involving AGDT?
integral GADT? 20:36
theorbtwo xerox, do "make haddock", then look at file:///usr/src/pugs/docs/haddock/doc-index-E.html
I'd give you the URL to nothingmuch's copy, but the kwiki is down. 20:37
integral www.pugscode.org/haddock/ I think
xerox I can't "make haddock" now, in windows 20:38
integral, yes GADT 20:39
integral look for IVar, that uses GADT 20:40
xerox Thanks 20:41
Where is it defined? 20:42
putter eric256: re perlmonks, perhaps when classes are in and stabalized. turn-key binary distributions would help, apparently especially on windows. more accessible documentation. what else?
integral xerox: search for data.*IVar in Pugs.AST.Internals 20:43
putter giving a realistic picture of what works and what doesn't. after n-years of parrot saying "foo works!" when it really doesn't has left me at least with a bit of "parrot burnout".
autrijus yeah. anyone want to champion a win32 dist for parrot+pugs? :) 20:44
I asked the PxPerl guy a bit but hadn't heard back
theorbtwo Documentation is I think a big one.
putter anyone actually have parrot+pugs working on win32...? ;) 20:45
maybe that's the problem <tongue planted firmly in cheek> 20:46
autrijus heh, external parrot works ;)
theorbtwo Autrijus, we had an idea the other day -- if pugs could be convinced to have a command-line option to output a file with a dump of the Syn tree, complete with positions, it could power perfect syntax hilighter... which could possibly link to docs on the operators as they occour, and how they occour. 20:47
putter ;)
autrijus theorbtwo: -CPugs does that
look at dump.ast
theorbtwo Looks reasonably parsable. Thanks! 20:49
autrijus :)
it's just a haskell expression.
you can parse it with normal Language.Haskell.Syntax.
putter oh, re perlmonks, and a todo, if someone wanted to make interactive pugs take multi-line input, that would be very nice. 20:50
theorbtwo I could, but I think I'd prefer to parse it with p5 or p6.
putter folks currently cant cut, paste, and try multi-line examples. 20:51
theorbtwo Not with the interactive one, anyway. 20:52
They can always cut-and-paste into a file.
Or hit the "download code" link on perlmonks.
putter the phrase "barrier to entry" comes to mind.
sproingie hm. or could do something like perl does if you dont pass it any flags. just reads from stdin 20:54
pugs --batch?
putter looks forward to html and emacs with nice colorization and metainfo.
Juerd autrijus: pugs: cannot cast from VStr "|" to Pugs.AST.Internals.VCode 20:55
autrijus: When doing gather { ... }.join('|')
autrijus: Is my syntax incorrect, needing parens, perhaps, or is this a Pugs bug that needs a test? 20:56
autrijus Juerd: prec
Juerd I guessed that much :)
autrijus pugs> gather({ take 3 }).join('|') 20:57
'3'
or even
pugs> { take 3 }.gather.join('|')
'3'
nice eh?
Juerd Yes, but it's not really an answer to my question :)
I'm aware of the workarounds
But I thought this was valid syntax...
putter sproingie: maybe... python has one built in. ruby has a separate program irb.
Juerd (And would dwimeant)
autrijus Juerd: I thought gather is a simple sub.
putter multi-line repl I mean. 20:58
autrijus a simple sub without parens always yield the argument to resolve first.
that's what you taught me anyway :)
Juerd You're right
Blurry mind moment
sproingie python's interactive mode is a stunning example of how not to make an interpreter behave
in fact most copy and paste examples fail to work in interactive 20:59
Juerd Just its interactive mode, you sure?
sproingie perl actually has an interactive mode with the debugger
Juerd: no, just one of many
Juerd Which has almost nothing to do with Perl and just evals expressions :) 21:00
putter yes. its a pain. I'm dredging my mind trying to come up with an example of one done wizzily...
Juerd Interactive interpreters should IMO be avoided at all cost.
For simple tries, you have -e, and for everything else, the interpreter should just work with normal streams, and not special case terminals. 21:01
Aankhen`` G'night.
Juerd occasionally dislikes pugs because of this, and then uses cat|pugs
putter Juerd: nice repls have a history of making it easy for n00bs to learn... and now the entire p5 community is newbies.
Juerd And cat|anything should imo never be necessary.
sproingie considering pugs is named after another interactive interpreter, it might be good to enhance those abilities :) 21:02
putter 'night
Juerd putter: -e makes it just as easy, for perl 5 newbies.
That is: Perl 6 newbies coming from Perl 5
They are already used to that method of trying syntax.
Or, should be.
stevan autrijus: I am seeing a very weird bug which I am having trouble reproducing in isolation 21:03
can you take a moment and see if you know what it is
putter Juerd: err, just so no. ;) at least for me. 21:04
Juerd No comment.
autrijus stevan: sure 21:05
Juerd: you have pugs -
"pugs -" that is
stevan autrijus: ok I am commiting the code now, it's in Perl::MetaModel 21:06
try this: pugs -I ext/Perl-MetaModel/lib/ ext/Perl-MetaModel/t/00*.t 21:07
that should work
oh wait
darn wrong file commited,.. one second
:P
putter the lisp folks love repls, the smalltalk folks browsers, the scripting folks files. the smalltalk folks hate files, the lisp folks...
autrijus heh
putter sigh. 21:08
autrijus the lisp folks hate browsers, and scripting folk hates repls.
kelan autrijus: is darcs read-only for pugs development?
autrijus kelan: darcs is broken-onl
only
kelan heh
stevan autrijus: ok, r3610, try this pugs -I ext/Perl-MetaModel/lib/ ext/Perl-MetaModel/t/00*.t
and it should break
autrijus the machine went down... if someone can do a svn->darcs replay mirror I'd be grateful 21:09
kelan but even then, darcs would be read-only? 21:10
svnbot6 r3609, Stevan++ | Perl::MetaModel - refactoring the model;
r3610, Stevan++ | Perl::MetaModel - refactoring the model;
autrijus kelan: there can conceivably be a way to do rw
kelan like send the patches to you!
:)
autrijus kelan: heh, sure, "darc send" targets p6c
in the old darcs mirror 21:11
kelan maybe i should just learn svn
autrijus well, in svk I borrowed lots of darcs UI too :)
theorbtwo SVN is easy.
autrijus like "svk push", "svk pull", "svk patch".
eric256 svn is realy easy 21:12
autrijus and "svk cp svn.openfoundry.org/pugs" is like "darcs get".
kelan svk get?
autrijus but svn is a bit easier :)
kelan ah
stevan autrijus: as best I can tell, the error happens with nested "use"-ing of classes is more than one level deep, because it does not seem to happen at one level
autrijus "svk cp" creates local workspace
where commits are local and has to be pushed back
"svk co" will create a workspace where you commit straight back.
kelan is svk decent? not too unstable? 21:13
integral it's 1.000 :-)
autrijus kelan: it's 1.0 :)
kelan oh, woo
clkao *yawn*
autrijus so both "decent" and "not too unstable"
kelan heh
autrijus and we have the author here ;)
kelan guess thats a bonus
clkao see the major advantage of svk: 21:14
eric256 does anyone else see value in editing Test.pm to allow us to run *ONLY* todo tests? i mean all tests would obviously be run, but report on the status pass/fail of todo tests. would make it easier to see if bugs etc had been fixed. thoughts?
clkao brautaset.org/
stevan eric256: thats a job for Test::Harness
and it already (sort of) does it
autrijus eric256: I'd rather to make the matrix consume the extra todo info
to display it in diff shades of dark green 21:15
I really want that :)
(or dark $other_number)
eric256 i have no knowledge of matrix or Test::Harness but i will go look and see what i can learn ;) 21:16
autrijus clkao: lol, cow orker conversion?
clkao ya
stevan eric256: our local Test::Harness (inc/) alredy does this
kelan hah, i like the last point in favor of svk on that page
autrijus but HTMLMatrix doesn't yet consume it 21:17
stevan ask nothingmuch about the HTMLMatrix
kelan clkao: but is it true??
;{
er ;)
stevan eric256: all it is if the TODO reason, which should be readily accessible
autrijus or better, send patch to nothingmuch :)
clkao kelan: mind that he is comparing me with tomlord. so i can shamelessly say yes, i'm quite sure.
kelan heh 21:18
autrijus clkao: he is also on the uppercase camp!
clkao bwahaha
autrijus rallies for the uppercase camp
clkao autrijus: what's new and exicting today?
kelan are (m)any others using svk for pugs development?
autrijus kelan: svk.elixus.org/?ProjectsUsingSVK
probably similar in size vs darcs, to the zeroth approximation 21:19
clkao $ ab -clkao- [~] svk pg svk:merge work/pugs/|wc
18 18 933
stevan autrijus: any thoughts on that error?
clkao and some (like me) will do direct commit with svk rather than local branch for now
autrijus stevan: yes, the "is ::" syn is not yet parsed.
stevan: will fix it now
clkao i might implement Benchmark(::Accurate) tomorrow 21:20
autrijus clkao: actually me too
the ci -P feature is too good
kelan clkao: any advantage to either method?
autrijus so I no longer need local branch
clkao why odyou need to ci -P ?
stevan autrijus: odd, because it works in P::MM::Class::Behavior the first time
autrijus clkao: because my co is mirror
clkao: and I don't bother to local branch.
clkao oh. not for pugs
autrijus (and I sometimes have no net)
indeed for pugs.
stevan but then fails in P::M::MetaClass (2 levels deep)
clkao oh ok. but then you have to svk aptch --apply.. sometimes more annoying han svk push 21:21
autrijus clkao: actually... I just use patch < ;)
(and only fallback to svk patch --apply when there's conflict, which is not much)
clkao func (arg, ..) is quite annoying with can't find the form &fun
can the error tbe more verbose for bastards like me who used to have space there? 21:22
ie, "do you have an extra space?"
autrijus maybe you really meant that :)
clkao i mean when it fails.
autrijus oh.
clkao i spend some time doing vdiff for my test.pl and something in t/ 21:23
can't figure out what's happening until i remember the hate of meaningful whitespace
autrijus ok ok fixing
clkao autrijus++
autrijus do you need it for 21:24
$obj.method (1,2)
too?
clkao i guess so.
autrijus oh wait, that's a synerror
you get what you deserve :)
so just normal form then
clkao giggles
autrijus done 21:27
testing
so it only warns when it would actually have matched something :) 21:28
clever, eh?
clkao ya :p 21:30
autrijus $ ./pugs -e 'say index(123, 1)' 21:31
0
$ ./pugs -e 'say index(123, 1, 5, 6)'
*** Error: No compatible subroutine found: "&index" at -e line 1, column 5-24
$ ./pugs -e 'say index (123, 1, 5, 6)'
*** Error: No compatible subroutine found: "&index" at -e line 1, column 5-25
$ ./pugs -e 'say index (123, 1)'
*** Error: 05:21 < clkao> ie, "do you have an extra space?": "&index" at -e line 1, column 5-19
clkao "mind the gap"
autrijus happy?
kelan hah
clkao damnit i'm so british
autrijus thinks clkao missed the joke. oh well :) 21:33
clkao i didn't :p but i think mind the gap is funnier 21:34
autrijus r3611. now returning to stevan's bug..
q[acme] ;-) 21:35
clkao hmm acme is not out partying today
autrijus thinks having column numbers in error messages is an improvement
may be of use for a certain Perl 6 ebugger in the future 21:36
clkao orz
autrijus clkao: so I'll submit 5 talks to euro oscon... are you submitting any and/or coming to euroscon? 21:38
svnbot6 r3611, autrijus++ | * gap-minding for failed function lookup due to trailing space, suggested by clkao.
r3611, autrijus++ | $ ./pugs -e 'say index (123, 1)'
r3611, autrijus++ | *** Error: Extra space found after &index (...) -- did you mean &index(...) instead? at -e line 1, column 5-19
clkao autrijus: i guess i will. why the hell do you have 5 talks to submit
some overlapped talk/tutorial ?
when is the submission closing?
autrijus tomorrow
clkao ARSE!
autrijus two tutorials:
- Perl and Internationalisation
- Perl 6 in the Real World
three talks:
- Learning Haskell
- Introduction to Pugs
- Web Continuations: Now and the Future
not much overlapping really. 21:39
clkao cool.
droppying by london afterwads?
autrijus or before. both are possible 21:40
theorbtwo I'd be pretty impressed if you were giving two talks at the same time, autrijus.
clkao cool.
coro autrijus { }
autrijus theorbtwo: actually ingy tried that last year
not very succeddful
clkao: no, that needs to be async{}
theorbtwo I should think not.
Corion I assume one would need two mouths to give two talks ... 21:41
autrijus Corion: nono... just need one cospeaker at each.
that's the trick
Corion autrijus: Yeah - meta-mouth
autrijus it's not meta, it's merely delegation to proxy
iblech has $.cospeaker handles <say_something> :) 21:44
autrijus right :)
yay, yet another refactoring done in parsec 21:45
clkao oh you haven't implemented the overload in class method
autrijus stevan: your bug eas caused by class{} and class; parsed differently
clkao: because it turns out that our treatment of invocants is all wrong. 21:46
clkao: there can be multi level of such invocants
and still nobody answered my "foo(1: 2: 3: 4:) ?" thread.
clkao argh.
autrijus and there's zero sentence of spec about this.
so I'm not terribly happy :)
stevan autrijus: so is it fixable?
autrijus stevan: sure, committing 21:47
stevan :)
theorbtwo wonders why we don't have any smiley-face operators yet. 21:48
:( if $foo->no_good;
OK, I do know why -- they all conflict with something else. 21:49
autrijus ā˜ŗ if ā˜» ;
stevan: I fixed the parsing 21:53
svnbot6 r3612, autrijus++ | * unify parsing for `class Foo {}` and `class Foo;` -- the latter
r3612, autrijus++ | form was without `is Bar` handling.
stevan autrijus++ thank you thank you :) 21:54
autrijus but somehow it still fails for me... I'm recompiling again, but it'd be nice if you can reduce it a bit
stevan autrijus: I will try
autrijus you thank me too soon :)
stevan autrijus: I am just not sure where the issue is coming from 21:57
I suspect it might have something to do with the nested use
I will do some basic tests and see what happens 21:58
autrijus I think it's nested use. 21:59
autrijus finds pugs becoming faster to compile recently 22:00
must be all the refactoring into small modules :) refactoring++
oh wait, I compiled again
and reinstalled things
all works now
stevan autrijus++ # see I always have faith in you
autrijus :D
stevan I will finish my test case none the less :) 22:01
autrijus sure :)
I wonder if, instead of creating a new package data type, I should reuse the hash 22:02
and maybe put second-level namespace like Foo::Bar:: as part of the Foo:: hash 22:03
then I realised that is exactly what perl 5 does ;)
I'm evidently brainwashed.
Corion r3611 - datenzoo.de/pugs/win2k.html 22:04
stevan autrijus: it is the nested use, I managed to isolate it
autrijus cook
cool
stevan will commit the test soon
autrijus Corion: "Kopie von system"?
was ist das? :) 22:05
Corion autrijus: Ooops :) My local tests that I'm working on :)
"Copy of system"
autrijus sure, I can read that :)
only 85 failures!
actually more like 70 22:06
and only 40 or so are regressions
not bad at all.
it's nice how the tests forces the internal into constructive refactoring 22:07
in order to stay sane and not regress
I guess that is the whole point... but it's the first time I'm seeing it in real action :)
theorbtwo Well, p5 uses a hash of globs. p6 should use a hash of refs to items, with the keys including sigils. (And twigils for the things with twigils that are in a package...) 22:09
autrijus yup.
eric256 for sub paramterers we have as rw .... will we eventualy get things like as copy and as ref? or does rw modify the actualy value passed?
autrijus that's the idea
eric256: we have is copy 22:10
sproingie twigils?
eric256 never mind then. lol
theorbtwo The = in $=POD.
autrijus I don't know how exactly "is ref" and "is rw" differ... oh, ref doesn't vivify. strange
eric256 i saw code do sub name ($x) { my $copy = $x; }
autrijus I'd consider doing it when there's 1)demand 2)test
eric256: chances are it's written before `is copy`
eric256 cool. thanks 22:11
autrijus sproingie: twigil = "secondary sigil"
ingy: pugs.kwiki.org still broken
theorbtwo wonders how secondary sigil got shortened to twigil.
autrijus pugscode.org <Overview Journal Logs | pugs.kwiki.org down
er.
pugscode.org <Overview Journal Logs | pugs.kwiki.org down 22:11
theorbtwo Oh. t comes after s. 22:11
pugscode.org <Overview Journal Logs> | pugs.kwiki.org down 22:12
autrijus theorbtwo: no. "sigil" is like "singular sigil" 22:12
"sigil" "twigil" "thrigil" "quarigil"
theorbtwo Ah. 22:13
knewt yaaay. got my haskell code all working. probably horrifically bad haskell, but it works :)
autrijus or "quagil"
knewt: nice! what does it do?
theorbtwo That's really sick, but it works.
sproingie trigil
autrijus trigil, yeah.
sproingie pengil? 22:14
autrijus so sigil-less dialects have "nugil"
knewt autrijus: some new bit of small functionality for darcs
autrijus knewt: cool!
nothingmuch evening
autrijus greetings nothingmuch-san
theorbtwo G'evening, Yuval.
nothingmuch salutations autrijus-san
sproingie i need to relearn haskell. i need something to do in haskell
nothingmuch hello James.
sproingie i suppose pugs would be a good project. little brain-bending i suppose 22:15
nothingmuch sproingie: whatever you're going to do next in language X that isn't time critical
stevan read theorbtwo's greeting as "G'evening Ya'all"
autrijus actually I'd argue that if it's time critical, you may learn better
<- learned haskell that way
nothingmuch hah
sproingie its just all those damn monads. i get the idea of them, then someone goes and does something with 'em that makes me think i didn't know anything after all 22:16
knewt autrijus: let's you continue a darcs get. eg, if a previous one died part-way through, or you want to get the latest repo using get rather than pull, but you don't want to bother downloading patches you already have
theorbtwo Telling paying clients you can do something tends to provide a reason to get it done, yes.
autrijus knewt: oh wow nice!
sproingie point-free programming lets you do some serious FP golf 22:17
autrijus sproingie: well, containerish monads and actionish monads are indeed very different.
knewt autrijus: i only looked at haskell for the first time last night
nothingmuch knewt: what's the different between that and pull -a? the way patches are merged?
autrijus knewt: !
nothingmuch knewt++ # fast learner
autrijus sproingie: right. ]`(($:@:((}.<:{.)#}.)),{.,($:@:((}.>{.)#}.)))@.(*@#) is a golfer's dream
knewt (this channel)++ # helping me out where i did get stuck at one point
autrijus ( quicksort from en.wikipedia.org/wiki/J_programming_language )
sproingie it's just every time i start thinking about haskell ... well, all my apps have lots of state 22:18
theorbtwo
.oO(And people say perl is write-only!)
autrijus if some people think perl is line noise, just point them to J
nothingmuch oh my
sproingie now keeping one piece of state in a state monad is no problem. but let's say one was coding a mud
autrijus sproingie: my fav monad is ReaderT IO :) 22:19
sproingie lots of state all over. i can't figure out how to juggle it all in haskell
autrijus sproingie: that lets you program in a pseudo-imperative mannter.
sproingie: see my entry on haskell wiki about that
sproingie autrijus: what's the url for the haskell wiki?
autrijus # haskell.org/hawiki/StateMonad
under "Using ReaderT in place of StateT IO" 22:20
I learned all my haskell on the wiki (and a bit from #haskell)
sproingie huh. wow, that is rather imperative
knewt i've been heavily using the haskell tutorial, "A Gentle Introduction to Haskell" 22:21
sproingie knewt: i never found that tutorial particularly gentle
autrijus sproingie: and in my newbiehood, I went ahead and defined all sort of imperative constructs
knewt sproingie: i may not have done any haskell before, but i /have/ used functional languages in the past
autrijus infixl 5 $$ $= += %? %: @= %= %%= 22:22
that does array, hash, etc manipulation like I used to
sproingie i guess were i to do something as stateful as a mud, i'd just have a bunch of maps in that Vars section?
autrijus sproingie: each entry in Vars is a "lexical variable"
sproingie: so you can have some Map that represents hash 22:23
(Map String String) is a good start
and some arrays [String]
and some simple vars
you can always read and write to them, and even enter a new lexical scope with "local".
the only thing you can't do is a "return()" to end prematurely from a block.
sproingie ahh i see the difference ... modifyIORef is the stateful magic, eh? 22:24
autrijus yes
if you want that, you want to layer on ContT as well. then you have the Pugs's Eval monad. presto :)
sproingie ponders, a haskell mud
autrijus so the main code in Eval, Prim and Types are all in Eval monad 22:25
sproingie bottom hits! bottom hits! bottom hits! bottom hits! bottom hits! .........
and an infinite number of hits later, you die...
autrijus so you can say pugs internals have this "imperative flavour"
(which is quite unlike how "normal" interpreters are done in haskell"
theorbtwo (multipragatisim)++ 22:26
sproingie i wonder how hugs and ghci do it
autrijus sproingie: ghci compiles the code to .o, load it, run it.
but it still "interprets" the bytecode object file
sproingie ah 22:27
autrijus I don't know how it does that though. probably by calling into the RTS in C
sproingie hugs i guess does something similar?
autrijus hugs is all implemented in C
:)
sproingie ah
dvtoo autrijus: I think you have to have native code generation support for ghci 22:28
sproingie >>> ... Autrijus gets commit priveledges for Parrot. The general consensus was that he was too productive in Haskell and we needed to hobble him with a real mans language like C.
autrijus sproingie: where "general consensus" represents strictly the summariser's alone 22:29
dvtoo shelling out to gcc would be kind of slow
autrijus dvtoo: right, so it does it in bytecode
dvtoo: but it is still compiled
it's just the emitter doesn't really shell out to gcc
dvtoo nod
autrijus ghc can emit bytecode, assembly, or C--
only the latter is passed to gcc
theorbtwo gcc does C--? 22:30
autrijus theorbtwo: yeah, since 6.4
sproingie ghc that is
autrijus that was one of the highlights of 6.4
GCC doesn't
C-- can be trivially turned to C.
sproingie when are they gonna have it emit llvm?
autrijus sproingie: I thought GHC emits SSA now?
so you can feed the SSA to LLVM
what is the point though :)
sproingie didn't know that
autrijus er, I mean, GCC emits SSA now. 22:31
as of GCC4
sproingie yes but it can only be processed by gcc
autrijus ahh.
sproingie RMS deliberately keeps gcc from being modular
autrijus so that's why llvm can pass to gcc but not vice versa
really. tell me more! url? links? interviews?
sproingie he doesn't want proprietary compilers able to use any part of it
autrijus <- going to interview RMS next week
sproingie ask gcc developers
they're pissed off at him 22:32
autrijus but but it's already GPL
isn't GPL enough?
sproingie apparently not for RMS
autrijus that's wacko. got any url or googlable words?
sproingie well the SSA stuff i don't know what his politics are. commonly held that he held back documentation of RTL for similar reasons tho 22:34
lemme see what there is on that
autrijus held back documentation is even more wacko. 22:35
sproingie gcc.gnu.org/ml/gcc/2000-01/msg00572.html 22:36
autrijus hm, 5 years ago?
sproingie he hasnt changed
this is RMS we're talking about
autrijus ah. looks actually kind of reasonable 22:37
he's not prohibiting things, just asking people to weight the benefits
putter odd question: I would like to quote chuncks of text (source code). one would normally use a heredoc. what is the most... heredoc-like... quoting construct which currently works. level 0 or 1 (non-interpolating). Thanks!
iblech YAY! I think I've implemented FIRST {...} :)) 22:38
putter: say "abc
def
ghi"
putter :)
autrijus iblech: wow. color me impressed
sproingie no, he's vetoing it. "Because of this, the GNU Project will in all probability not install such changes, should they be available. This statement reflects a firm conclusion based on a decade of thought."
iblech :) 22:39
autrijus sproingie: but gcc3 iirc was born because people forked and ignored him :)
sproingie the SSA thing could take it out of his hands tho
autrijus (and was only later renamed to gcc3)
dvtoo and I thought RMS had a lot less to do with it now because of that?
sproingie RTL was the weapon before -- hardly anyone understood it, and it was the glue between gcc's front and backends
autrijus well, software wants to be free, is all I can say :) 22:40
(i.e. free from control, too)
sproingie i dunno, still might use RTL tho
putter any thoughts at all? else it's groveling over the smoke for quoting.t for me... 22:42
sproingie i kind of like using tcc. i sometimes write scripts in C using #!/usr/local/bin/tcc at the tip
top
putter libtcc++
sproingie i just wish there was a tcc for windows. there was a project to port it, but it kind of fizzled out 22:43
autrijus putter: I think implementing heredoc is the best bet. 22:44
putter yeah. that's why I have an unfinished Inline::C::libtcc ;)
sproingie apparently it goes source -> GENERIC -> SSA -> RTL -> machine
autrijus I was looking at SSA<->ANF yesterday. ANF looks far more elegant than SSA 22:46
putter autrijus: eeep. rule bootstrap first, *then* heredoc...
sproingie what's ANF?
autrijus putter: why? what does rules have to do with heredoc
sproingie BTW, anyone have any recommendations for introduction to compiler design?
knewt ok, sent my couple of patches off to darcs-devel :)
autrijus sproingie: www.jantar.org/papers/ssa-lambda/
sproingie i tried the dragon book, but found it practically unreadable. seriously the typeface alone gives me headaches 22:47
autrijus sproingie: TaPL and ATTaPL
sproingie autrijus: expansion of these acronyms?
autrijus knewt++ # I'm looking forward to your Pugs/src/ patches
Types and Programming Languages - Benjamin C. Pierce 22:48
Advanced Topics in Types and Programming Languages - Benjamin C. Pierce
cognominal sproingie: it takes time to make headwy in all this functional/type stuff 22:49
putter I'm working on rules now. Heredoc or some nice quote op would only simplify some metaprogramming. But I can live with ' '. So heredoc later, no?
cognominal I know that I have some progress because some stuff that was indicepherable to me is become readable
I have a long way to go though 22:50
sproingie cognominal: most texts on types assume i have graduate level education in category theory
knewt autrijus: heh. i knew i should have stayed away from haskell. yet another language to get stuck in my brain now. but the continue feature will be very useful for my darcs->svk mirror code *g* 22:51
autrijus ooooh!
knewt++
cognominal in the jungle of papers, I have found authors I can read: Simon Peyton Jones, Wadler...
autrijus I want that code :D
clkao i thought you can use tailor alrady
autrijus cognominal: I think SPJ can write/co-author papers faster than I can read them 22:52
he is truly a machine.
cognominal Also, I like "Qualified type" from Mark P. Jones available as a book.
I have a long way to go. 22:53
knewt doesn't do what i want unfortunately. so i'm still going to work on my mirror code. got a couple of new ideas on how i'm going to do the processing after playing with darcs a bit more
autrijus clkao: so, svk support for tailor?
cognominal Initially I had a lot of trouble with the functional vocabulary, than even parsing their rules
sproingie wadler is pretty readable, yah 22:54
xerox #haskell people is dead, I'll ask here, it's not completely OT, I think. Why if I do "type Id a = a; data IntM m = IntM (m Int)", then :type 2 :: IntM Id does give this error: "Type synonym `Id' should have 1 argument, but has been given 0" ?
clkao autrijus: no.
cognominal Didier Remy is good too like the other ocaml folks 22:55
nothingmuch does ingy know that pugs.kwiki.org is kaput? 22:56
autrijus xerox: synonym can't be used in head form. 22:58
xerox: its args needs to be fully specified.
think of it like C macros. 22:59
xerox autrijus, why?
autrijus why? because the spec says so :)
I wasn't around, I don't know why it's specced like this
you can usually use a newtype.
newtype Id a = MkId a
or something like that.
xerox I'd like to do it as (->) with Arrow 23:02
I mean, you can do "arr (+2) $ 2" ==> 4
autrijus I'm completely clueless on Arrows
:)
xerox It transparently works
sproingie what the heck is an arrow anyway? 23:03
xerox hmpf..
autrijus I mean, I know what an arrow is and how it relates to category theory
but I had not used it in real life
sproingie: haskell.org/arrows/
sproingie autrijus: yah i've read that. i'm just as mystified now
svnbot6 r3613, iblech++ | Added type signatures to the compile_test()s of config_h.pl. 23:04
r3614, iblech++ | EOLs at EOFs and usual svn properties.
r3615, iblech++ | * FIRST {...} and my $x = FIRST {...} support. :)
r3615, iblech++ | * And a test for it (t/statements/first.t).
autrijus eagerly looks at iblech's implementation
sproingie taking inputs of one type and producing outputs of another type sounds a lot like a plain ol function, except that the type changes 23:05
autrijus iblech: neat! very neat!
sproingie or if it's actually mapping types, then a functor
autrijus iblech: only drawback is that it will run twice if the first run yields undef.
xerox Anyway, thanks for the answers.
iblech :)
autrijus: Yeah, I'll propably add a second state var to it tomorrow or so
autrijus iblech: but you++ 23:06
sproingie partly due to ambiguous language. "input of one type". is that an input that has that type or is that input a type?
autrijus this is wonderful
sproingie i love the language like "(specifically: a weakly symmetric lax monoidal functor)" 23:07
that sounds like a chronic condition my doctor would tell me i have
iblech :D 23:08
cognominal prognosis => bad
autrijus sproingie: nah, it's only pre-monoidal structure
sproingie oh so i can get it removed 23:09
autrijus you can still lift it out of its natural transformation, using Kleisli operations
yeah
sproingie "you have a weakly symmetric lax monoidol functor. but don't worry, we can lift it out with a Kleisli operation" 23:10
i wish they accompanied the arrows page with real-world uses
autrijus isn't "generalized abstract nonsense" fun? 23:11
sproingie: arrows are used in FRP 23:12
nothingmuch autrijus: want to correct initial acrosyphilis 02?
autrijus in particular yampa.
haskell.org/yampa/
nothingmuch: sure!
pasteling "nothingmuch" at 212.143.91.217 pasted "Pugs Apocryphon 2 - Overview of Pugs Internals" (194 lines, 7K) at sial.org/pbot/10311
autrijus 194 lines! 23:13
please check it in. please :)
docs/02Internals or something
nothingmuch going to sleep in 5 mins anyway
yep
i'll just run aspell
sproingie ooh FRP. i remember frantk 23:15
cognominal nothingmuch, thx you. I really need the A2 to grok pugs
nothingmuch:++
sproingie i always thought frantk was the best gui design
nothingmuch yuck! cockroach! 23:17
eek! it got into my bag! 23:18
eric256 can anyone think of a good infix operator to signify a random range....i thought of between, and in, but those dont work infix. 23:20
say 1 to 5;
nothingmuch changed it's state of matter
autrijus .?.
say 1.?.5
eric256 hmmm not bad. i like that.
nothingmuch should be trivial too
eric256 done. cool 23:21
nothingmuch sub &infix:<.?.> ($to, $from){ any($from .. $to).pick };
eric256 i'm gonna end up with my own library of these things. ;)
autrijus say 1 ā‡ 5;
eric256 multi sub infix:<<.?.>> ($low,$high) {int ( rand ($high - $low) + $low ) + 1; }; 23:22
that way there is no memory issue with 1 .?. 10000
nothingmuch blah blah blah 23:23
FP heads don't concern themselves with memory
;-)
eric256 lol ;) autrijus what forieng language is that and how do i convice trillian to show those correctly?
sproingie FP folks know there's no such thing as a list, just the elements out of the list you need right now 23:24
autrijus eric256: I don't know, it's utf8
FP folks know the value of everything and the cost of nothing
nothingmuch sub &infix:<+> ($n, 0) { $n }; sub &infix:<+> ($n, $m) { inc($n) + dec($m) };
sproingie hasnt found a windows irc client yet that doesnt suck
autrijus the cost of Nothing is, of course, the cost of Maybe.
irssi doesn't suck!
esp. when running on xorg on cygwin32 23:25
eric256 how do you type those things on a keyboard anyway? or do you have second keyboard with those symbols on them. lol. /me pictures a computer setup with like 6 keyboards ;) 23:26
autrijus eric256: no, I just look them up from Unicodedata.txt 23:27
UnicodeData.txt, rather
sproingie i want something where i can hit a key, start typing the description of the character, and have that narrow down a list of the characters
hm. i could probably write such a beast come to think of it 23:28
theorbtwo www-950.ibm.com/software/globalizat...mo/unicode is quite useful, though the UI sucks.
Later!
autrijus nothingmuch: how's aspell? 23:29
how's aspell going, that is
nothingmuch soon... i'm annotating the reduction of C<for>
actually screw aspell, it's not installed 23:30
knewt ah, ā‡ == U+2047
iblech turns into aspell and says to nothingmuch: At the top somewhere you wrote "perl 6" in lowercase and the filenames were not F<..>'ed 23:33
svnbot6 r3616, eric256++ | Added random element in range overload as .?. 23:34
eric256 what do stars in the paramter list mean?
nothingmuch iblech: should F<> be in a heading?
iblech nothingmuch: IIRC F<> should be everywhere where there's a filename, no matter if it's in the heading or not
autrijus eric256: it means they are slurpy -- i.e. it will consume multiple arguments, or part of an argument array
eric256: sub foo (*@_) { say @_[0] }; foo(1,2,3); # 1 23:35
sub foo (@_) { say @_[0] }; foo(1,2,3); # error - 1 is not arra
array
eric256: the * denotes a perl5ish behaviour.
where all arguments are slurped together
eric256 cool 23:36
so quicksort ( *$x, *@xs ) { means $x is the head, and anything else goes in @xs....any reason $x is slurpy there?
autrijus because if it is not, then you can't say
quicksort(@a)
because $x will bind to @a
*$x means it binds to @a[0]
eric256 ahhh. cool 23:37
\ 23:42
opps. lol. sub test (@a) {@a.say}; (1..6).test; works. is that expected or a bug? i thought i would have to extend the Array class or something 23:43
autrijus that is not a bug :)
AtnNn isnt [|](1,2) supposed to be (1|2)? 23:44
clkao pugs -Cparrot doesn't seem to work?
autrijus you will discover that perl 6's object invocation is even more magical than perl 5's
clkao: capitalisation
clkao: fix for that welcome
look at Main.hs or Run.hs and allow the lowercase form 23:45
AtnNn: yes. bug. test please
clkao but lots of builtins aren't translated?
autrijus clkao: yes, that's what I'm going to Leo's place for.
to unify the interpreter core with compiler core 23:46
so all interpreted contructs are compilable
clkao *nod*
and that's happening in 2 weeks?
autrijus needs heavy help from the parrot side.
something like that, yes.
knewt ah, i need to get round to booking the flight to vienna. and posting to the apw list and begging for crash space
autrijus and I need to apply for visa ;) 23:47
clkao eval_parrot works?
visa--
autrijus clkao: sure does
eric256 why would you ever *want* [|](1..5) when you could do any(1..5) or (1..5).any .... realy i am curious. is there some other reason than it aught to work (which it should)
AtnNn to play golf?
clkao i am pondering about a module to produce parrot nci registration
svnbot6 r3617, nothingmuch++ | Initial version of the Pugs Apocryphon 02 - internals. 23:48
r3617, nothingmuch++ | Covers simple parse/eval workflow, and starts the details of Exp reduction.
nothingmuch okay, comitted
autrijus any is 3char, [|] also 3
clkao: that'd be cool. seen chromatic's p5nci?
clkao ya
autrijus nothingmuch++
clkao but i'm not completely sure how things in parrot gets natively used in pugs yet
nothingmuch i hope this doesn't sound very assholy, but I'd appreciate it if no major changes are made till I'm done with a first draft, I have a pretty clear idea of how I want this. Corrections and small additions welcome, ofcourse. 23:49
autrijus clkao: the short answer is it doesnt.
yet.
clkao crap
autrijus clkao: it will, however, in 2 week's time.
so please be patient and watch the blinkenlights.
nothingmuch anybody got any initial comments?
clkao we need to do that with the meta class and meta subroutine ?
autrijus that what eh? 23:50
nothingmuch: I prefer
Pugs's
to
Pugs'
clkao tying alien (or native) functions
eric256 comments on what nothingmuch?
autrijus otherwise I read "Pugs prime"
eric256: docs/02Internals.pod
nothingmuch heh
autrijus clkao: oh. no. in -CParrot mode they are just prims.
nothingmuch there, more karma for me =) 23:51
autrijus clkao: in haskell space it may also be just AUTOMETH or friends.
clkao how do you define/override subroutine/method in runtime in perl6?
autrijus clkao: you use the store_global opcode.
clkao i guess no more crack like *foo::bar = sub { }
autrijus Globs Are Dead.
clkao s/guess/am glad/ 23:52
autrijus then it's at least grateful dead
svnbot6 r3618, nothingmuch++ | Pugs' -> Pugs's 23:53
r3619, iblech++ | Usual svn properties and very minor PODification (.../ ->
r3619, iblech++ | L<.../>) done to nothingmuch++'s 02Internals.pod.
r3620, iblech++ | * state $x = 42 works! :)
r3620, iblech++ | * Fixed t/var/state.t ([1,2,3] -> ((1,2,3)).
putter good night folks. 23:54
theorbtwo is back. 23:55
autrijus iblech: amazing
iblech That one was easy, now that there's FIRST :)
autrijus and you said it was easy :)
I finally know the feeling of how other people perceive my internals work :)
iblech :)
autrijus looks correct. 23:56
iblech++
iblech ok, gonna sleep & 23:57
(this day)++
knewt oh hell. i haven't mirrored for a while it seems. back on r3231 23:58