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! |