geoffb's column: www.oreillynet.com/pub/au/2333 | Pugs 6.2.10 coming soon | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | www.geeksunite.net
Set by autrijus on 5 October 2005.
nothingmuch good night, #perl6 00:03
meppl good night nothingmuch 00:11
eric256 attempts to compile on windows and crosses his fingers 02:25
svnbot6 r7332 | stevan++ | Perl6::MetaModel 2.0 - 02:30
r7332 | stevan++ | * added ::EigenClass to the metamodel, it is mostly a place holder for now
r7332 | stevan++ | but soon I will remove all the %:class_methods junk :)
eric256 well at least it gives a nice heap exhausted error 02:33
ghc_heap_size++ until $pugs->build; 02:36
svnbot6 r7333 | stevan++ | Perl6::MetaModel 2.0 -
r7333 | stevan++ | * cleaned up some stuff on the ::EigenClass
eric256 curses windows agian 02:47
lol
tewk So does the PIR target support leo's latest merge or is that a TODO? 04:13
geoffb tewk, last I heard aut* had it compiling against 0.3.0 (AKA post-leo-merge) 04:43
gaal morning! 05:08
dduncan morning! 05:09
nothingmuch is having trouble waking up 05:23
brain not turning on =)
gaal fix available in the form of finely ground roasted beans of coffee with steam forced through them at well-controlled temperature and pressure. 05:27
nothingmuch hmm 05:30
how about 1 heaped spoon of cheap dirty coffee, and boiling water on that
much simpler 05:31
gaal works too, and helped by cardamom
nothingmuch hmmm... /me feels plain today 05:32
but i have to pack.
ciao!
dduncan hello hello 05:33
torii torii 05:34
gaal bye (going somewhere?) 05:35
bi dduncan
s/b/h/ 05:36
dduncan I'm still here
for 1-2 hours at least
all I said before was hello, in 2 different ways 05:37
gaal ah but yuval was leaving 05:38
dduncan oh well
hello to tomorrow, then
nothingmuch morning 06:11
dduncan hello again 06:14
nothingmuch hi ho
PBP is evil: perlmonks.org/?node_id=497683 06:20
which is a shame, because i don't think it really meant to be evil, despite all the hoo-hah Damian made regarding his 1 million dollars & 12 modules 06:21
dduncan funny re that PBP example ... 06:26
I never got to that part of the book, but ...
I ended up using that exact style in my reborn Rosetta modules, because it was visually most like the Perl 6 equivalent
I'll give you the url in a moment so you can see ... 06:27
nothingmuch always uses { package foo; ... } when defining subpackages to in the file or a bigger module
and bare package foo; for files
dduncan I know full well that having the package declaration outside the block means its scope isn't limited, but I never have non-package subs in the same files as the packages, and I'm otherwise careful ... I'm doing it more for the look 06:28
that said, I am declaring the %foo_of etc hashes inside the block, where the 'has %foo' would be in the Perl 6 versions
everything indented the same too 06:29
nothingmuch moose moose 06:30
you can try Perl6::Classes
or if you don't want to go all that way, Perl6::Attributes does far less in terms of filtering, but is still useful 06:31
dduncan have a look here: svn.utsl.gen.nz/trunk/Rosetta-Incub...Rosetta.pm 06:33
that's the perl 5 version of what I'm about to checkin to Pugs under /modules
nothingmuch lots of ########### 06:34
dduncan those are visual dividers between sections of code
nothingmuch hypothetically ;-)
dduncan mainly, there is one between each sub/method or each group of sub/method
the double-lines mainly go between each package declaration if there are multiple packages in the file 06:35
nothingmuch never thought this much about style or that stuff
nothingmuch looks at a recent script to try and figure out how it's styled
dduncan I find it a lot easier to see where subs begin and end with those
nothingmuch uses incremental searches to find his subs 06:36
my style seems to be:
no horizontal indenting of assignment
one empty line between meaningful chunks of code
small methods that are very similar (e.g. accessors) are clumped together
pragmas and modules used in two separate blocks 06:37
dduncan yes, that's what I mean by 'sub group'
obra darren, are you trying to keep the line numbers the same between perl5 and perl6?
dduncan no
obra use 5.008001; use utf8; use strict; use warnings;
Why are you doing that that way?
nothingmuch svn.openfoundry.org/pugs/perl5/Blondie/milner.pl
obra and not one per line?
dduncan That is the only place I've been putting multiple statements on one line 06:38
obra This style isn't much like most perl I've seen
nothingmuch thinks his perl is mostly average in terms of style
obra It makes it a little hard for me to follow.
dduncan and I've done it because conceptually they are all one statement
I could put them on separate lines if several of you think it's better
nothingmuch most of the styling I do is in design, not text, for example using nice helper subs, or lots of closures, or crap like that 06:39
obra dduncan: have you picked up damian's Perl Best Practices?
dduncan yes
I'm adapting most of it too
obra I mostly like damian's perltidyrc
dduncan I've read half of the book already, and skimmed the rest, to read in detail soon
My use of 'version' and 'only', among other things, is inspired by that book 06:40
plus 3 part version nums
plus space indenting
naming foreach loops 'for' 06:41
many other things
excuse me a minute ...
nothingmuch you know, PBP is only subjective 06:43
it's not the how that matters
it's generally that you care enough for your code to be readable and maintainable (and frankly I don't think the Damian modules get much credit in that respect) and that you are not doing any major no-nos
obra I was mostly going for the perltidyrc pointer ;) 06:44
nothingmuch is afraid of perltidy
i used it once or twice 06:45
figured out it was too much effort to set it up the way I like it
obra I've never had it not dwim
nothingmuch and that normally my style is Good Enough
i think i disagreed with the default on a few minor points
obra fair enough
I'm the kind of guy who doesn't mess with his shell
I'd rather it style the code than I do
nothingmuch how do you fit it into the workflow? 06:46
nothingmuch tends to edit files and read them as he goes along
obra in vim, I hilight a sub then :!perltidy
nothingmuch this is because I don't implement things till I need them so I jump around a lot 06:47
that makes sense
... that way I don't see when I would intuitively make use of it
anywho, that really doesn't matter, as I've got work to do 06:48
dduncan okay, I split up the lines in the perl 5 version, and they are committed
obra sometimes I do whole files, but mostly, "if you've just refactored, it'll make the code pretty"
though often if you need it, it says the code wants to be refactored ;)
it's very useful that way!
dduncan fyi, I tried using perltidy but it changed a bunch of things I didn't like
and now that I've studied ideal styles, and am rewriting the code anyway, I'll just write it correctly the first time
nothingmuch how can style be ideal? 06:49
it's just style
dduncan in this case, 'ideal' meant better than I was doing it previously, and still self consistent 06:50
I evaluated the suggestions in PBP and decided to use most of the ones that I wasn't already using
style was just one aspect ... many other decisions were also affected 06:51
nothingmuch for example?
dduncan the fact that I use 'only' to better specify dependencies
nothingmuch 's #1 grudge with perl code on the CPAN is, for example, adamk's code, which returns array refs appearantly for "speed" instead of for a mutable interface 06:52
dduncan the fact that I'm going to go inside-out on the p5 side for better security
nothingmuch if people would stop returning array refs needlessly i would be a very happy person
security?
dduncan so people can't mess with my attributes
obra protecting developers using your code from themselves?
nothingmuch that doesn't make sense
dduncan its protecting them from using it incorrectly
nothingmuch part of why the cpan is so reusable is that people can break these rules
if someone went through the trouble of figuring out what the private attrs are, it's their responsibility whether it's correct or not 06:53
we are not 3 year old java heads, after all =)
this can help in the context of a big shop
with lots of junior programmers
but if you're going to be releasing a CPAN module, there is really no need
dduncan so do you think that all classes' attributes should be public then? 06:54
nothingmuch except that it makes overriding the destructors harder
yes... with naming convention implying privacy where necessary
err, not necessary. fitting.
since we don't have a notion of private/public/inherited fields 06:55
or uninherited methods
or other stuff like that
dduncan one problem is if someone decides to access your object attrs directly, rather than using your API, and then you want to change your class implementation
nothingmuch that's their problem
dduncan not always
nothingmuch if they only saw a way to do something by reaching into your modules guts then they can do that and live with it when the module changes
or they can report a bug
asking for a public API for that feature 06:56
why not always?
dduncan they can do that anyway if I have technical constraints against attr access
nothingmuch huh?
dduncan they can either change the source code of my module, which they have, or file for a public API 06:57
nothingmuch they can't edit your attrs directly if they're lexically scoped without physically copying the .pm and editing it
why go through all that?
what about:
dduncan its the better way
nothingmuch use only 'The-Module' with a version I know is OK
and then do a 2 line hack insteaad of a 30 line rewrite?
my conjecture is that the better way is always the one that in the middle term is cheaper for the person paying for the code to be written 06:58
obra dduncan: can they subclass to change it?
nothingmuch short term goodness is not good at all, it usually bites you very soon after
and too much long term requires too much funding
dduncan if a module is well designed, it will allow for people to do everything they need with it, without exposing its insides 06:59
nothingmuch if your module is on the CPAN
and someone wants to save time by using it
but can't quite do it
they can do a fix that is OK for the meanwhile
just to see if it works
and then do the better way later
dduncan if someone can't use a module the way they need, they have the module changed to allow that
nothingmuch btw, copying the .pm will lead to much more headaches in my experience
obra the great thing about cpan modules is that people can use stuff for all sorts of things you never imagined
nothingmuch still, why do you feel it's your responsibility to babysit them/ 07:00
?
obra Why require them to have you change it, especially if they have a weird internal need?
nothingmuch they are grown up and can decide for themselves
dduncan in that case, hell why don't I just turn off use strict?
nothingmuch and again, if they went through the effort of actually reading your module's insides, i think they should have a notion of what's dangerous and what is OK
obra because strict is checking for obvious programming errors
nothingmuch use strict is for you 07:01
you don't impose it on others
dduncan accessing private attrs is a programming error
obra it's "catch things that are mistakes"
no, sometimes it's an explicit decision
that's why you can lexically turn off strict
or even just features
nothingmuch if you use Acme::use::strict::with::pride on all the code that uses your modules, no one will use them
obra have you ever seen { no strict 'subs'; ... } in code?
nothingmuch sometimes says 'no warnings "uninitialized"' to save checks for defined() especially when printing 07:02
is that a programming error?
i'm conciously making a decision to ask perl to not warn me when I try to print something that doesn't make sense when printed
because i'm trying to make my code more readable 07:03
dduncan that's fine for you
nothingmuch right
as is using strict is fine for me
it's a tool for my code
dduncan but if I want to use Perl's built-in strictness or restriction features, why should someone tell me I can't?
nothingmuch but do i impose strict on my caller?
urrf
that's besides the point
the issue is:
your code can be as strict as you like
there is no point in imposing strictures on other people's code 07:04
dduncan I'm not
nothingmuch by using inside objects you are
obra Yes, you are.
QtPlatypus nods to nothingmuch "That would be rude"
nothingmuch inside out
dduncan but if I want my own objects to have private attrs, that is for my own code
obra you're saying "don't touch my internals. I won't let you" not "there's a better way..."
nothingmuch this code does not need protection from itself 07:05
QtPlatypus However inside your own module your free to do as you wish.
nothingmuch furthermore inside out objects do not protect your code from itself, unless you make a closure for each sub
the only restriction inside out objects impose are on the people using your code
obra Also, I bet someone can find a way to break your encapulation. 07:06
nothingmuch yeah, let me find a perlmonks post by [diotalevi]
obra Hell. I've now got code that's calling methods on the calling object ;)
nothingmuch he demonstrates hwo to do that
dduncan someone writing XS can break the encapsulation
nothingmuch soomeone writing XS knows what they're doing 07:07
you need to trust your users
if you assume everyone is an idiot, your code will be hard to use
and then it won't be as cost effective for the user
dduncan I'm under the inclination that no one needs to get to the privates under normal situations ... if there becomes a time when that is different, I can adapt then
nothingmuch however, if your code causes an idiot to waste his time, that's not your fault 07:08
why the overhead?
obra dduncan: What are you trying to stop?
someone who knows what they're doing from hurting themself?
someone who doesn't know better from using a non-public API?
someone who does know better and needs something you don't provide from using your module at all? 07:09
dduncan mainly people that don't know what they're doing ... they're the ones who will try to get to the internals most of the time in a misguided thought that it is the better way
nothingmuch that's their problem
obra What gives you that idea?
If you're worried, I'd recommend _documenting_ that it's a bad idea 07:10
nothingmuch and people who don't know what their doing probably don't know how to read code either
dduncan anyway, I can't help thinking that this whole discussion is a woodshed argument and doesn't need to be discussed
obra I don't think this is a bikeshed.
But it's your code.
dduncan any genuine situation for getting to the internals would be very rare, I think ... the majority of users should never want to do it 07:11
nothingmuch did it many times
dduncan maybe wood/bikeshed was the wrong word
nothingmuch SQL::Translator wasn't reusable
it was good for one time scripts
QtPlatypus thinks that internal access should be like an exothermic reaction. "There should be an 'activation engergy' ie A barror that you have to give some effort to get up to and then it should be easy. But that stament is so vage and meaningless it could mean anything. Yes, I think its woodshedish.
nothingmuch that's one big example I remember
i didn't have time to wait for a bug report about un-reusable interfaces to be fixed 07:12
in fact, afaict they still haven't fixed it
dduncan what I mean is that a big deal is being made about something that I think won't affect most people
obra It's something that would make me not use the code. 07:13
nothingmuch then why bother if it won't affect other people?
nothingmuch too
obra "The author doesn't trust me enough to let me look inside his module"
dduncan but more to the point, I think that I would need some examples to my specific situation as to why someone would want to access the internals of my objects to solve a problem, and that there is no better way for them to solve their problem 07:14
and that can't really be done until a little later, when the module is ready to be tried out
nothingmuch www.perlmonks.org/?node_id=251127 07:15
why do they need your permission?
dduncan they don't ... they have the source code and permission to modify it
nothingmuch that causes much more of a mess than accessing an object with a hash index instead of a method call 07:16
dduncan also keep in mind that I'm using Perl 6 as my main dev methodology now ... there are no inside-out etc there
nothingmuch so why are you using inside outs in perl 5? 07:17
remember that perl 6 also has decent linkage semantics
dduncan the perl 5 version does some things a bit unusual for perl 5 so it better approximates perl 6
nothingmuch an object model with 3 orthogonal ways of composing classes
dduncan perl 6 has native support for private attrs
nothingmuch true inheritence
dduncan the inside-out is how perl 5 emulates that
nothingmuch it will have ways to say who you trust
and you can probably say "that code trusts me, let me at it" 07:18
no, it doesn't
it gives just the restrictions, not the features
dduncan I will be using the 'trusts' in perl 6
nothingmuch www.perlmonks.org/?node_id=315186
well, you don't have in perl 5... what will you be using instead?
dduncan eg, in a class representing a DOM-like object, the classes representing the Document and Node can see each others internals
nothingmuch but in perl 5 everyone will just have to wait till a public api is written 07:19
dduncan in perl 5, there are 2 solutions ...
all classes that access each others private attrs are declared in the same file 07:20
eg, Document and Node are in the same file
nothingmuch ugh
dduncan whose name is DOM, or something
nothingmuch nevermind
dduncan that's how DBI does it
sth and dbh are in the same file
nothingmuch seriously, nevermind
just do whatever
dduncan just so you guys know, my thoughts on this aren't religious ... while I plan to follow one path now, I'm willing to change later if the situation becomes compelling 07:22
I *do* appreciate your feedback
nothingmuch 's rationale remains that in the long term it's cheaper for everyone (you and your users, time or money wise) to not use inside outs 07:23
that's really all I claimed
anyway, must work now
en.wikipedia.org/wiki/Xor_linked_list 07:53
cool!
dduncan that's an "interesting" idea 08:07
gaal hmm, is it okay to decorate a failing test with :todo<spec> when the actual desired results are waiting on p6-l? 08:09
nothingmuch i thinkso
either that or skip it
gaal the particular behavior doesn't warrant a t/unspecced
svnbot6 r7334 | Darren_Duncan++ | /modules/Rosetta-Incubator : added all inter-framework 'use' statements, filled out the DEPENDENCIES docs, standardized the use of class vs module vs package vs file in all my docs, duplicated and modified non-compiling lines to compile with originals commented out 08:10
gaal :todo<spec> it is.
(easier to do :-)
dduncan apparently, Pugs doesn't yet compile "use Foo-(1.2.3...)" like in Synopsis 11, though it does compile "use Foo-1.2.3" 08:11
I may have to add a test 08:12
gaal dduncan: Parser, ruleUsePerlPackage, around line 753 if you want to hack at it. 08:13
dduncan will have a look ...
nothingm1ch when I find minimzied windows or lurking tabs in the browser, and I feel nostalgic I know that my laptop has decent uptime =) 08:30
autrijus gaal: :todo<unspecced> we used before 08:33
gaal autrijus: merci
08:33 nothingm1ch is now known as nothingmnuch 08:34 nothingmnuch is now known as nothingmuch
dduncan gaal, I made the necessary change, which was line 836, ruleVersionPart - I will now test this, and check it in if successful ... my first ever Haskell edit 08:34
gaal cool
autrijus gaal: il n'ya pas de quoi :)
autrijus backlogeth
dduncan: so you've been learning Hs too -- wonderful :) 08:35
dduncan actually, this is the first time I've looked inside one of the /src files
but I had a rough idea of the program structure before 08:36
and gaal pointed me at a function to start looking in ... and I tried to figure it out from there
nothingmuch if you had a pet cow, what would you name her? 08:37
gaal "se".
dduncan still, while I don't expect to do much Hs, it is kind of silly if I won't try to do basic edits there myself, just waiting for others to do it
that said, I have to tread lightly, because I'm not all too sure what wide-ranging effects some potential changes can have 08:38
but I figured what I did today was innocent enough
especially since the part I'm editing the parser for is thrown away anyhow
compile succeeded ... now to see if it fixes my Perl 6 problem 08:39
seems to work 08:43
gaal dduncan++ # .hs hacker now
hmm, interesting. i tried fixing a failing test in uniq.t 08:45
42.uniq should raise an exception
so i added a guard in the implementation:
ifValTypeIsa v "Scalar" (fail "uniq cannot be called on a scalar") $ do
but it doesn't trigger. 08:46
so perhaps we have a deeper problem where invocants are listified (or something otherified?)
hmm, likewise op1Sum list = do { vals <- fromVal list ; ........ } 08:49
fromVal isn't really called on a list when i invoke 42.sum
:todo<bug>ging for now, gotta leave in five
haha, reduce.t reveals the same errant behavior 08:51
most of the red in builtins/list...
there'll be lots of happy yellow when this is fixed 08:52
dduncan I noticed something else that needs doing in Parser.hs, related to my change, but I'm unsure of whether I should attempt it now, since it is a lot larger
specifically ...
the ruleVersionPart rule that I changed is used by both declarations of packages and invocations of packages 08:53
however, the change I made is only valid for uses, not declarations
it would seem the proper solution is to split that rule into 2 rules, which differ on my change 08:54
autrijus dduncan: sure, or parameterize ruelVersionPart
dduncan my changed one for 'use/require' and the other copy for package declarations
autrijus either way is fine.
you can go the easier route, which is split
and we can always refactor.
dduncan since its getting late here, I would prefer to wait until tomorrow to do that, given the amount of time to make sure it's done right 08:55
so should I commit the other change meanwhile, or hold it until I do the above change too?
committing now just means that package declarations will be more permissive 08:56
gaal gotta go now... have fun &
Juerd I did indeed dist-upgrade 08:57
gaal i am teh clever :)
teh late, too 08:58
Juerd Heh, run! :)
autrijus just commit now :)
dduncan okay
then I'll improve it tomorrow
autrijus it almost never pays to wait :)
cool
Juerd autrijus: What's the minimum version for ghc for pugs?
gaal Juerd: please allow eric2^8 to talk you into adding smoking and reporting to your autobuild
6.4 08:59
autrijus Juerd: 6.4 but 6.4.1 preferred esp on osx
Juerd gaal: Everyone's allowed to talk to me about anything :)
dduncan OS X 10.4 to be specific
gaal i mean encourage him to talk you into it
Juerd autrijus: Okay, good
svnbot6 r7335 | gaal++ | more TODOifications
gaal but i'm not here :)
Juerd gaal: For me, it'd be much easier to just get rid of the autobuilding under my account
It takes time I don't have 09:00
nothingmuch if you had a pet shoe maker, what would you call him?
svnbot6 r7336 | Darren_Duncan++ | quick hack of src/Pugs/Parser.hs rule ruleVersionPart so use/require can specify version ranges; also uncommented any /modules/Rosetta-Incubator files that use that feature ... I'll do a better fix in the Haskell tomorrow 09:05
dduncan good night folks 09:14
autrijus night dduncan 09:16
09:33 _jql is now known as jql
pdcawley_ idly wonders how easy/hard it is to write a runtime engine for Pugs... 09:52
I keep thinking 'Ruby has continuations and a vaguely sane object model already'.
nothingmuch returns 09:57
hola pdcawley_ 09:58
pdcawley_ hola
nothingmuch i'm betting you could duplicate the efforts of PIL-RUN quite easily
ask fglock and putter for their insight
also iblech about the js backend - but he hasn't been around lately 09:59
pdcawley_ grins, and then I go on to think, "But then, I need to fix trackback pings on the blogging engine, port DateTime to Ruby, improve the blog's caching performance..."
nothingmuch ? 10:00
pdcawley_ Just various things on my todo list for the blogging engine I'm using at www.bofh.org.uk/ which is built on Rails. 10:01
nothingmuch ah
that is, instead of compiling perl 6 to ruby
pdcawley_ Indeed. It's all a matter of priorities.
nothingmuch yes, it is, sadly 10:02
pdcawley_ The fact that I've still not managed to build pugs on this box since I upgraded to Tiger isn't exactly helping.
But it does build on the laptop so I might take a look there.
nothingmuch really? it Works For Me(tm)
what is not working?
ghc 6.4.1 fixed an issue that gcc_select 3.3 or 3.0 was needed for
pdcawley_ Ah... it's been a while since I tried to build. 10:03
nothingmuch priorities would be so unnecessary if only i wasn't an academic bastard: www.timecube.com/
pdcawley_ The original problem was it kept throwing errors about deprecated syntax or something.
nothingmuch ofcourse, the only thing i have to realize is where the fuck can you find conrners on a sphere 10:04
odd
pdcawley_ Well, I'll try the 6.4.1 build with gcc 4.0 selected.
I have the feeling the issue might be down to something like having built the support libraries with gcc 4. 10:05
nothingmuch there is a pkg but it's not linked on the front page
www.haskell.org/pipermail/haskell/2...16497.html 10:06
pdcawley_ notes that the last 3 assertions about 24 hour rotations are simply wrong.
consider a point at, say 0W, 70N
nothingmuch pdcawley_: you are an evil human 10:07
didn't you read below? he has proof!
pdcawley_ It's, ah... Is he serious do you think? 10:08
nothingmuch i don't know
timecube.com/index6.html
pdcawley_ Delightful. 10:09
nothingmuch anywho, i think someone who typed all that up must believe in it somehow
but if it was generated, then the person has: 10:10
a sick sense of humor
pdcawley_ Indeedly.
nothingmuch too much time to write article generating stuff
although pdos.csail.mit.edu/scigen/ 10:11
pdcawley_ coo, a google search on link:www.timecube.com throws up 361 hits.
coral eeeeee timecube 10:14
this is the wrong #perl for that ;)
is 'svk up' the proper command to update my local pugs checkout to the current rev? 10:15
clkao svk up -s or svk pull
coral ah
neat, that's working. thanks! 10:16
pdcawley_ Hmm build died with 'RTLD_NEXT' undeclared in HsUnix.h 10:17
pdcawley_ grabs the binary instead. 10:19
clkao 4/win27 10:23
nothingmuch this is very nice: www.cs.cmu.edu/~dga/scigen/near_science_low.avi 10:25
arf 11:28
scook0 nothingmuch: I knew they submitted the paper, but I didn't realise they actually showed up :) 11:29
nothingmuch =) 11:30
nothingmuch is writing a query planner and his mind is bending
bpalmer` query planner? 11:32
nothingmuch you have a query
like return all the things that are property a and property b
some properties can be indexed
some properties cannot be indexed, and should be run on the union the indexed properties are made
the result list needs to be lazy, too 11:33
with concrete results coming in first
and combinations of results
e.g. item x and item y satisfy the properties when combined
but those should not be calculated till necessary
bpalmer` huh. I can see why you want to do planning :-)
scook0 well, good luck with it 11:34
nothingmuch so i'm writing the bit of code that takes a query, and sequences some operations
as a closure that returns partial results, and the "next" step
where the partial results is an array ref containing hits
and the way these query closures are generated is decided by the query planner 11:35
the difference between unix users at work and at home is that somehow people at work don't know of the existence of man pages 11:43
"how do you grep on binary files?"
"man grep <slash>binary"
i don't know how many times i've said that 11:44
but somehow the are totally convinced that 'man' is not generic
i.e. it only works for the subset of commands i said it works on
==(
and now I have no clue what I was thinking of 11:45
pdcawley_ 3. 11:48
svnbot6 r7337 | scook0++ | * A few Haddocks and other comments 12:09
r7337 | scook0++ | * Replaced some `maybe _ id _` with `fromMaybe _ _`
r7337 | scook0++ | * Disallow `.foo($inv: $arg)` for having two invocants
r7337 | scook0++ | * Other minor readability tweaks for 'ruleApply'
nothingmuch hola kolibrie, theorbtwo 12:47
theorbtwo Allo, nothingmuch. 12:48
nothingmuch wonders if you can nest maps/greps in perl 6 more easily somehow 13:02
$OUTER::_ definately makes it possible 13:03
but is there a prettier way?
theorbtwo I suppose it'd be nice to be able to tell map what the index variable should be named.
nothingmuch map -> $x { } @list ?
hmm
i wonder how the autovars ($^a, $^b etc) relate to nested blocks 13:04
theorbtwo They belong to the innermost.
nothingmuch unconditionally?
theorbtwo Yeah. 13:05
kolibrie nothingmuch: hi # sorry for the delayed response
theorbtwo Last I heard, anyway.
nothingmuch hmm
i guess $OUTER::_ and map -> $x { } should suffice
theorbtwo I haven't payed much attention to perl6 stuff since the hackathon.
nothingmuch how come? 13:07
no time?
how's the UK work gig, btw?
kolibrie nothingmuch: what's the best way to get irssi to notify me when I'm called, etc. (running from a non-local box) 13:10
nothingmuch hmm 13:11
i use the growl script
theorbtwo Jess likes her new job very much.
nothingmuch you can probably steal it and base events on that
theorbtwo: what does she do?
theorbtwo I like her coworkers; we've been hanging out a fair bit.
clkao where in UK? :P
nothingmuch coolness
theorbtwo Abingdon, Oxfordshire. 13:12
clkao there's london.pm social tonight :P
theorbtwo She's a web programmer.
nothingmuch theorbtwo: did you both apply? or just her?
theorbtwo Yeah, it's a bit far.
Just her, and they aren't hiring any more for her department, sadly.
nothingmuch kolibrie: if you're on mac (which IIRC you aren't), Mac::Growl is used by that script to pop up little thingies 13:13
now, in your case you could send a terminal bell, or find some ad-hoc notification system and glue it to the script
but I can't help much with that, since I don't know the tools
theorbtwo: did you try something else?
gaal rehi
nothingmuch hola gaal 13:14
gaal nothingmuch, i won't be seeing you tonight, will i?
theorbtwo nm: Tried another department; they rejected me just from my CV.
nothingmuch gaal: tonight is israel.pm?
gaal nothingmuch, yes. you'll be mentioned ;-)
nothingmuch eep 13:15
sadly i will only manage to get out of $work around when you start
gaal also, you have a fine chance to buy me a beer!
nothingmuch heh
nothingmuch is really in need of a better ride situation
kolibrie nothingmuch: true, no mac for me, and I don't know the Linux tools either
gaal too bad, but you can buy me a beer some other time. 13:16
nothingmuch kolibrie: well, google around for notification systems
gaal: do I owe you one?
or is it just for fun?
gaal no, but so what? :)
nothingmuch in that case yhou buy me a beer too ;-)
gaal get me sufficiently drunk and i will
kolibrie nothingmuch: some time
nothingmuch cheapskate 13:17
kolibrie: anyway, i dunno the growl script or much about irssi
so aside from what I already told you I can't help much 13:18
but the growl script is at...
gaal not at all, i just want to get you started
nothingmuch growl.info/documentation/irssi.php
kolibrie nothingmuch: thanks
gaal anyway: the code in `trans` in the Prelude is crashing. anyone know why?
nothingmuch chat is getting too busy for work... &
pasteling "gaal" at 192.115.25.249 pasted "trans crash" (9 lines, 414B) at sial.org/pbot/13490 13:20
gaal there's nothing there that looks like it's 0 parameter...
*being called with 0 parameters
autrijus gaal: expand $_.key => expand $_.value 13:33
rafl Is it possible to overwrite the max recursion depth of .perl from a perl script?
autrijus I bet &expand is called with magic pairs
rafl: er, no. I suggest we lift the maxrec depth.
as in, if you have an infinitely recursing thing, you get it
rafl: but how would you hit 1024 depth? 13:34
rafl It's just a theoretical question. 1024 works fine for me ATM.
autrijus ok. the answer is no... not without essentially writing a worker function for .perl yourself
rafl I can imagine that someone want's to serialize a real big structure. Or someone knows that a structure is infinitely recursing and want's to set the max depth down.. 13:35
autrijus thing is that .perl should handle circularity correctly 13:36
rafl What about infinite lists? How is that handled currently? 13:37
autrijus badly. they should serialize to range syntax 13:39
nothingmuch ?eval (1...).perl 13:41
evalbot_7312 pugs: out of memory (requested 1048576 bytes)
nothingmuch tee hee =)
rafl Hm. How is perl5's the .= operator called now? 13:55
autrijus ~=
rafl Thanks. 13:56
Is there a cool way in perl6 to iterate over a list having a counter without using for (my $i = 0; $i < @a; $i++)? 14:00
gaal autrijus: the call is simply: 14:01
"ABC".trans( 'A'=>'a', 'B'=>'b', 'C'=>'c' )
theorbtwo rafl: for @array.kv -> ($index, $value) {...}, IIRC.
PerlJam rafl: for zip(@list,0...) -> $x, $i { ... } 14:02
autrijus gaal: I think the map on line 393
gaal: is not expecting pairs for $_.
gaal: this is veery annoying.
rafl theorbtwo: Works, thanks.
PerlJam: I prefer theorbtwo's way. 14:03
autrijus gaal: to wit
?eval map { $_.key } (a=>2, b => 3)
evalbot_7312 Error: Insufficient number of required parameters: 0 actual, 1 expected
gaal rafl, theorbtwo: the parens are optional
autrijus ?eval map -> Pair $_ { $_.key } (a=>2, b => 3)
evalbot_7312 ('a', 'b')
gaal hmm!
PerlJam rafl: sure, but even though that syntax works in pugs I'm not quite sure that applying .kv to an @array is set in stone. 14:04
(or as close to stone as p6l gets)
gaal PerlJam: i believe S29 mentions it.
theorbtwo ?eval @x=('a'..'f'); map @x.kv -> ($i, $v) {"$i: $v"} 14:06
evalbot_7312 Error: unexpected ">" or "-" expecting operator, ":", ",", term postfix, postfix conditional, postfix loop, postfix iteration, ";" or end of input
gaal autrijus: is it the map that's complaining, or .key?
autrijus gaal: it's map
gaal theorbtwo: 'for'
autrijus gaal: map is applying a pair into something that is not declaring that it wants a pair.
gaal: this is highly silly 14:07
PerlJam gaal: Even so, S29 is still cast in modeling clay.
theorbtwo ?eval @x=('a'..'f'); for @x.kv -> ($i, $v) {$x ~= "$i: $v, "}; $x
evalbot_7312 Error: Undeclared variable: "@x"
theorbtwo ?eval my @x=('a'..'f'); my $x; for @x.kv -> ($i, $v) {$x ~= "$i: $v, "}; $x
evalbot_7312 \'0: a, 1: b, 2: c, 3: d, 4: e, 5: f, '
autrijus gaal: I don't know whether we should fix map, or fix default parameter type for bare blocks, or just workaround it in prelude.
gaal: or ask p6l. I think workaround for now first.
gaal ok. 14:10
PerlJam: indeed.
autrijus, to make sure I understand: $_ is not expecting a pair? (what is a pair being applied to?) 14:11
autrijus gaal: map takes & and @ 14:12
and apply each of @ into &
the & takes $_
which does not have Pair in its type
due to magical pairs
when you apply a pair into something that does not expect pairs
it resolves into named binding
...and promptly fails
I think it's a bad idea.
theorbtwo tends to agree. 14:13
PerlJam autrijus: And how does one "turn off" name binding?
autrijus I think slurpy scalar is a much saner way out.
PerlJam: one can't which is very very annoying.
PerlJam ah
autrijus I'd rather say "$_ is positional" 14:14
but currently the closest is
"Any|Pair $impossible_name"
or rather, in newstyle syntax
"(Any,Pair) $impossible_name"
mdmkolbe In pugs, "((1=>2)&(3=>4)).key" results in "(1&3)", but I don't understand why "((1=>2)&(3=>4)).value" results in "({ref:<Scalar::Proxy>})". Is this a bug or how to I get the expected "(2&4)"? 14:18
autrijus ?eval scalar ((1=>2)&(3=>4))
evalbot_7312 Error: No compatible subroutine found: "&scalar"
autrijus ?eval perl ((1=>2)&(3=>4)) 14:19
evalbot_7312 '((1, 2) & (3, 4))'
autrijus ?eval perl ((1=>2)&(3=>4)).value
evalbot_7312 '({ref:<Scalar::Proxy>})'
autrijus ?eval $x = ((1=>2)&(3=>4)).value; $x
evalbot_7312 Error: Undeclared variable: "$x"
autrijus ?eval my $x = ((1=>2)&(3=>4)).value; $x
evalbot_7312 \({ref:<Scalar::Proxy>})
autrijus hrmph.
pasteling "gaal" at 192.115.25.249 pasted "further pai[rn]" (19 lines, 772B) at sial.org/pbot/13492 14:22
gaal this is after introducing autrijus' workaround to the prelude
we get past the first test with weird errors, then get a different b0rkage.
(why PGE? there's a P5 rx there) 14:23
Wow, the 42.listop bug is very popular.... sort.t also exhibits it. 14:25
autrijus 42.listop? 14:26
gaal eg. 42.uniq should die 14:27
so should 42.sort
autrijus why?
oh, because autolistify is not warranted 14:28
gaal that's what the tests claim :)
autrijus sort 42; # is fine
but 42.sort should not be
gaal (42,).sort # ok too
autrijus sure
gaal so builtins/list has plenty of todo<bug>s on that
curiously, in t/builtins/lists/one_elem_list_kv.t, only one test does pass -- the last one, where we do (42).kv :) 14:29
autrijus ?eval (42).kv 14:30
evalbot_7312 Error: No compatible subroutine found: "&kv"
autrijus that's what I'd think.
gaal yes, that's a pass (it's a dies_ok test)
autrijus oh ok
gaal ?eval (1,).kv 14:31
evalbot_7312 Error: Not a keyed reference: VList [VInt 1]
gaal but that ostensibly should have worked.
autrijus indeed.
gaal ok, todo-bugging that too.
autrijus anyway, just sweep them into todoness for now; the container typing needs more work 14:32
iblech Hello everyone! Glad to have finally found some time for IRC :)
gaal iblech! hello :) 14:33
eric256 morning/evening/afternoon ;)
autrijus iblech!
iblech: how's life? 14:34
iblech geoffb: (You asked why iblechbot isn't up 24/7) It's because iblechbot runs on my gateway (a normal desktop), and it gets switched off at night
gaal there's a nice little film called Living in Oblivion, which serves as a nice reference for your recommendation. :)
autrijus gaal: :D
iblech autrijus: Thanks for asking, school consumes much of my time...
autrijus gaal: ignorance is bliss and we are now -Obliss!
gaal iblech, on that note, any chance of seeing you at YAPC::Israel?
eric256 ibech why not run it from a feather account?
iblech geoffb: (You asked whether your updates to STATUS WRT PIL2JS are ok) They are ok :) 14:35
gaal speaking of which <grin>, eric256, hello...
....mind taking over Juerd's autobuild?
eric256 hey. working on my patch right now ;)
gaal yay
eric256 if its auto...whats to take over? 14:36
just waiting for pugs to finish making.....seriously slow process ;)
iblech gaal: Probably not, school you know...
gaal he's got working scripts in his home dir, that just need to be moved to yours, and then when you add auto-smoke-submit, just turn smoking on :)
iblech: we'll give you cred for it! :) 14:37
eric256 twiddles thumbs waiting for compiling pugs.run to finish... 14:38
gaal eric256: i don't think it's high-maint or anything, but he mentioned not having time to maint it anyway.
iblech eric256: [iblechbot on feather] I promised that all logs iblechbot creates are strictly private and will only be stored on my local computer(s)
eric256 just don't store logs then ;)
or you can change the permissions on your file so others can read the log file
s/can/can't/ 14:39
iblech A bot which just sits in the channels and does nothing else is mostly useless ;)
eric256 i'd be happy to look into maint those scripts gaal
rafl iblech: I queried you. Did you get my message? 14:40
nothingmuch iblech: welcome back!
eric256 well ilf all it does is keep logs, and those logs are private, then it doesn't do anything anyway...so it must do something besides log
iblech eric256: Right, but root would still be able to read the logs, thus breaking my promise ;)
rafl: Yes, I replied :)
eric256 ahh.. paranoia..
theorbtwo If you really wanted, you could use public-key encryption. 14:41
nothingmuch gaal: do you know when YAPC::Israel::2006 is going to start registration and stuff?
iblech eric256: Right, it doesn't do anything actively speaking
gaal nothingmuch: nope
rafl iblech: Hm. I didn't get that. freenode is anal, you know? You need to be registered to send query messages. 14:42
autrijus theorbtwo: running a process on somebody's computer is no way to guarantee safety
theorbtwo Yeah, autrijus, I know/
But that way you can only read the bits in memory, and not on disk (except to the extent that disk is memory, of course).
iblech theorbtwo: But, in order to encrypt the logs, the bot would have to store the private key somewhere, right? 14:43
PerlJam iblech: not necessarily :)
eric256 gaal what would be a valid value of pugs_smoke_upload for me to test with? (already tested undef)
theorbtwo Only it's own private key.
Not the private key of the person who can decrypt it.
gaal slurp "does-not-exist" : fail, right? 14:44
iblech theorbtwo: D'oh, right, of course.
eric256 gaal, if that was meant for me i have no idea what you meant.;)
gaal eric256: you know, maybe there should be one value for whether to submit smokes or not - just a boolean 14:45
eric256 what would you have put in $ENV{PUGS_SMOKE_UPLOAD} field ? so that i can make this one behave the same but reading from config.yml
gaal eric256: and another, less widely used, for an override submission url, which can be null by default since the smoke client already comes with a defualt out of the box.
ahhh, oh 14:46
well right now the PUGS_SMOKE_UPLOAD feature is one that we're deprecating:
it doesn't work the same way as the smoke client
it's just a hook for doing something with the smoke
see what run-smoke.pl does with it, basically just invokes a comment
*command 14:47
i think nothingmuch used to have a script that made use of this. is it in util/ ?
smoke-loop or something like that?
... the question about slurp wasn't intended specifically to you, eric256 :) 14:48
eric256 i thought we were just moving it out of the environment and into the config file
but if you have the code to upload i can just make it a flag to signal the script to auto upload
gaal eric256: ahh, no, now that we have a smoke server i don't think we need a special hook for user-defined commands. let people who want that write their own wrapper around make. 14:49
eric256 in that case...how do we get the smoke from client to the server?
gaal eric256: sure, the code is "perl util/smokeserv/smoke-client.pl" :-) 14:50
with $^X instead of hardcoded "perl".
eric256 so putting that in the PUGS_SMOKE_UPLOAD field (for a quick test) should work? 14:51
gaal all: okay, I'm assuming `slurp "unknown_file"` should fail, not blindly return undef.
eric256 hmmm actualy it needs teh smoek file pssed to it...okay trying this out 14:52
gaal i think so, except there's a chance that the invocation in run-smoke adds some arguments without asking. look there :)
eric256 yea
now i just need to wait for make smoke to finish so i'll have a test file to upload ;) 14:56
autrijus eric256++ 14:58
eric256 hehe you havn't seen my hacky code yet. ;) that might end up being a --
autrijus nah, any code is worth a ++ 14:59
unless you somehow invent anticode
broquaint unlink for <*.pl>; 15:00
s/for //
gaal AKA Nuke Poland 15:01
svnbot6 r7338 | gaal++ | TODOifications: all of t/, except for trans.t. ext/ still needs to be TODOed.
autrijus gaal++
mdmkolbe autrijus: is there somewhere I should post the ((1=>2)&(3=>4)).value bug so it doesn't fall through the cracks and get forgotten? 15:02
gaal autrijus: take a peek at trans.t please? sial.org/pbot/13492
PerlJam gaal: Isn't "undef" a good sign of failure?
theorbtwo wonders if broquaint really just used <> for glob.
autrijus mdmkolbe: you should, of course, write a test. 15:03
gaal PerlJam: it is, when running under 'no fatal'
but it's easier for us to make things fail for now :)
PerlJam Is fatal the default now?
gaal (pugs answer, not p6) well, (a) we don't actually have lexical pragmas yet, so "fail" is fatal; 15:04
eric256 i can actualy read teh .hs files now...might nut completly understand but i don't run from the room screaming.. lol
PerlJam eric256++ excellent!
gaal (b) we switched faillible builtins to failing instead of returning undef hardcodedly.
so effectively yeah :) 15:05
as for p6, i don't really know what'll turn out to be the default
autrijus mdmkolbe: you have a committer bit for the test?
PerlJam Sounds like pugs needs lexical pragmas to me.
autrijus mdmkolbe: test for stringification for .value 15:06
PerlJam Does pugs have *any* pragmas?
gaal i know my own preference is for on by default
PerlJam hasn't quite kept up with pugs
gaal PerlJam: working on it ;)
autrijus PerlJam: no, gaal is working on it.
eric256 hehe...testing seems to have paused on ext/Set-Inifinite/t/set-inifinite-recurrence.t ----- kinda worriesome having the word infinite in a test ;)
PerlJam gaal++ then
and again gaal++
autrijus all exports are lexical in p6
and gaal is working based on MJD's proposal for p5
which may or may not be adopted to 5.10
gaal Dominus++ really (I'm following his really excellent design)
PerlJam url for mjd's proposal? 15:07
gaal sec
www.xray.mpe.mpg.de/mailing-lists/p...00112.html 15:08
nothingmuch will have to follow up and see how lexical pragmas apply to blondie 15:09
autrijus bbiab... 15:10
nothingmuch gaal: was the proposal ever integrated to blead? 15:11
gaal nothingmuch: i don't know. don't knwo what happened to his debugger proposal either. 15:17
nothingmuch =(
the debugger proposal always made me sad
gaal but ask him! he's a nice person.
nothingmuch p'raps
gaal anyway, i'd better get a moose on, my show^H^H^H^Htalk is soon.
nothingmuch good luck!
gaal ok quick: what nice things happened in Pugs since July? 15:18
eric256 crap make smoke takes a long time. lol
nothingmuch PIL-RUN
eric256 does it always run all teh tests in /etc ?
nothingmuch js backend improved a lot or materialized
eric256: for make test i think hes
and that's ext, btw ;-)
eric256 i knew it didn't soudn right
nothingmuch i estimate around 3000 additional unit tests
gaal eric256: if you got the RAM, precompile Test.pm too, it'll save you time
eric256 i'm on feather so next time i will 15:19
nothingmuch check autrijus's talk from YAPC::NA... iirc it was ~7000 back then
gaal: how do you do that?
eric256 tried to windows machines and i always run out of memory
its a an option in config.yml
nothingmuch ah... /me will have a look at it
gaal nothingmuch: uncomment the `precompile_modules` line in config.yml and perl Makefile.PL again.
nothingmuch smoke server started
gaal eric256, nothingmuch: yes, you also need to increase the GHC heap size to 8562TB. 15:20
or 400M, whichever is more approporiate.
nothingmuch for Test.pm?
gaal yes
nothingmuch how come?
gaal you might get away with 350
nothingmuch has 1GB of physram 15:21
can afford about 800 for ghc nominally
gaal take a look at the intermediate .hs file, it's 1mb of haskell source for the Prelude.pm, and another 1mb when appending Test.pm
1mb is a lot of haskell :)
anyway, thanks for the tip, nothingmuch, and see y'all later 15:22
eric256++ # good measure
bye :) &
iblech bye gaal 15:23
nothingmuch ciao!
eric256 you run the smoke server nothingmuch?
nothingmuch nope... iblech does
i still generate haddocks and test backlinks though 15:24
eric256 you just said you started it...i was confused
nothingmuch no, not me
eric256 10[09:19] nothingmuch: 01smoke server started
nothingmuch just stated that "smoke server started"
eric256 alright 15:25
eric256 continues to wait impatiently 15:26
i'm into the oo tests.... can i run concurrent tests on feather or is that bad manners?
nothingmuch i'm not sure it'll help
eric256 realy?
nothingmuch it's not SMP or hyperthreaded 15:27
and only 1gb of ram
so it might actually make things worse, by thrashing disk and stuff
actually, why are you testing at all?
eric256 hehe. nm then.
nothingmuch aren't the smokes enough?
eric256 i did
make smoke 15:28
and i'm still waiting.....and waiting....and waiting.... as it goes through all the test files
nothingmuch well, to get results you should probably look at the precanned smoke results... testing pugs takes a *long* time
then you can pick something to target
and test it as you fix things
but i think that unless this is for the purpose of submitting new smokes on linux, it's a shame that you wait that long 15:29
rafl autrijus: Will it be possible to build a libpugs with 6.2.10?
eric256 i just wanted the smoke file to test my smoke_upload fix on run-smoke.pl
nothingmuch ah
then fake it ;-)
eric256 yea i didn't think ti would take this long...and now i dont' know how near the end i am...quiting now would seem a shame 15:30
nothingmuch anyway, /me goes back to what he was doing before
rafl nothingmuch: perl5/Blondie/type annotation.graffle breaks make dist because it contains a space. Would you please change that? 15:32
nothingmuch rafl: sure 15:33
nothingmuch mutters something about living in the stone age
rafl You could fix EU::MM as well.. :-)
nothingmuch well, there are portability issues 15:34
since pugs runs on DOS ;-)
comitted
rafl Thanks.
svnbot6 r7339 | nothingmuch++ | tr/ /_/ for dist 15:35
nothingmuch it's actually out of date now =)
rafl geoffb: I'm about to prepare the debian/ changes for 6.2.10. You wanted to co-maintain it, right? 15:50
Why is perl5/ installed into /usr/share/perl6/5.8/perl5? 16:06
It should be /usr/share/perl5 imho. Or if the modules aren't usable for anything than pugs it should be /usr/{share,lib}/pugs/perl5/ or something like that. 16:07
Why is the java MM installed? Thought it doesn't work at all currently. 16:08
iblech rafl: IIRC autrijus talked about this with steven yesterday; basically cp -r perl5 blib6/lib was easiest 16:09
rafl *brr*
kolibrie rafl: rather than making a dist on CPAN, etc.
eric256 hmm anyone know how to commit changes with svk? 16:10
same as svn?
rafl eric256: svk push
clkao just committ
but use push if you use a local branch
rafl That woudn't be needed. How about putting all the perl5 stuff into lib/? 16:11
And their tests into t/. It's really crap to install Makefile.PL, t/ and others for every perl5 module. They don't need to be installed.
eric256 with any luck a commit message will show up hear shortly 16:13
svnbot6 r7340 | eric256++ | Add smoke_upload option to config.yml so that 'make smoke' automaticaly uploads smoke file.
nothingmuch =)
rafl eric256: Say ?check to svnbot6 and it will show up instantly. :-)
eric256 who maintians smoke.pugscode.org? 16:14
rafl eric256++; That allows me to get rid of it in debian/rules. An environment hook to deactivate it even if it's set in the config would be cool though.
iblech eric256: smoke.pugscode.org points to my server, m19s28.vlinux.de
rafl eric256: I also would like to have an option to specify the yml file.
clkao the smokeserv should be able to show me "latest regression" and "latest passed tests" against previous submission
eric256 rafl .... smoke server takes html files.... 16:15
iblech clkao: Would be cool, yes... IIRC Limbic_Region used to worked on this
rafl eric256: That's not directly related to smokeserv. 16:16
nothingmuch clkao: darcs get nothingmuch.woobling.org/Test-TAP-HTMLMatrix
it supports a consolidated view
that can show you what changed between any two TAP streams
eric256 i was just wondering if you wanted to add a blurb at the top were you talke about submitting smokes. "You can also set smoke_upload: 1 in config.yml to automaticaly upload." something like that.
clkao nothingmuch: darcs! how dare you!
nothingmuch and highlight the TAP streams in a test suite that don't work
clkao :P
rafl eric256: Look at debian/patches/ - it would be cool to add some code so I could get rid of it and set the config.yml location using environment variables or commandline args.
nothingmuch clkao: sorry, the interface rocks =)
clkao you want interactive commmit? we've got it already
nothingmuch now it's a matter of inertia more than anything 16:17
i use darcs for my own repos because I'm used to it
i use svk for other people's svn repos
which is actually more than my own
clkao what's thge biggest hate when you have to use svk?
rafl holarse.net bestimmt.
eric256 rafl i can do that...you could do that...thats an easy fix
rafl Whops. Wrong channel. :-/ 16:18
nothingmuch the biggest hate is the fact that it's tied to subversion in a way that makes pushing to a central repo very slow sometimes
rafl eric256: Yes, everyone could. But I focus on other things currently.
nothingmuch another thing, not a hate, but a like about darcs is that I can just put a dir anywhere, and it works
and people can pull from there
eric256 rafl: in config.yml or as an env? whats the consensus on that? 16:19
clkao *nod* that's quite slick
nothingmuch wishes SVK was the next natural step - a version control aware patch pusher
that can store to many types of repos:
local svk mirror
centralized svk 16:20
darcs
clkao nothingmuch: so why isn't the new tap matrix on pugs smoke?
nothingmuch clkao: because i keep forgetting to finish
rafl eric256: I want two things. 1) Disabling smoke sending using an ENV hook (minor) and 2) being able to specify the config.yml location somehow.
nothingmuch and there is stuff that i suck at (html)
and there is the issue of wtf do you actually diff
i guess smokeserver would want a checkbox interface, and a "compare these" thing at the bottom
eric256 accidentlay pushed run-smoke with certain lines commented out...hehe. ops
nothingmuch but for that smokeserver needs to take in storable/yaml dumps, not htmls
eric256: that's what version control is for ;-) 16:21
clkao: i promise to finish tth as my next unfun jobs
i dedicate 1-2 hrs a day to unfun volunteer work 16:22
but now i promised to convert rules.t to parrot
clkao nothingmuch++ # prepay
nothingmuch otoh, if anyone would like to hack tth on their own, i have a very accurate and pretty easy TODO list
eric256 rafl so an option in config.yml is okay with you then for the first part? and you want like upload unless $ENV{PUGS_NO_SMOKE_UPLOAD} 16:23
rafl eric256: Sorry, I need to go now. Let's talk again in some hours. 16:24
svnbot6 r7341 | eric256++ | Opps.. Uncommenting lines that shouldn't be commented.
eric256 any minor tasks that need doing let me know 16:26
nothingmuch eric256: want to do TTH? 16:27
eric256 don't know what it stands for even
nothingmuch Test::TAP::HTMLMatrix 16:28
eric256 ahh
nothingmuch the module that makes the pretty HTMLs out of the test results
eric256 i've been roped into this test stuff. ;)
sure
nothingmuch sedates eric256 with some date rape drugs
okay, here's what's needs to be done:
autrijus notes casually that it will make eric256 forget everything you said, so maybe you dont want _that_ kind of drug 16:29
eric256 lol
nothingmuch autrijus: as long as i can make him code for me first
i don't mind if he forgets what he wrote
anyway
we need a method that takes the summary_html and detail_html, as well as no inline_css 16:30
and emits them into a directory that is the parameter of the method
we also need to clean up some HTML coloring
and HTML layout
eric256 is this in the PUGS svn somewhere? 16:31
nothingmuch no
nothingmuch.woobling.org/Test-TAP-HTMLMatrix/
you can darcs get it
eric256 knows less about darcs than svk (and thats saying something) ;) 16:32
nothingmuch =)
get a darcs bin from darcs.net
and just say 'darcs get nothingmuch.woobling.org/Test-TAP-HTMLMatrix/'
and you'll get a local mirror of that dir under Test-TAP-HTMLMatrix in PWD
eric256 darcs is alreayd on feather...and i just did that.../me assumes this is in some way p6 related?
nothingmuch indirectly it will help the pugs smoke server 16:33
and the parrot smoke server
i doubt Juerd will mind
eric256 if he does it will be your fault
because i wont remember a thing ;)
kolibrie I'm witness :)
nothingmuch okay =)
eric256: darcs pull 16:34
eric256 i id a darcs get
will that be a problem/
nothingmuch no
inside the repo darcs pull 16:35
i just committed a new patch
svnbot6 r7342 | iblech++ | * PugsBuild::Config: Honour the new PUGS_BUILD_CONFIG env var.
r7342 | iblech++ | * pugs::run: Document this new var.
r7342 | iblech++ | * util/run-smoke.pl: Added appropriate use lib File::Spec->catdir(...) so
r7342 | iblech++ | PugsBuild::Config can be loaded without -I or $PERLLIB.
iblech rafl: There you go :)
rafl: And PUGS_BUILD_OPTS="smoke_upload=0" ./util/run-smoke... should fix 1) 16:36
eric256 anything specific about the HTML Coloring/Layout you want to clean up
nothingmuch yes, one sec, i'll tell you 16:37
(darcs pull again)
eric256 iblech stole my job!!! theif!
nothingmuch also darcs get url with Test-TAP-Model
iblech eric256: :D
eric256 invistigates iblechs update 16:38
i though you couldn't do dynamic "use " statements?
nothingmuch okay 16:39
dynamic use statements?
oh
yes you could, they just can't be part of an expr
eric256 use lib File::Spec->catdir($FindBin::Bin, "..", "inc");
nothingmuch anyway, eric256 - in example.pl, comment out the print for detailed_html and uncomment summary_html
that view completely sucks
iblech eric256: All use statements happen at compile-time, but in the order they're listed in the file, so it works :) 16:40
nothingmuch it needs to be prettier
also, you'll notice that in the total column for the summary view the coloring is based on the leftmot column
not both together
as it should be
nothingmuch.woobling.org/example.html # sucks 16:41
eric256 will look but make no promises
nothingmuch if you can take that HTML and edit it/the css till their pretty, i can backport to the template easily 16:42
that would be a lot of help
if you can also do the ->output_dir method or at least start it, that would also be nice
it will also need an index.html that has links to the summary, and the consolidated output
clkao: ping
eric256 needs to learn to say 'no' lol 16:43
autrijus eric256: remember, you are drugged :)
clkao nothingmuch: hi 16:45
nothingmuch nothingmuch.woobling.org/example_co...dated.html
that is what you have right now
clkao whoot 16:46
theorbtwo "Remember, you are still under oath^Wdrugs."
autrijus clkao: remember to remind me that I need to reserve a M-sized pugs shirt for nicholas 16:47
nothingmuch clkao: the expanded by default lines are those that disagree
autrijus clkao: would you carry it back to him?
nothingmuch and you can expand similar lines in order to mouse over the diag output
clkao autrijus: i could, of course.
nothingmuch the "real run" and "dummy failures" parts need to be DWIMly extracted from the pugs -V output
clkao autrijus: there are tons of fotangoer going to npw 16:48
autrijus nothingmuch: wow, real pretty
clkao: define tons... I don't have many shirts left
nothingmuch that is, if you have two pugs -V outputs, you extract all the fields, and then abbreiviate and eliminate duplication
autrijus clkao: but I remember fotango can print their own shirts ;)
clkao i mean any of them can be the agent
nothingmuch also - if anyone knows to take care of such quirks (eric256 ;-) - the +/- buttons will cause the name of the test to jump around a bit
if it could be persuaded to stay in place that would be wonderful (i tried, didn't work for me) 16:49
anyway, i really need to finish some stuff before going home 16:51
eric256: i hope you've got enough to do =)
iblech: you should be listening, because smokeserv will want to use this
iblech listens 16:52
nothingmuch and also, keep in mind that it was *very* hard to port smokserv to parrot
so if you glue it in, try to make it reusably glued
eric256 is still trying to install modules needed for TTH....gonna do it localy i guess. ;)
nothingmuch eric256: Test::TAP::Model should come from TTH's sister darcs repo, since it's got the new consolidation code
everything else should install locally without too much fuss
eric256 yea but feather and me don't seem to get along on installing stuff 16:53
it will be easier to work on HTML localy anyway 16:54
nothingmuch if you don't want to install darcs you can rsync or scp -r the repos
they are just plain files
man, closures are so cool 16:59
nothingmuch goes home 17:01
autrijus ...wait until you smoke delimited continuations... _those_ can really get you high
oh wait, but you had :)
nothingmuch what does delimited mean in the context?
autrijus nothingmuch: resetT boundary.
nothingmuch no hablo resetT 17:02
autrijus: ? 17:03
theorbtwo The nifty thing about continuations is that you invoke them, and they continue where they left off. 17:04
nothingmuch has to leave
nothingmuch knows about continuations
autrijus nothingmuch: shift/reset... the thing that we use to transfer control around return() and redo() and whatnot
nothingmuch: have fun :)
nothingmuch i just dunno what delimited is
theorbtwo Delimited continuations can continue someplace other then where you left off.
...I think.
nothingmuch hum
will read later
*poof*
autrijus nothingmuch: boundary means instead of having the continuation run till end of the world
you run it until end of the reset boundary. 17:05
oops.
theorbtwo Oh.
Hm, that doesn't sound like the same thing I was saying.
autrijus indeed...
luqui ?eval $?PUGS_VERSION 17:13
evalbot_7312 \'Perl6 User\'s Golfing System, version 6.2.9, August 3, 2005 (r7312)'
autrijus greetings, luqui san.
luqui hello
er, konichi wa
I just came on to do an @pl on lambdabot, but it appears he is absent 17:14
anyway, I was thinking about tuples some more
autrijus okay. what about them? 17:15
luqui I think haskell did them wrong
autrijus larry seem to be keen on keeping the tri purpose of array/list/tuples
luqui yeah, I'm trying to fudge tuples and arrays together
making array == (*@)
(tuple with slurpy segment only)
but I want to be able to define tuples recursively 17:16
so we don't get things like zip4, zip5, etc.
like, (a, b, c) eq (a, (b,c))
but I'm not sure what the ramifications of that are
it'd be like ocaml right-associative * 17:18
er, left-associative 17:19
no, right-associative
:-)
autrijus :)
have you used parallel comprehensions?
luqui nay 17:20
autrijus ah. that lifts the need of zip*.
[ x + y + z | x <- stream1 | y <- stream2 | z <- stream3 ]
useful stuff.
simon++ # adding sugar whenever appropriate 17:21
luqui hmm... yeah, that lifts zip* in particular 17:22
but it doesn't solve: instance (Ord a, Ord b) => Ord (a,b)
instance (Ord a, Ord b, Ord c) => Ord (a,b,c)
etc
hmm? 17:23
autrijus yeah, but that may be good from a typechecking property
eg: in this puzzle: 17:24
begin = ($ ())
push s x = ($ (x, s))
add (x, (y, s)) = ($ (y + x, s))
end (x, ()) = x
begin push 3 push 4 add end -- evaluates to 7
if you manipulate stack incorrectly
then it won't typecheck.
like "add" with only one number on stack
luqui doesn't follow 17:25
autrijus oh ok. this trick is abusing the fact that (a, (a, ())) is akin to a list albeit with potential heterogenous data and is typechecked separately 17:26
but in p6, while you can limit an array to store stuff with a certain type, I don't think you can limit it to only store three items with three types 17:27
if you could, that'd be a tuple.
luqui right
theorbtwo You could, however, type to a coderef that returns three things of three given types, no? 17:28
luqui not really, no
not without a tuple to return
svnbot6 r7343 | iblech++ | * perl5/Perl6-Container: Perl6::Container::Array: 17:29
r7343 | iblech++ | Fixed .perlification of arrays ("..." -> "..", ($only_one_item,).perl ->
luqui or did I misunderstand you theorbtwo?
svnbot6 r7343 | iblech++ | "($only_one_item.perl(),)" (instead of "($only_one_item.perl())", which is
r7343 | iblech++ | not an array), and call .perl for each element).
r7343 | iblech++ | * t/builtins/perl.t: Added appropriate tests (and updated force_todo
r7343 | iblech++ | accordingly).
autrijus sub blah (Int --> (Int, Str, Foo))
svnbot6 r7343 | iblech++ | * PIL2JS:
r7343 | iblech++ | * jspugs.pl: Don't die when directly evaluating :e $syntax errors.
r7343 | iblech++ | * jspugs.pl, PIL, PIL::Subs: Reduced verboseness.
autrijus which is why I'm not sure why you'd hijack comma into (+)
feels terribly confusing
theorbtwo Oh. Right, nevermind. 17:30
You can type to a code that takes those three arguments, but that's not useful.
luqui autrijus, yeah, I think he just wanted to make it easy to specify union types
autrijus *nod*
luqui which probably means he doesn't realize how useless union types are
autrijus er, why? p6 has typecase 17:31
and with typecase union types are perfectly fine.
luqui no, I mean how useless it is to actually type (with a keyboard) a union type
autrijus it's just hellishly hard to typecheck, and requires user annotation, and is nonpredictive even so
luqui they're useful for the typechecker to know about
autrijus oh. heh.
luqui autrijus, oh, really? 17:32
can you think of a way around that?
autrijus luqui: pierce says, basically, "follow what CDuce had done" 17:33
so I reason it must be an accomodatable problem.
luqui looks at CDuce 17:36
luqui sees XML and cringes, but continues on into the cave
eric256 hmmm anyone know how i use darcs to commit the changes i made to TTH?
geoffb What's the url of the irc logger again? Haven't needed to use it on the new box before today . . . . 17:37
luqui in the subject
er
no
not anymore
autrijus eric256: darcs rec
geoffb luqui, I did check there first. ;-)
geoffb feeling like interleaving chat and backlogging, which xchat seems suboptimal at 17:38
eric256 hmm..i think that wored...the patch looked a little crazy though
geoffb Needs split view . . . .
autrijus geoffb: colabti.de/irclogger/irclogger_log/perl6
I'm setting up irc.pugscode.org now. etc
geoffb thanks, autrijus
THANK YOU
autrijus or should it be logs.pugscode.org
geoffb having everything under pugscode.org is much better
luqui irclogs? 17:39
autrijus too long
irc. it is
geoffb heh
nothingmuch, what is the "hoo-hah Damian made regarding his 1 million dollars & 12 modules"? 17:40
luqui guesses pbp
geoffb I'm having a hard time imagining making a million bucks on a tech book 17:41
Java In a Nutshell, MAYBE
luqui guesses it was an exaggeration 17:42
Khisanth geoffb: maybe for the publisher :) 17:43
luqui CDuce's manual starts off with a paragraph explaining types that could have been written by me about Perl 6 :-)
i.e. it thinks the way I do
geoffb Khisanth, I bet O'Reilly would be a much happier man if he made $1e6 on PBP . . . . :-) 17:44
eric256 geoffb - nothingmuch isn't around right now. ;)
geoffb the bastard!
eric256 thats what i said. lol
Khisanth I meant if O'Reilly made $1million
geoffb Fills up the morning logs every day so it takes forever to backlog, and then not here when I need him. 17:45
Lazy, that's all it is.
eric256 hehe.. lazy and rude if you ask me! the gal
geoffb Khisanth, that's what I meant. From what I hear, O'Reilly makes less than most people think.
theorbtwo Redirect port 6666 of irc.pugscode.org to some-approprate-IRC-server, or make it speak enough IRC protocol to give a "this isn't the droid you're looking for" that clients can understand?
Khisanth 6667 :) 17:46
autrijus luqui: good, so I hope it can help :) 17:48
PerlJam wonders what most people think of O'Reilly's profit (or income if you're talking about the man)
Khisanth was refering to the company 17:49
geoffb I think there's a general impression that because they sell books out the wazoo, that ORA is extremely profitable.
autrijus luqui: neither CDude nor Scala do the sort of incremental typing thing perl6 does tho
luqui: I think our best bet is Dylan
geoffb And in bits and pieces I hear that that is not so.
autrijus for stealing that.
luqui incremental typing? 17:51
PerlJam geoffb: Well, if they'd stop blowing all their money hosting conferences and such ... ;-)
geoffb heh
Man, conferences are *SO* expensive! 17:52
autrijus luqui: start out dynamic and revert to static when there is annotation
luqui: have a type-staticness propagation strata, backed up be an inference phase after tht
s/tht/that/
luqui that's what I thought you meant 17:53
I don't see that as much of a problem though
but maybe it's more subtle than I'm thinking 17:54
autrijus it is far more subtle :)
if it's easy, other languages would adopt that, and we won't have the huge gap of static/dynamic camps. 17:55
geoffb Beware of anything autrijus calls subtle . . . .
autrijus luqui: previous attempts are mostly either too "soft" 17:56
luqui thinks of dynamic like "taint", as in, give this value a type, and if it is used like a subtype of that type, then insert a runtime check
luqui listens attentively
autrijus aye, that's what soft typing is about
coercing/runtime checking whenever the compiler cannot deduce unification
luqui either too "soft", or... 17:57
autrijus problem is that, it's really too soft; the strengh of HM type systems 17:58
is that even if you don't write out types
the compiler can still catch patent errors
most of the time.
luqui right, but we don't want the typechecker to catch patent errors in dynamic mode
autrijus ah, but there is no dynamic mode.
luqui because nobody can understand the typechecker's language
autrijus there is one for each compilation unit
if CGI.pm is declared static 17:59
do we still force it into the dynamic mode?
luqui no
autrijus so we have various modules of various staticness.
luqui we insert checks at the boundaries to calls into CGI
PerlJam sounds expensive.
autrijus right, but it's more subtle than that. Haskell for example has the type "Dynamic" 18:00
which captures your view
luqui ahh
luqui has seen Dynamic
autrijus there are two problems with it, though:
one, Dynamic is essentially a value packed together with its type representation
and as such allows no polymorphic types
i.e. you can't pack a lambda with a polymorphic type into a Dynamic
as you can't give it a type representation 18:01
two, Dynamic is either/or;
luqui right, because of the fallicious phrase "its type representation"
autrijus it does not allow the "morph" semantics of many perl5 values
where a value is of one type, can be seen as some other types, but should be caught in compile time if used as some other types. 18:02
with union/intersection/constrained types, we can better represent those
luqui uh, example?
(in particular, "should be caught in compile time")
autrijus hm, just a bad example 18:04
$ perl -cwe 'chr "foo"'
Argument "foo" isn't numeric in chr at -e line 1.
$ perl -cwe 'print chr reverse "foo"'
-e syntax OK
now, perl5 is really adhoc, so you see weird discrepancy here.
nothingmuch search.cpan.org/~jjore/Regexp-Named...aptures.pm
autrijus even worse, you can't write your function as such that it will warn like chr.
luqui didn't know about that chr behavior 18:05
luqui wonders if there are more important examples of that
autrijus all numeric operations do
theorbtwo chr is getting run at compile-time for constant-folding in one?
luqui theorbtwo, of course! 18:06
luqui wonders why reverse isn't, though
nothingmuch hola luqui
luqui hi nothingmuch
autrijus theorbtwo: yeah, my point being for perl5 the constant folding _is_ the type checking
there is no other kinds of type information beyond constant types 18:07
theorbtwo Ah, OK.
luqui (theorbtwo, fyi, "of course!" was an ephiphany, not a confirmation)
autrijus so the closest of type errors for p5 is "Can't use %s ref as %s ref" 18:08
nothingmuch or you could see it as everything is the tagged union that is SV
autrijus but that applies to a closed set of five intrinsic types
luqui nothingmuch, SV isn't tagged union
autrijus and there is just no way you can extend those.
nothingmuch it behaves like one
luqui perl -le '"3" + 4'
nothingmuch it has tags wrt the type a piece of data is
autrijus luqui: SV is tagged union :)
luqui well, yeah
autrijus remember SvTYPE?
luqui it doesn't quite behave like one 18:09
nothingmuch and there are automatic runtime casts on runtime type errors
luqui okay okayy
luqui agrees
nothingmuch autrijus: err, one more thing that is somewhat typeful:
my __PACKAGE__ $var - under use fields
it will cause ->{key} to be checked at compile time
luqui but nobody thinks about/uses that
nothingmuch it should make a comeback in 5.10 18:10
autrijus ...unless you write XS
in which case you think about that all the time.
nothingmuch when it's no longer the shitty pseudohash impl
luqui doesn't write XS ;-)
nothingmuch wait, what is "that"? the fact that it's a union type? or that nobody uses fields?
theorbtwo Oooh, that's nifty, nothingmuch.
autrijus nothingmuch: union types
luqui I was referring to fields 18:11
autrijus ah. :)
nothingmuch charges ipod for bike
autrijus but I bet it's container type tag, not value types 18:12
theorbtwo nm: Your ipod can drive a bike?
Nifty!
luqui likely so
autrijus so the typecheck does not extend beyond assignment
nothingmuch theorbtwo: not the bike you drive, the bike you ride
autrijus which means you need to write java :)
luqui anyway, where were we?
autrijus (i.e. sprinkle __PACKAGE__ everywhere)
luqui ahh yes, constant folding eq typing in perl 5
autrijus luqui: anyway. so, "optionally static" typing. 18:13
luqui and how that is not good enough for perl 6 in dynamic mode
and how I don't understand why
theorbtwo This is s a test. 18:14
Sorry. 18:15
autrijus luqui: okay, let's use code.
first, is the "dynamic mode" a switch? 18:16
if I start using annotations, does this "dynamic mode" somehow ignore them?
luqui I think it implies the absence of inference mode
autrijus my IO $x = "456"; 18:17
luqui autrijus, I think it starts inserting checks
autrijus under dynamic mode this compiles?
luqui uh
nothingmuch thinks that:
luqui hmm
autrijus sub foo (Int $x --> IO) { 1 }
say foo();
under dynamic mode this compiles?
nothingmuch explicit annotations may never be ignored
luqui nothingmuch, define ignored
autrijus what about:
our (Int $x --> IO) &foo ::= sub { 1 };
say foo();
does this compile in dynamic mode? 18:18
nothingmuch if a folded constant is assigned to a type that dies at compile time
autrijus I hope I could succeed in shattering this dualism :)
the fact would be, some constructs will be annotated, some would not, inside the _same_ compilation unit.
nothingmuch if a strongly typed rvalue (explicitly typed) is assigned to an incompatible strongly type other thing - that also dies at compile time
luqui autrijus, okay, you've got me thinking
nothingmuch --> is an explicit request to carry this across sub boundries
that's where it stops
luqui in particular, I think we need to define the semantics before we start thinking about how we should implement it :-)
nothingmuch until you 'use typecheck' or something like that 18:19
PerlJam autrijus: thus "dynamism" or "staticism" is just another annotation of the type system! ;)
autrijus luqui: verily! so, go read those CDuce and Dylan papers and get others reading them :D
luqui is reading CDuce now
and has Dylan bookmarked for soonness 18:20
nothingmuch will read too when returning from bike time
*sigh* so much to do, so little brain
luqui that could be adopted as a mantra if it weren't so depressing 18:21
Dylan has a lot of semicolons 18:23
autrijus iirc dylan had a "production mode" that takes longer to compile
does inference
and generally likes annotations
and a "loose mode" that ignores _every_ annotation
and push them into runtime checks. 18:24
that is a switch, but the loose mode would be very very loose.
nothingmuch is that a good thing?
luqui can't find a manual for Dylan, just the tutorial
nothingmuch thinks that if the user actually bothered to annotate they should get at least limited compile time benefits
luqui true 18:25
autrijus nothingmuch: but... when you import from any module that has types
then you import their annotation also
nothingmuch yes
autrijus so even if you don't annotate yourself
there are still info there
nothingmuch i think that's a good thing
luqui but Larry convinced me that compile-time checks are not always better
nothingmuch it's like Params::Validate
autrijus luqui: I think blanket sentences are not always better :D
nothingmuch luqui: for more than just performance?
ooh! i almost forgot!
luqui: in llast weeks meeting there was a sentance... "didn't you promise not to expose continuations" or something like that 18:26
luqui nothingmuch, yeah, because you have more information at runtime, so you can give more informative error messages
yeah
autrijus luqui: I love perl's ability to lie to the compiler and negotiate with it and abuse it and main it
nothingmuch why are continuations not a good thing?
luqui I didn't care. I like continuations.
nothingmuch luqui: yes, but:
a. there is progress towards improving type annotation related errors
luqui Larry just said he wanted you to have to yell in order to use them. 18:27
nothingmuch b. bad errors can be dumbed up
luqui autrijus, that too
nothingmuch and delayed very easily to runtime
autrijus s/main/maim/
nothingmuch: the gap runs wide and deep :)
luqui autrijus, well, "that too", as in it can be taken either way 18:28
nothingmuch luqui: ++wrt continuations
autrijus but I think VB9 is definitely a good step toward reconcilation.
luqui nothingmuch, that assumes that we define loose semantics
which I think is probably important in genera
general
nothingmuch if 'no typechecking' then explicit typechecking can be ignored
luqui that is, we don't start guaranteeing what gets checked at compile time and what gets checked at runtime
in fact, that could be a very important decision 18:29
nothingmuch 'use typechecking' - everything at compile time for a scope
luqui because we could start with a really stupid type checker and make it smarter as the years progress
nothingmuch (can be a switch for global)
luqui nothingmuch, you have to define everything before you say that
nothingmuch 'no typechecking' - type checking ignored for a scope
type annotation - some type checking performed where convenient and fast
autrijus luqui: the problem with that approach is that we will _break_ instead of _allow_ more programs for each release :D 18:30
luqui hmm, crap
autrijus (for static languages generally it's the other way around.)
luqui yeah, because typechecking is always an approximation
and one of perl's great sucesses has come from its backwards compatibility 18:31
nothingmuch i think we can allow ourselves to break it for a while till it stabiliizes
when the semantics are good enough, it should be locked down in terms of behavior
luqui nothingmuch, true, but typechecking is under active research
nothingmuch and improved only optionally
luqui and we can't expect ourselves to do it perfectly by, say, 6.2
nothingmuch not perfectly - extensibly
use typechecking is always smartest 18:32
annotations are "good enough"
with new syntax for better annotations introduced later
etc etc
this can be done
like new keywords in recent perl 5s
features can be slowly deprecated
luqui that melds somewhat nicely with autrijus's point
nothingmuch and slowly introduced
which of autrijus's points, the one about running more programs?
luqui annotations (with "no typechecking") only fail when we're sure it won't work ever
nothingmuch right 18:33
like assigning a constant to a bad container
luqui but use typechecking is conservative, so we gradually allow more and more programs under that
but we get this wide gap
autrijus aye. *sigh*
luqui and it will be very hard for someone to add "use typechecking" after the fact
nothingmuch we want a wide gap
but with a gradient
that's the whole point of perl 6 - you get the choice of all things, in the same code base 18:34
luqui exactly, and I'm saying there's no gradient. quantum mechanicsesque
nothingmuch we could have levels of stricness like the warning categories
luqui nothingmuch, that's a good idea, but show me where
how can you be semiconservative?
while keeping backwards compatibility in all places?
nothingmuch semiconservative is WRT boundries
autrijus -fglasgow-exts -fallow-undecidable-instances -fno-warn-orphans -funbox-strict-fields
nothingmuch how deep would you like inferrence to run
autrijus ;) 18:35
luqui autrijus, :-)
nothingmuch decidable-instances? warn-orphans?
autrijus nothingmuch: see GHC manual for them... they are OT
nothingmuch okay
luqui the thing I'm thinking comes from the "allow more programs" point 18:36
autrijus Haskell folks are good at introducing this kind of knobs
luqui you can only ever allow more programs
autrijus with each knob, the original behaviour is preserved
luqui so you either have to be entirely dynamic, or be as conservative as possible
nothingmuch luqui: no, i disagree
autrijus and you can turn the knob to get new behaviour
nothingmuch by using versioning you can ask to impose more type checking
that is - if you 'use typechecker v1.2.3'
autrijus and after a few years, a community consensus of knobs-we-always-want becomes a new language standard, etc.
nothingmuch then that means you can use the 'more programs' features of 1.2.4, but not he less programs features 18:37
also, the language must still evolve, even as a standard
luqui but must always maintain backwards compatibility!
nothingmuch luqui: yes
luqui nothingmuch, I like the idea
but for some reason I keep thinking that a typechecker is not a "feature-based" program 18:38
nothingmuch i also think ti's not taboo to even release perl 7 if major breakthroughs in type checking emerge
it could look and feel pretty close to perl 6
but have different compile time semantics
luqui I've never written one, but I think that you can't mix-and-match typechecker features, because each feature changes the algebra
nothingmuch so it's not really compatible, and people will know that
luqui it's not a question of whether people know it 18:39
nothingmuch luqui: in milner.pl i am thinking (but have not yet gotten to) about some extensibility
luqui it's a question of whether their programs keep running
nothingmuch mainly that you have a new type() attribute for new kinds of AST nodes
and a new 'multi unify' for new type operators
i added parametrized types incrementally
i would like to add typeclasses incrementally
then inheritence incrementally
and finally theories replacing most of these
and it looks as if it will work
luqui thinks should write a small type inferencer before arguing this kind of thing 18:40
nothingmuch you should read milner.pl
luqui can't read
nothingmuch it was really fun and enlightening
how come?
luqui I read by doing
nothingmuch ah
luqui I suppose I could take that approach
by screwing with milner.pl
nothingmuch i am very happy with multimethods + ags
multimethods unify types
AGs create type variables going down 18:41
and call unify() based on how nodes imply that things should be unify
luqui MMs are great for unification
nothingmuch for example, comb (which applies functions) first unifies the type of the function with (a -> b)
luqui er, other sorts of unification at least (the kinds I've done)
nothingmuch to make sure it's a function
and then it takes the left side, and unifies with the type of the param
autrijus thinks AGs lets you get 80% of monad's power with 20% of effort.
nothingmuch and the right returns the right side after unification 18:42
luqui autrijus, interesting perspective
autrijus downside is you can't define your own monad
with AGs, but then, few people do that.
nothingmuch this is really nice because the AG attr cares only about combs, and the unify code can take any type, as long as it can unify with the function type
luqui nothingmuch, do you do subtype unification? 18:43
nothingmuch luqui: no subtyping yet
luqui or is it strict unification like haskell?
okay
nothingmuch there is type::operator::nullary (int, str, etc)
type::operator::binary (arrow, cartesian product) 18:44
type::operator::nary (list <type>, ...)
to implement subtyping i will implement a new type operator
which has more data in it
luqui okay
nothingmuch including wiring to an inheritence table
and then just unify over that
luqui well, I should stop talking now. it's hard to stop, but I have a big paper to write by Friday 18:45
nothingmuch which is nice, because nary and binary won't have to change to parametrize over that
luqui then my mind can be clear for the weekend
nothingmuch good luck
autrijus have fun
luqui uh, I'll try
adios
nothingmuch if i have '[ 1, 2, [3, 4], 5, [6, 7]], what's a concise algorithm to explode thaat to [1, 2, 3, 5, 6], [1, 2, 4, 5, 6], [1, 2, 3, 5, 7], [1, 2, 4, 5, 7]? 18:47
autrijus was about to say "ill-typed" before realizing this is perl5 18:48
pdcawley Higher Order Perl probably has something that'll serve.
nothingmuch yes, it is =)
pdcawley grins, or, just implement a Non-deterministic search and have done with it. 18:50
nothingmuch is hoping for a CPAN module =)
pdcawley Ah.
Can't help you there.
geoffb nothingmuch, you might want to look in the nested_loops files in pugs . . . . 18:52
autrijus reduce { [map { my $_a = $_; map { [@$_a, $_] } (ref $b ? @$b : $b) } @$a] } ([[]], @args); 18:53
or something along that line.
the lack of pointies hurt a lot. 18:54
(or implicits)
nothingmuch aye
autrijus++ 18:57
autrijus what, that worked?
autrijus is surprised 18:58
nothingmuch perfectly =)
autrijus I'm better than I imagined :)
geoffb EIMAGINATIONTOOSMALL
nothingmuch geoffb++; autrijus++
woosh 19:00
nothingmuch stops $work work for this evening
did I mention I love closures?
and that perl can emulate 'foo x = bar where bar = ...'?
sub foo { my ($x, $y, $z) = @_; sub bar { use $x, $y, $z } } 19:01
now i just need to see if that actually works
shyte 19:02
eric256 he nothingmuch....i beleive i submitted a patch with output_dir($dir) ...beleive because i'm not sure the submitted wored
nothingmuch perl 5 can't do it
geoffb Closures: once you understand them, you wonder how you ever lived without them
nothingmuch eric256: darcs send?
did I mention that perl needs to be able to emulate 'foo x = bar where bar = ...'?
eric256 darcs record
i can try send though
wolverian nothingmuch, local *bar = sub { ... }; # works? 19:03
nothingmuch eric256: since every working directory is a repository in darcs, you just committed to your local thingy
wolverian: sure
you can also $bar = sub { }
it's just not as cool
wolverian nothingmuch, right, I mean using the variables
eric256 sending
wolverian yeah
it's not :)
nothingmuch eric256: when you darcs send it's like svk push
wolverian I think this bug is fixed in blead though
autrijus local named subs is leaky no?
eric256 target email address?
autrijus or "won't stay shared"
wolverian (read something like that on p5p some months ago, or weeks)
autrijus, right. 19:04
geoffb rafl, sorry, still backlogging: about the debian/ changes -- I need to work on $work pretty heavily for the next week, so I'm not going to be much help this release. That does not make me happy. :-(
nothingmuch needs currying 19:05
UGH! i want perl 6
eric256 dont we all
nothingmuch haskell has spoiled me into expecting such cool things from perl 5
autrijus nothingmuch: Perl6::Curry
you can find everything from Perl6::*
nothingmuch yeah, i know about those
and they're nice
autrijus except they don't play together with each other.
nothingmuch but they don't make maintainers feel very good
and as for the currying: 19:06
autrijus yeah, maybe we should rename those to Zapot::*
nothingmuch i would really like 'my &code := &sub.assuming()', not a variable thingy
autrijus or Ybur::*
eric256 nothingmuch: it asked for a target email address?
nothingmuch [email@hidden.address]
eric256 now has more apprication for svk/svn ;) 19:07
autrijus eric256: in all honesty, there is "darcs push" too. 19:08
but it's rather harder to setup.
eric256 ahh... yea cause that actualy used my outlook client...which i'm not exactly thrilled by
autrijus wow, it uses MAPI? carzy 19:09
svnbot6 r7344 | autrijus++ | * The main Pugs API entry, for crazy people who'd like to use
r7344 | autrijus++ | Pugs in embedded applications.
eric256 thinks we need packages in the Grok::* namespace...dunno what should go there ;) 19:12
nothingmuch autrijus: for darcs push I would need to give eric256 ssh to pasta
which is not a problem 19:13
eric256: would you like to push directly to my box?
eric256 it would seem easier ;)
autrijus Grok::Law
nothingmuch beh
eric256 did you get a chance to glance at that patch? i'm not sure but i think it sent the whole file as a patch, a lot more scrolled by on my screen than just what i edited...though it possible my editor screwed it up 19:14
nothingmuch if people don't understand what exceptions with continuations are good for, they should just not use them
eric256: i'll have a look at the idff
diff
autrijus I wonder if I can trick nothingmuch into hacking resumable continuations into GHC. 19:15
but then, C runtime system is probably not nothingmuch's forte.
pdcawley nothingmuch: Dead right. 19:16
autrijus but Oleg convinced me that all monad transformer's space/time behaviour will be much improved (less thunks hanging around) if GHC supports ContT natively.
autrijus goes back to releng
nothingmuch get Oleg to do it then =)
i can try 19:17
autrijus it's not oleg's forte either :)
nothingmuch i grok how to implement stuff on the assembler level
but i don't grok:
resumable continuations
GHC core
pdcawley Deep C Secrets is rather good on the C runtime...
nothingmuch ContT without resumable continuations
autrijus er, I mean resumable exceptions.
$!.resume.
nothingmuch and i only get by with C
ah
autrijus adding "resume" to the catch/throw pair in Control.Exception. 19:18
nothingmuch hmm
i bet 99% of #haskell is more qualified than me
autrijus ...99% of #haskell is afraid of touching GHC core. but anyway :)
nothingmuch eric256: woo, that's a big patch
eric256 yea i didn't think it worked right 19:19
just like 15 lines of code.../me hits his editor with a stick
nothingmuch it - and +'d the whole module and example
could it have added dos line endings?
eric256 checking now
likely...very likely
nothingmuch eric256: you can 'darcs unrecord'
or 'darcs amend-record' if you've fixed it 19:20
also, no need to record changes to the example
did you get my /msg, btw?
dduncan morning-ish 19:21
nothingmuch hello, dduncan
search.cpan.org/~tmoertel/AutoCurry...toCurry.pm 19:23
eric256 okay on unrecord...i just want to unrecord mine and finish...but it keeps asking
nothingmuch eric256: i forget what next
but hitting '?' will tell you
there is 'finish with only selected patches' or somesuch
eric256 thanks...had the help up..but it assumed i knew too much.
nothingmuch ? 19:24
eric256 when it said "selected patches" i didn't realize that it considered me to be selecting patches as I went. just unfamiliar teritory 19:25
nothingmuch ah 19:26
eric256 okay...thats better 19:28
autrijus yay, cabalization complete. now shifting Makefile.PL to play with that... 19:29
(so "make install" will install into perl5, perl6 _and_ haskell sitelibs) 19:30
nothingmuch hah
svnbot6 r7345 | autrijus++ | * Pugs, cabalized. This now works: 19:36
r7345 | autrijus++ | ./Setup.lhs configure
r7345 | autrijus++ | ./Setup.lhs build
r7345 | autrijus++ | ./Setup.lhs install
r7345 | autrijus++ | and you can "import Pugs" in your Haskell programs.
r7345 | autrijus++ | Much thanks for SyntaxNinja's walkthrough.
wolverian autrijus, .lhs? left hand side? :) 19:38
eric256 literate haskell 19:39
wolverian oh, thanks
eric256 comments are the norm, code has a prefix... > i think
wolverian right.
eric256 is proud of his new found knowledge ;)
nothingmuch it's a hack to glue bash and haskell together? 19:40
wolverian wow, there is no Literal.pm on CPAN? boggle
nothingmuch eric256: i'm going to go biking now, if you still want a login /msg me with it
wolverian: there should be
autrijus even wrote one
wolverian then it's not called Literal
nothingmuch oh, literal... i thought you wrote literate
autrijus wolverian: search.cpan.org/~autrijus/Filter-Li...ents-0.01/
wolverian oh 19:41
joao hello, good evening
wolverian (CPAN search)--
autrijus, thankyou
nothingmuch hi ho joao
eric256: thanks for the patch!
i'll fudge it slightly though
eric256 np....nothing special
wolverian autrijus, nice, vim file too. autrijus++
19:42 TPmG|mgwmp is now known as mugwump
eric256 i figured you would. ;) once you saw mine you'd haev to take time to fix it. ;) its a special form of motivation 19:42
autrijus that was written the day I first start learning Haskell, in Hualien
nothingmuch hola mugwump
autrijus and I commented to obra that this syntax really changes one's mindset about programming
sadly I still didn't use lhs mode much.
wolverian well, POD itself is already halfway there
autrijus but it is still more effort to write doc. 19:43
nothingmuch i am never forget the day i first date rape eric256.
mugwump hi nothingmuch ...
autrijus lhs punishes coding.
wolverian true.
nothingmuch in one patch he send me secret of success in CPAN!
eric256 what can i asy, i leave an impression
autrijus nothingmuch: wow!
autrijus congrats nothingmuch for his accurate hackdar for picking victims^Wpartners 19:44
nothingmuch i have a friend in 10.209.144.1, who has a friend in 192.117.236.89
wolverian autrijus, btw, why does your name have smileys in it on CPAN?
nothingmuch .... yadda yadda yadda for around 25 hops ...
autrijus wolverian: they say, "don't panic if you can't parse Han characters."
wolverian oh, heh. :) nice 19:45
joao what's the big deal about literate programming?
nothingmuch whose friend some how submitted now the patch in <eric256>'s ip
and when his work his done, haha begins the fun
...
blah blah blah, yes to me the patch will run 19:46
eric256 reads "but properties" on the mailing list and has a difficult time supressing giggles
nothingmuch and then i apply, by morning, night, and afternnon, and pretty soon, the drug will pass
nothingmuch doesn't know how to continue
eric256 figures you wouldn't know what to do once the drugs have worn off...i keep telling you, this is why you are single....lucky bastard. ;) 19:47
nothingmuch =)
you can disown them if they're that expensive, you know
kick them out till they get a job =) 19:48
how old are your kids?
eric256 she's almost 2...i don't thinl she's going to get a job anytime soon. lol
nothingmuch that's old enough for TV commercials
PerlJam eric256: you know child labor laws don't apply for a family business.
eric256 although my wife wants her to model...and we've been approached for something along those lines, but that just seems like child abuse ;) 19:49
nothingmuch child abuse shmild abuse
joao eric256, make them volunteers for spatial experiences ;-)
nothingmuch that girl needs to buck up and learn to work for her meals
woah, traceroute to eric256 still hasn't finished
autrijus eric256 is good at stealth it seems 19:50
nothingmuch eric256: please add youself to authors too
yeah, /me didn't notice hops 19-37 were all dead
only the numbers popped up from behind another screen
stevan hey guys :) 19:51
autrijus greeting stevan-san!
stevan autrijus: issues with eigenclasses for use as class methods,.. care to discuss?
autrijus sure, go ahead
svnbot6 r7346 | autrijus++ | * boolIO and boolIO2 is no longer referenced; they are gone.
autrijus I see the lovely ::Eigen
but had not really looked deep
was busy with cabal
(the haskell kind)
stevan ok,.. the basic issue is that the methods added into the eigenclasses are not inheritable (though the normal mechanism) 19:52
eric256 i doubt you will be able to trace back to me...i'm behind at least 2 firewalls ;)
firewall/router/nats ;)
of course you can get my public IP...but its probably shared with 100 other people at the moment. hehe 19:53
PerlJam stevan: "added into" the eigenclass? When does this adding take place? Or do you mean that all methods of eigenclasses are not-easily-inheritable?
nothingmuch =)
at least they let you IRC behind all that
stevan because the normal method dispatch will check for methods in it's superclass, but not for methods the class instance itself respoinds too 19:54
eric256 amazingly enough it all seems to work. its probably just all a sales pitch and i'm realy nakid on the internet
lol
autrijus stevan: inheritance copies singleton methods over for classes? 19:55
obra autrijus: do most cabal packages end up with nice clean APIs?
autrijus obra: there are very few of them (<50), so yes. it's not CPAN ;)
(yet)
obra I was actually wondering about a mixture of Inline::Haskell and a CPAN.pm shim
autrijus obra: also, ghc handles multiversioning a bit better than p5. 19:56
stevan autrijus: I was thinking if Foo has an eigenclass and Bar is Foo, then Bar must get an implicit eigenclass which itself inherts from Foo's eigenclass
however this has issues too :)
obra cpan install Cabal::SYCK
autrijus obra: that can work, yes.
obra To pick a syck example
autrijus groans
obra Woot!
autrijus stevan: hm, what is the issue for implicit eigeninheritance? 19:57
(gawd, we must be the only bunch of people who actually _uses_ why's silly terminology)
obra And see, when Why talked about eigenclasses, he was KIDDING
nice timing.
His claim was that it had been a joke
autrijus obra: joke has ways to turn into real code. 19:58
just look at Psyche and Pneuma.
obra ?
autrijus obra: svn.openfoundry.org/pugs/perl5/Per...del2.0/lib
note how stevan ranted for an entire screen 19:59
justifying the choice of the name "Psyche" for roles
# psyche is the sensuous soul, meaning "relating to, or derived
# from the senses". Think of Roles like you might think of Duck
# typing, but extend the metaphor to encompass all the senses.
wolverian heh.
obra Jokes and puns turn into the best code 20:00
autrijus so, eigenness fits right in with the crazy greek mythology.
stevan :) 20:01
wikipedia++ # cause I am no gnostic :)
so the issue with the implicit eigenclass inheritence is as follows: 20:02
class Bar is Class {}; class Foo metaclass Bar {}; breaks things
beacuse the eigen method lookup now goes from eFoo -> Bar 20:03
(lowercase e meaning eigenclass)
autrijus yup
stevan if you add class Baz is Foo {}
Baz gets an implicit eBaz which inherits from eFoo 20:04
autrijus yup
stevan so eBaz method dispatch now goes from eBaz -> eFoo -> Bar
autrijus (->Class)
but yes
stevan yes,.. I was leaving class out to simplify :)
so,.. robkinyon and I have worked out a way to get around this 20:05
but I think it is insane
in a bad way :)
it basically injects a third layer in there
autrijus sorry, but how does eBaz->eFoo->Bar break things for eigenmethods of ::Bar?
eric256 random thought of the hour: a cool project could be a graph of the number of lines of code in the pugs repositroy (possibly with different file types .hs, .pl. pm. p6l seperated out)
autrijus I mean for ::Foo 20:06
stevan it "breaks" for ::Baz because ::Baz is now exposed to methods in the metaclass ::Bar
Baz being the subclass of Foo
autrijus "exposed to", as in, "able to be called with" 20:07
stevan yes
autrijus and the problem of that is that metaness and eigeness are mixed together.
stevan yes
autrijus I think I see. go ahead with your Third Reich
I mean, third layer
stevan :)
well i think the third layer can be removed
and we dont need to do it
if ................
we change how metaclass's behave 20:08
meaning when you subclass Class, then use that as the metaclass,.. we make that behave as we would eigenclasses 20:09
meaning,.. they are inherited
autrijus wait wait
if I meta Class::Sub
you say eI will inherit from Class::Sub? how is that different from the previous arrangement?
stevan class Bar is Class {}; class Foo metaclass Bar {}; class Baz is Foo {}; 20:11
autrijus greetings rob-san
robkinyon greetings, autrijus-san
stevan Baz has an implicit metaclass of Bar
like with the implicit eigenclasses
autrijus ah I see 20:12
so you carry both meta and eigen over
stevan yes
autrijus hen you subclass something
unless of course you override them
stevan yes
autrijus class Baz is Foo meta Blah
okay, I think that is clean and intuitive.
stevan hmm
MI :)
autrijus screams in pain
stevan I think that through the use of eigenclasses,.. you can mimic most "subclass of Class" features 20:13
rob disagrees :)
autrijus so with MI, we C3 over eigens and their parents
what's wrong with it?
robkinyon i disagree vehemently
autrijus surely the inheritance order for surface classes is the same as their eigens?
stevan we end up with parallell hierarchies (ala Smalltalk)
robkinyon of course, that's because i want my classes to maintain state because they're "just objects that make objects"
stevan thinks robkinyon has been coding too much Javascript :P 20:14
autrijus robkinyon: er, yes, that is so; "my @.foo" is essentially "has @.foo" in the eigen
mugwump where can I read about eigenclasses?
autrijus mugwump: google for "singleton class" and "ruby"
nobody but us really use the "eigen" name ;)
mugwump heh 20:15
robkinyon just had a brainblast
autrijus etymology: "eigen" meaning "one's own", as in, "a class that is just for the object"
robkinyon one sec
stevan robkinyon is scribbling on paper at the moment,... we will be right back
autrijus enjoy your time with advanced analog high-res technology 20:16
mugwump right ... I thought it was like some kind of junctive hyperthreading metamodel. which scared me
gaal hello 20:17
stevan mugwump: that is MM 3.0 :) 20:18
robkinyon actually, i was about to get to junctive hyperthreading
i need it to write my sudoku solver in under 20 lines
eric256 wonders if robkinyon and stevan are just two eingstates of one person. ;)
autrijus mumbles the sudden surge of logic programming due to sudoku
robkinyon stevan was wondering if i wanted to respond to that, eric256 20:19
however, i can't because he has the eigen-token
eric256 we need Inline::Haskell
eric256 is prone to sudden random outbursts today....no real reason or excuse...this warning will self destruct in 5 seconds 20:20
autrijus eric256: the eigenspace is just one eye that reflects the light of existence; the trip is real but we trippers are ephemeral; all hail discordia! 20:21
wolverian okay, where's the joint, I want some too 20:23
stevan *cough* what joint *cough* 20:24
autrijus the one that has "this is not a joint" written all over it
eric256 wow...wizard.p6 still runs...someone must be looking out for it. ;) or nothing much has changed since it was first written 20:26
joao I want some too, because I've found something worst than Java
autrijus resists the obviously not-funny joke about "nothing much has change". 20:27
changed, even.
yay, src/* is no longer installed at all.
that should make package maintainers happier. 20:28
mugwump is somebody packaging Perl 6 for debian?
autrijus mugwump: yes, rafl
joao: what is that is worst than Java? 20:29
svnbot6 r7347 | autrijus++ | * Integrate "make install" with cabal. Please test on win32! 20:30
r7347 | autrijus++ | This makes all the redundant ".o" and ".hs" files no longer
r7347 | autrijus++ | install into perl6/CORE/; instead, libHSPugs-6.2.10.a and
r7347 | autrijus++ | HSPugs-6.2.10.o are installed into the GHC libpath instead.
stevan Ada? Fortran? Cobol? let me count the languages .....
joao autrijus: be forced to read bad and uncommented java :/
wolverian hey, ada is a lot nicer than java.
stevan wolverian: yes and no 20:31
wolverian :)
stevan wants to state for the record that he likes Ada,.. but that does not me he wants to program in it
autrijus ditto me and lisp.
stevan ditto that for me too :) 20:32
robkinyon i want to learn lisp ... does that count?
wolverian I want to program in haskell, but I don't want to learn it. learning is painful. 20:33
joao learning is the best thing in the world :) it makes me want to live :> 20:34
eric256 learning is fun...though i'm still looking for something to apply my minimal haskel knowledge too
robkinyon write mod_haskell
autrijus robkinyon: it's there already
robkinyon heh
that's cool
is there a mod_lisP/
autrijus many many ones. 20:35
(as is usual with lisp.)
robkinyon LOL 20:36
eric256 robkinyon ....thats not my definition of minimal. ;)
robkinyon minimal relative to what? it's minimal relative to writing missile control software 20:37
PerlJam eric256: spoj.sphere.pl/
stevan writes some missle control software in Haskell and aims at robkinyon
eric256 i learned kaskell yestarday...that kind of minimal (and of course by learned i mean started learning)
robkinyon ahhh 20:38
SamB eric256: have you gotten to monads yet?
those are fun
autrijus eric256: nothingmuch implemented Forth... maybe you can implement Joy (and thereby learn another language)
robkinyon so, you don't know enough to write mod_haskell, but you know enough to write missile control software. Got it.
What about Call? That way, you could Call Joy Forth
autrijus groans!
robkinyon needs more caffeine
eric256 is this bad pun day? did i miss that memo? 20:39
stevan is pretending he doesnt know robkinyon
robkinyon hands eric256 a memo
autrijus eric256: yeah, today we switch pugs to optimize for pun
-Opun
joao main = launchMissil . getMissil seems easy O:)
SamB though I still don't know how to go about designing my own -- the last time I tried, someone else replaced my monad with a stack of two or three ready-made monads as soon as they saw it!
eric256 i didn't reach monads yet.../me considers continue the tutorial.... 20:40
integral s/./=<</
PerlJam eric256: spoj.sphere.pl has problems that are "simple" enough that you could do them.
SamB granted, I could have continued using my version, but it seemed like it would be kind of silly to do that
robkinyon are monads related to dyads?
what about triads?
PerlJam eric256: of course, many of them require IO, so that's an excuse for you to learn about monads :)
eric256 i was hoping for something pugs related but most of that seems beyond me (unsurprisingly)
robkinyon imagines that haskell has is only one part of the Tong
joao robkinyon, no, monads are related to gonads ;)
robkinyon or is it moan-ads? 20:41
PerlJam robkinyon: only where you are concerned.
robkinyon winks
SamB eric256: lots of the pugs stuff doesn't seem to complicated in the small, but sometimes I despair of ever being able to implement Self in Haskell :-(
mugwump pats SamB on the back
robkinyon Self = call_from_void( robkinyon ) 20:42
autrijus robkinyon: are you still talking with stevan about your brainblast wrt eigenclasses? :)
SamB robkinyon: the Smalltalk relative?
robkinyon <sub>talk</sub> ?
autrijus imagine robkinyon has just fork()'ed
stevan :)
autrijus or multiplex so quick that it seems like two processes 20:43
robkinyon that happened before, autrijus - remember, i'm just an eigenstate of stevan
autrijus nice trick, that.
stevan autrijus: I am trying to invoke the continuation on robkinyon but he seems to be stuck
autrijus stevan: try rebooting him 20:44
that always works
stevan presses ctl-alt-delete on robkinyon
mugwump ? Not Alt+SysRq+B ?
eric256 supresses the urge to make a joke about boots and reboot 20:46
robkinyon Boot and Reboot are in a boat and one fell out. Who's left? 20:47
autrijus who?
robkinyon s/one/Boot/g
autrijus Reboot?
robkinyon (Or, as PBP says, s{ one }{ Boot }xms) 20:48
Boot and Reboot are in a boat and Boot fell out. Who's left?
autrijus reboot?
robkinyon Boot and Reboot are in a boat and Boot fell out. Who's left?
robkinyon snickers
autrijus roflmao
eric256 lol
autrijus I think the silliness level on #perl6 has risen dramatically ever since the introduction of eigenclasses.
I blame why.
obra silly++ #It's fun 20:49
robkinyon :-)
stevan -Osilliness -Ofun -Opun
autrijus ...-Obra 20:50
autrijus flees
SamB -Wsilliness -Wfun -Wpun -Werror ;-) 20:51
obra ./autrijus -Ofun -Osilliness -Obra
joao karma haskell 20:52
jabbot joao: haskell has karma of 2
joao haskell++ # it deserves more :) 20:53
SamB karma silliness
jabbot SamB: silliness has neutral karma
obra jabbot silliness pugs?
SamB silly++ #is good way to get get ideas
obra pugs++ # fueled by insanity 20:54
joao java--
PerlJam -Owhatfunitistoride
joao karma java
jabbot joao: java has neutral karma
eric256 java--
joao No negative karmas? :)
eric256 karma eric256
jabbot eric256: eric256 has karma of 27
SamB maybe the test is wrong
karma java 20:55
jabbot SamB: java has neutral karma
SamB java++
eric256 karma autrijus
jabbot eric256: autrijus has karma of 574
SamB karma java
jabbot SamB: java has neutral karma
SamB see, test is wrong
joao ?
eric256 karma joao
jabbot eric256: joao has neutral karma
dduncan oh, that looks like fun
I'll try googling ... karmaing myself 20:56
karma dduncan
jabbot dduncan: dduncan has neutral karma
eric256 is jabbot written in p6?
dduncan karma Darren_Duncan
jabbot dduncan: Darren_Duncan has neutral karma
joao dduncan++
karma dduncan
jabbot joao: dduncan has neutral karma
dduncan how many commits has eric256 done?
heavy? 20:57
if this assessment was right, then neutral doesn't just mean zero, but any low number
autrijus karma dduncan 20:58
jabbot autrijus: dduncan has neutral karma
autrijus karma Darren_Duncan
jabbot autrijus: Darren_Duncan has neutral karma
autrijus oy.
$ svk log | grep eric256 | wc -l
57
eric256 realy?
autrijus or it just means jabbot was ignoring svnbot6
which is highly likely.
eric256 finds the idea that he has done 57 commmites a bit odd... i wouldn't have thought that many 20:59
who runs the jabbot? 21:03
obra gugod 21:04
stevan autrijus: we are still discussing eigenclass stuff
but we need to take a subway ride
robkinyon actually, we backed up a bit
we're discussing whether or not i need to email p6l and tell them the spec for class methods is stoopid 21:05
because, frankly, i think it's unneeded
completely and utterly
stevan I disagreee
:)
robkinyon which is why we're going to ride the subway
stevan it should make for an intersting subnway ride
robkinyon two go in, one comes out ...
THUNDERDOME
stevan if you read on cnn.com about someone "falling" on the subway tracks,.. you will know who won :) 21:06
robkinyon :-)
robkinyon waves
stevan we are going to get robkinyon a LISP book,.. which should set him straight :)
eric256 CNN headline: "Man throws himself on subway yelling 'damn you roby!'"
stevan signing off .... back on tonight to update re: eigen-ness 21:07
eric256 "In apparent sucide a man kills him self on the subway after having a long yelling match with himself over eingclasses"
stevan LOL
adios &
joao :) 21:08
eric256 they work/live together?
joao eric256++
autrijus eric256: they ork the same cow
joao May i paste 4 lines?
gaal sure but you can also 21:09
perlbot nopaste
perlbot Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel>
eric256 joao just spent one line aksing if he could paste 4....while i ramble on without worries. ;)
pasteling Someone at 82.155.129.104 pasted "Generating precompiled Prelude" (3 lines, 264B) at sial.org/pbot/13497 21:10
gaal you're a rambler and a gamber and a sweet talkin' ladies' man... 21:11
joao eric256, pasting is like burping in public ;)
eric256 hey gaal...didn't see you come in.. got that patch done and submitted 21:12
gaal joao: try `make clean'? i'
'm having some (other) errors too
joao done that
:(
gaal yo eric256, kewl!
joao I thought it was make unoptimized 21:13
But it isn't
make also produces the same error
gaal do you have src/perl6/Prelude.pm ?
joao yes 21:14
gaal wait no, do you have util/gen_prelude.pl
?
joao yes 21:15
autrijus there is no /usr/bin/perl ? 21:17
gaal no, that's silly of me. of course you have gen_prelude... but it's failing.
joao there is a /usr/bin/perl 21:18
This is perl, v5.8.1-RC3 built for darwin-thread-multi-2level
gaal autrijus: it's a result of gen_prelude failing, first line
ghc.exe: error: directory portion of "dist\\build\\src" does not exist (used wit 21:19
h "-odir" option.)
did you leave out dist/ ?
and: why do Pugs.sln and Pugs.cabal keep getting deleted on my box? 21:20
autrijus gaal: no, dist is supposed to be genned
I'm repairing. sec 21:21
gaal joao: please try
./pugs -CPugs src/perl6/Prelude.pm > /tmp/pppp
joao pugs: Prelude.undefined 21:22
gaal ./pugs -Isrc/perl6 -MPrelude -e 42 21:23
?
joao the same?
;(
gaal ./pugs -Isrc/perl6 -e 'say "moose?"' 21:24
./pugs -e 'say "moose?"'
and if that does work: ./pugs -CPugs 'say "moose"' > /tmp/pppp
autrijus build fix is in
please retest 21:25
joao gaal, nopes
autrijus build_pugs now uses cabal exclusively
joao svn stat <- let me see if I've ruined something
gaal autrijus: now ghc GPFs all the time. 21:26
autrijus wow wtf.
6.4 or 6.4.1?
gaal 6.4.1 but not the final release. d/ling....
autrijus no, no
I think I know hwy. fixing
joao gaal, I think the problem was mine 21:27
re'making
thanks :)
eric256 side note: can i get the elements of an any that are true? my @t = any(1,2,3) > 2; ? 21:28
gaal @ary.grep{$_>2} ? 21:29
eric256 well that defeats the puropse now doesn't it ;)
i wanted to play with junctions. hehe
gaal oops grep:{$_>2}
svnbot6 r7348 | autrijus++ | * build_pugs now uses cabal for building...
gaal oh of an *any* 21:30
sorry
PerlJam eric256: what purpose is defeated?
eric256 i thought junctions used to return the list of elements that were true
PerlJam eric256: nope. What ever gave you that idea?
eric256 the purpose of using junctions that way. ;) any(@a) > all(@b) is hard to do in a grep
PerlJam ... for starters it is what makes sense to me 21:31
and i know i've seen code like my $low = any(@a) <= all(@a);
PerlJam eric256: sure ... and $low is itself a junction.
eric256 how do i get the elements of a junction then? 21:33
PerlJam eric256: $junc.collapse I believe is the method du jour.
eric256 if so its not implemented yet. /me goes to find the document in question
PerlJam eric256: but your example would be written like this: my @t = grep { $_>2 } any(1,2,3).collapse. 21:34
Ah, according to pugs it's .values() 21:36
eric256 i don't thenk thats a better example by any strech...well maybe for the first one but not the other 2 21:40
i guess you could do my @highs = grep { $_ > any(@b) ) @a; #but thats not realy as nice as @highs = any(@a) > any(@b); 21:41
eric256 goes to see if there are already tests in place 21:43
hmmm....junction are either buggy or i'm looney 21:47
gaal autrijus: build still broken here after r7348
eric256 @eval (any(1..3) > 2).pick 21:49
?eval (any(1..3) > 2).pick 21:50
evalbot_7312 bool::true
eric256 @eval (any(1..3) > 2).values
?eval (any(1..3) > 2).values
evalbot_7312 (bool::false, bool::true)
autrijus gaal: still fixing... very tricky
joao ?eval any(1..3).values 21:51
evalbot_7312 (1, 2, 3)
joao what about 2 ?
gaal ack 21:52
autrijus gaal: eta 3min
eric256 if your asking me joao ....i have no idea. ;) 21:53
joao it's odd 21:54
any(1..3).values is (1,2,3)
if you ask the values > 2
eric256 aparently its only returning a junctino of the true false possibilties
joao oh
eric256 ?eval (any(1..3) > 2).values 21:55
evalbot_7312 (bool::false, bool::true)
eric256 ?eval (any(1..3) > 5).values
evalbot_7312 (bool::false)
eric256 but i could have sworn we there was talking of keeping the actual values that where higher../me considers implementing his own...agian. ;)
autrijus gaal: try this commit -- should help, but maybe not completely 21:56
gaal trying... 21:58
svnbot6 r7349 | autrijus++ | * another step toward complete cabalization (still not complete)
Walugo 0202,00Ok, so once i get a Socket open with an established connection to a server, the socket is $socket, how do i unpack what is coming in? 22:00
gaal Generating null Prelude... done. 22:01
No description file found, please create a cabal-formatted description file with
the name <pkgname>.cabal
(sorry about the weird linebreaks)
Walugo: just read from the socket. But you'd better ask on #perl, this isn't the right place :) 22:02
SamB ok, what happened to the highlight stripping?
eric256 ?
SamB why is that text (what Walugo said) blue on gray? 22:03
eric256 ohhh. /me didn't notice...client is set to ignore colorings anyway
SamB ah
Walugo 0202,00Don't know, im' just using default settings off of Trillian
autrijus gaal: ok, fixing
joao Walugo, it's kinda annoying :) 22:04
SamB Walugo: Whoa, Trillian must be messed up when it comes to IRC then
eric256 nah i'm on trillian too..definitly not any default i've seen
Walugo is it better?
SamB much, yes ;-)
Walugo ok
gaal woot, clkao++ # svk 1.05 uploaded 22:07
geoffb what's new in 1.05? 22:08
gaal i dunno :) i be spreadin' the karma like. 22:09
geoffb First the spliff, then the karma. It's a very sharing channel. 22:10
joao :) 22:12
gaal well, i got it from agnes, or from nothingmuch... or from tom lehrer!
geoffb Mmmm, Tom Lehrer . . . .
I wonder if he's still teaching?
...wikipedia... 22:13
gaal "you know i don't have to be doing this, i could be making, oh, three thousand dollars a year just teaching!"
geoffb Hmmm, I was skimming, but it seems to leave out whether he's still at UCSC . . . 22:16
svnbot6 r7350 | gaal++ | mention Bundle::Pugs::SmokeKit
gaal oh, a visit to the faculty page would surely resolve that wonder? 22:17
geoffb gaal, oh sure, but damnit, wikipedia has a reputation to uphold 22:18
gaal well, you have a committer bit there :) 22:20
geoffb Not a timesink I'm willing to entertain. :-) 22:23
www.buckswoodside.com/stories/tomlehrer.shtml
And sadly the answer is no.
gaal wow, nice story :( 22:31
autrijus gaal: try again? 22:34
r7351
this compiled prelude thing is really stretching the limit of cabal :)
gaal svnupping 22:35
eric256 compiled prelude = evil. (at least on my comp) 22:36
gaal get more ram :)
eric256 yea ;(
sboth slots are full..means i have to find a 512 or larger to swap in...or two 512's ') 22:37
gaal it compiles... let's see if completely 22:38
cabal is cabalized, but ghc isn't, right? 22:40
svnbot6 r7351 | autrijus++ | * yet another try at cabalization. This may just work...
geoffb eric256, if A) you can afford it, and B) your motherboard can take 'em, best to just get 2 x 1GB sticks . . . ,
throw the old ones in another box, or sell 'em :-) 22:41
gaal yeah, that'll keep you ahead of ghc fer at least two weeks.
is runghc a little like cpr? 22:42
autrijus yes. 22:43
gaal neat. 22:44
...and is main' a design like Yi and lambdabot's? 22:45
autrijus and I finally beat it into shape.
main' a?
gaal in Setup.lhs
"
"and is main' $ a design like ..."
autrijus er, it's like Module::Build. 22:46
currently it's all commented out.
gaal did i just disambiguate english by using haskell syntax? please knock me over or something
autrijus knocks gaal over 22:47
gaal eeek, undefined references 22:48
in first pass linkage 22:49
(PCRE)
autrijus okay, fixing.
Shillo Hullo, all. :) 22:50
autrijus yo Shillo
gaal: have you run into the situation where somehow the first-phase pugs is without any Prim at all?
geoffb gaal, autrijus: interesting pair programming style -- one guy hacks, the other tries to build
autrijus $ ./pugs -e '1+1'
*** No compatible subroutine found: "&infix:+"
at -e line 1, column 1-4
gaal lol 22:51
autrijus it's currently the only thing blocking
gaal nnnno, don't think i saw that
well i'd give autrijus shell access but this is windows we're talking about, good luck 22:52
joao (my pbook G4 is really really slow compiling pugs)
autrijus gaal: hm... *pout*
autrijus tries another way
gaal autrijus, the undef references are not only in PCRE, they're also in Unicode.o, Pugs/AST/Internals, and a few others. 22:54
autrijus nodnod. 22:56
svnbot6 r7352 | autrijus++ | * yet another try -- now if we can only get this hidden-prim problem fixed...
autrijus gaal: try r7353 in 10 secs
I _think_ that'd work.
Shillo gaal: You know there /is/ a working ssh for Windows, right? 22:59
gaal compiling, but for some reason it rebuilds all the objects.
Shillo (about shell access and stuff :) )
gaal Shillo: yes, but that doesn't help you with modal popups :)
Shillo *twitch*
autrijus gaal: you are using unoptimised, right? 23:00
gaal actually, no. where's that floor again?
autrijus ;) 23:01
svnbot6 r7353 | autrijus++ | * yet another valiant try... 23:02
r7354 | autrijus++ | * add extra object files to link against.
gaal do '4?
autrijus probably won't work.
Shillo tries Linux build, just for the heck of it... 23:03
autrijus but '5 would.
I think.
joao (OT: yaml stands for "yet another mark. lang." or "yaml ain't mark. lang." ? :) ) 23:07
gaal ain't
it's a data serialization language 23:08
joao i usually call it ml :)
ml = markup language
the spec def. calls it data serialization language, though 23:11
I have to call it by what it is
:)
gaal autrijus, with '4 i get 23:12
# gcc: dist/build/src/cbits/fpstring.o: No such file or directory
etc.
Shillo Whoooops, the build nuked itself on Linux, too. 23:14
joao yes.. here too 23:15
(mac os)
anyway: Generating precompiled Prelude... Can't exec "./pugs": No such file or directory at /System/Library/Perl/5.8.1/IPC/Open3.pm line 241.
Shillo dist/build/src/cbits/fpstring.o: dist/build/src/pcre/pcre.o: dist/build/src/UnicodeC.o: dist/build/src/syck/bytecode.o: dist/build/src/syck/emitter.o: (etc, 6-7 more of syck), dist/build/src/Data/Yaml/Syck_stub.o:
All missing objectrs.
gaal do we support 5.8.1? i thought for some reason that 5.6.1 or 5.8.3 and up? but maybe i'm imagining things.
autrijus I think 5.6.x is fine 23:16
Shillo And in fact, dist/build/src/cbits dir is missing.
autrijus Shillo: okay, fixing
Shillo As is pcre and syck
Will build unoptimised the next time. :) 23:17
autrijus ok :) 23:20
try ok, please retry r7356. 23:27
it builds here but runs into the missing-prim problem
I'm looking at it
gaal on win32 it tries and fails to pl2bat pugs.exe 23:28
autrijus nopaste the log a bit? 23:29
Shillo error reading ./.setup-config; run "setup configure" command?
src/Main.hs:18:0: Failed to load interface for `Pugs': Could not find module `Pugs': use -v to see a list of the files searched for 23:30
autrijus Shillo: that's r7357
pasteling "gaal" at 192.115.25.249 pasted "pl3bat fail" (47 lines, 3.5K) at sial.org/pbot/13500
Juerd eric256: Once in a while, for different reasons, it no longer builds correctly and manual intervention is needed 23:31
Shillo Updating, then...
Juerd eric256: I should monitor this, but I don't. Scripting it is hard because what goes wrong keeps changing.
eric256: It goes wrong only once a month or so
svnbot6 r7355 | autrijus++ | * go back to use .a for linking. that builds, but
r7355 | autrijus++ | there is still this missing Prim problem
r7356 | autrijus++ | * oops, wrong executable name.
r7357 | autrijus++ | * run configure. Shillo++
gaal sial.org/pbot/13500
Juerd eric256: I had neglected looking at it for at least 2 months; feather had a very old pugs.
gaal whoops, sorry for the dupe 23:32
Shillo Parrot.hsc:122:29: error: parrot/packfile.h: No such file or directory ... etc
Juerd eric256: So it's very overtakeable
Shillo That was with PUGS_EMBED=parrot
(bunch of other parrot headers not found)
autrijus Shillo: try without parrotbedding first 23:34
svnbot6 r7358 | autrijus++ | * add "unix" only for things that are on unix. 23:37
Shillo Trying... ... ...
gaal who's alex? (in configure) 23:38
Shillo src/Main.hs:18:0: Failed to load interface for `Pugs': Could not find module `Pugs': use -v to see a list of the files searched for
Failed after first pass.
autrijus gaal: haskell's "lex"
Shillo: nopaste the last few lines
Shillo /usr/bin/ar: creating dist/build/libHSPugs-6.2.10.a 23:39
src/Main.hs:18:0:
Failed to load interface for `Pugs':
Could not find module `Pugs': use -v to see a list of the files searched for
/usr/bin/perl util/gen_prelude.pl -v -i src/perl6/Prelude.pm -p ./pugs --touch --output src/Pugs/PreludePC.hs
Triggering rebuild... done.
Generating precompiled Prelude... Can't exec "./pugs": No such file or directory at /usr/share/perl/5.8/IPC/Open3.pm line 168.
open2: exec of ./pugs -C Pugs tmp-Prelude.pm failed at util/gen_prelude.pl line 98
system: [/usr/bin/perl util/gen_prelude.pl -v -i src/perl6/Prelude.pm -p ./pugs --touch --output src/Pugs/PreludePC.hs]: No such file or directory at util/build_pugs.pl line 105.
gaal it's a cokney haskell lex, the h isn't aspirated
Amnesiac ugh
Shillo make: *** [unoptimized] Error 2
gaal sorry, /me out of wakies 23:42
good night! &
Shillo tries 7358... 23:43
Nope.
autrijus okay... final final try 23:46
Shillo 7358? 23:48
autrijus no
about to commit
geoffb
.oO( Respecting abstractions may be a pain at times, but it sure is nice when you have to rewrite the bottom layer . . . )
23:51
autrijus indeed. 23:52
okay, r7360 should, by all account, work 23:53
svnbot6 r7359 | autrijus++ | * the ultra-slow, ultra-nonportable, why-am-I-doing-this
r7359 | autrijus++ | approach of cabalization.
r7360 | autrijus++ | * link in the object files, too.
autrijus it worksforme at least.
clkao are ou releasing?
autrijus clkao: no, afraid not today
probably right after I wake up.
cabalization is _so_ tricky. 23:54
all thanks to precompiled prelude :-/
Shillo didn't -quite- read that as cannibalisation.
geoffb That's tricky, too -- convincing them to sit in the pot while it boils . . . . 23:55
clkao bad autrijus, no cookie
autrijus build fails? 23:56
clkao you haven't made release for two months! slacker!
Shillo Still building...
geoffb Man, now that I'm used to SVK all the time, I *hate* using CVS for $work
autrijus clkao: yeah yeah you keep telling me that.
clkao geoffb :) do more advocacy
autrijus clkao: coincidentally parrot was doing the same. go figure...
geoffb This at a company where it was an effort to explain that using SourceSafe was probably suboptimal 23:57
Shillo geoffb: :) :) :)
clkao tell them svk also offers commercial support, whereas vss doesn't!
23:57 khisanth_ is now known as Khisanth
geoffb heh 23:57
Does your $work actually offer that? 23:58
clkao no
Shillo Heh. I learned a few things about 'joys' of VSS. GAH. :p
clkao but i do :P
geoffb Shillo, ditto. OH MAN, DITTO.
clkao, ah!
Shillo Once I tried to branch. That was... Um... time-consuming. And unsuccessful.
geoffb Try recovering even the slightest corruption . . . 23:59
Shillo 7360 built. :)
geoffb autrijus++ # persistence!