6.2.5 released! | Your opinions wanted: perlmonks.org/?node_id=459750 | pugscode.org <Overview Journal Logs> | pugs.kwiki.org Set by autrijus on 23 May 2005. |
|||
Darren_Duncan | I am in the middle of 'make test' for 6.2.5 now ... | 00:09 | |
mugwump | where's a test/demo of coro's, anyone? | 00:11 | |
ah, t/unspecced/coro.t | |||
svnbot6 | r3805, autrijus++ | * fix typo | 00:50 | |
r3806, revdiablo++ | updated version number in debian build files | |||
r3807, mugwump++ | Playing with coroutines and iterators - Tree test now fails gracefully. New open question about using yield() within closures. | |||
japhy | I've found a typo in the pattern matching apoc. (#5) | 01:44 | |
[[:alpha:][:digit:] <<alpha><digit>> # POSIX classes are built-in rules | |||
the first thing is missing a closing ], but I'm more concerned with the Perl 6 equiv. | |||
it seems to be saying that < <alpha> <digit> > is some sort of assertion that matches like [[:alpha:][:digit:]] does in Perl 5 | 01:45 | ||
now, character classes in Perl 6 seem to be defined as <[...]> | 01:46 | ||
so how does one intersperse built-in rules with range-based character classes? | 01:47 | ||
would it be < <alpha> [0-9] > ? | |||
or is there a typo in the original? should it be <[<alpha><digit>]> | |||
Darren_Duncan | the result of 'make test' on 6.2.5 is: 297 subtests skipped, Failed 1/297 test scripts, 99.66% okay. 9/5661 subtests failed, 99.84% okay. | 01:50 | |
japhy | hrm, perhaps page 12 clears that up abit | ||
Darren_Duncan | failed one is: t/oo/class/nested_use.t 9 9 100.00% 1-9 | ||
this is on Mac OS X 10.3.9, system Perl 5.8.1, no Parrot etc, all default config | 01:51 | ||
leaving comp now | |||
theorbtwo | Ah! Finally! | 02:08 | |
freenode wasn't letting me reconnect for the longest time... | |||
diotalevi | Hola, mugwump. | 02:14 | |
theorbtwo | Hola to you too, dio. | 02:15 | |
diotalevi | So can I write my perl in Haskell now? Or can a perl function call a haskell function? Or the reverse? | 02:19 | |
Without just doing eval-string or the equivalent. | 02:20 | ||
(actually, I really want to write my perl in lisp, I'm just asking about the Haskell part because it seems more likely) | 02:21 | ||
theorbtwo | Well, you can eval haskell strings from perl. | ||
(If you want to get back a string.) | |||
This is probably not what you were really asking, but I'm not sure what you /were/ really asking. | |||
diotalevi | Yeah... but just eval-string isn't terribly interesting, you know? | 02:22 | |
theorbtwo | It's not? | ||
You can do anything with eval string. | |||
diotalevi | It depends on when it runs and it depends on whether it interpolates the result into the surrounding code or whether it just runs the resulting code. | 02:23 | |
theorbtwo | I feel like I'm being stupid. | 02:24 | |
mugwump | You could add that to autrijus' new wishlist Perlmonks node. You're basically looking for the perl6 Inline:: equivalent, which is supposed to be a "core" feature | ||
iirc | |||
theorbtwo | Oh, you're looking for Inline::Haskell? Um, I think I may have written that, but I can't quite recall. | 02:25 | |
mugwump | you want definitions in the eval string to be available to the Perl, for instance. Inline:: does this the other way (Perl 5 to Perl 6), but I don't think the reverse is true | ||
diotalevi | I want macros. | ||
That's what I'm really after. | |||
theorbtwo | Oh. | ||
You should have asked for them, then. :) | |||
mugwump | oh. Perhaps I'll stop second guessing you then :) | ||
diotalevi | If macros can be written in multiple languages, so much the better. | ||
theorbtwo | Um, planned, but there are still significant bits of them that the design team hasn't given us /any/ clue. | 02:26 | |
That is, when they are called, and what arguments they get. | |||
diotalevi | Well... macros are a more limited form of what I'm really asking for. It doesn't sound like it exists yet anyway. | ||
theorbtwo | Ah. | 02:27 | |
You want the ability to just write Haskell, and have it figure out what you mean? | |||
Try fp.pm, which is something along the same basic idea. | |||
We don't have macros, but we /do/ have user-defined operators. | |||
diotalevi is distracted by mom on the phone. | 02:28 | ||
theorbtwo ponders --> as an equiv for ==> -> | 02:32 | ||
...which I think would serve well as a substitute for Haskell's ->. | |||
...possibly. | |||
diotalevi hasn't even gotten GHC ported to the machine he wanted to use perl6 on yet. | 02:33 | ||
Ok, consider this in perl5 terms. As soon as BEGIN is compiled, it is imediately executed. If BEGIN were able to *not* execute but instead just return a fragment of an optree, that would be what I'm talking about. | 02:35 | ||
I'm pretty sure this is a sane idea in perl6 terms but don't know how to say it yet. | 02:37 | ||
theorbtwo | What you really want to be able to do is take a Code object and do lots of introspection on it, I think. | ||
You also want macros, in the LISP and perl 6 sense. | 02:38 | ||
diotalevi | Well, introspection, yes. I will always want infinite introspection. | ||
Odin-LAP | He's describing lispian macros. | 02:39 | |
Which, A6 promised us, we should have. | |||
... sooner or later. | |||
diotalevi | Well... lispian except I don't really care if they have names most of the time. | ||
Odin-LAP | diotalevi: They're on the same level as subroutines and methods and such. Dunno about anonymous ones... | 02:40 | |
diotalevi | If I had to *name* every macro... ech. | 02:41 | |
Why did we have to move this to IRC anyway? Perlmonks was just fine. | 02:50 | ||
theorbtwo | try { sleep 60**2; CATCH ('z') {redo} } | ||
Oh, you should reply to that wishlist post with "macros". | 02:51 | ||
vcv | Perl6 needs atomic transactions | ||
diotalevi | Wishlist post? | 02:52 | |
Color me clueless. | |||
mrborisguy | if only i had that color in my box... | ||
nope, just the classic 8 color set. | 02:53 | ||
don't really care if they have names most of the time. | 02:56 | ||
<Odin-LAP> diotalevi: They're on the same level as subroutines and methods and such. Dunno about anonymous ones... | |||
woah... sorry about that, just playing with the mouse | |||
svnbot6 | r3808, ninereasons++ | make more defaulty defaults | 03:23 | |
japhy | which perl6 mailing list is the most useful to be on? perl6-language? | 03:54 | |
svnbot6 | r3809, Stevan++ | Perl::MetaModel - more clarification on docs/perl6_meta_meta_class_hierarchy.pod | 03:55 | |
japhy | this is probably a weird question. | ||
mugwump | perl6-language has the most posts from all(@Larry) | 03:57 | |
but I'm not on *all* of them :) | |||
japhy | I'm most interested in posting and debating questions about pattern matching syntax and purpose | ||
mugwump | pge? | 03:58 | |
oh, rules syntax itself | |||
japhy | what's pge? | 03:59 | |
revdiablo | the rules engine written for parrot, in PIR | ||
japhy | oh, right. | 04:00 | |
memory lapse. I have that bookmarked. | |||
mugwump | "The most merciful thing in the world ... is the inability of the human mind to correlate all its contents." -- H P Lovecraft | ||
japhy | basically, I need people to ask about specific syntax and purpose issues. to find out what's changed or what's fuzzy since the apoc. #5 | ||
revdiablo | p6l would be the place, I think | 04:01 | |
mugwump | write tests! :) | ||
japhy | I'm writing a Perl 6 rules parser in Perl 5 right now | ||
tests come later, once I've got Perl 6 on a machine of mine. | |||
mugwump | Juerd might give you a login on his | ||
japhy | yeah, I heard about that | ||
mugwump | IMHO, writing a Perl 5 rules engine without co-ordinating it with PGE development would be a bad idea | 04:02 | |
japhy | mug - my model for the regex parser is probably considerably different from PGE | 04:03 | |
mugwump | sure, implementation might be radically different. but you'd want the test suites to be shared | 04:04 | |
in fact you could probably use Inline::Pugs for this now | |||
but then I probably don't know enough about the intricacies of rules to comment fully on this. not really my area. consider my input given :) | 04:05 | ||
japhy | the extent of the work I'm doing right now is simply this: | 04:06 | |
my $parser = Perl6::Rule::Parser->new; | |||
$parser->parse($string_representing_perl6_regex); | |||
and then you can access a data structure representing the regex. | |||
how it's used by other developers is up to them. | 04:07 | ||
revdiablo | you might also want to look at Perl6::Rules, if you haven't already | ||
japhy | I have | ||
it's incomplete, though, because it's a translater | |||
revdiablo | oh, it just translates to p5re? | ||
japhy | it doesn't create a parse tree. that's what mine is for. | ||
the next step would be writing an expansion to P6::Rule::Parser that parses the *context* of the rules as well | 04:09 | ||
that is, the m:whatever/ ... / part | |||
this module just parses the ... part. | |||
anyway, good night. | |||
revdiablo | night japhy | 04:10 | |
mugwump | 'night | ||
masak | morning | 04:55 | |
masak svn ups | |||
did you release two consequtive versions of pugs within the same half hour? | 05:30 | ||
you guys are nuts :P | |||
pugsteam++ | |||
mugwump | yes, this is because some idiot broke a test just before a release | 05:31 | |
mugwump trolls perlmonks.org/?node_id=459750 | 05:44 | ||
masak | mugwump++ # as consolation | 05:50 | |
mugwump | thanks, masak :) | 06:04 | |
revdiablo | mugwump++ # for saying what I was thinking | 06:05 | |
mugwump | I hate FUD, and BrowserUk's post was full of it | 06:08 | |
06:43
castaway_ is now known as castaway
|
|||
gaal | can i call p6 from haskell? | 07:01 | |
mugwump | nopaste.snit.ch:8002/2691 # A fuller, more constructive post, anyone care to review? | 07:02 | |
revdiablo perhaps? | |||
castaway | Its certainly an improvement on the thing you posted. | 07:07 | |
castaway reads the rest | |||
to part 1) I would answer there that cleanup and document comes after preliminary implementation is done.. (IMO anyway..) | 07:08 | ||
castaway has no idea what B*UK means about the "existing implementations of the underpinnings" .. | 07:10 | ||
mugwump | yes, absolutely. I was taking the angle that the primary implementation of the *specifications* is complete, and that pugs is the cleanup and documentation process for those specifications | ||
s/primary/preliminary/ | 07:11 | ||
he's referring to parrot, given the previous point. I don't know which spec he's referring to, it might exist. I know Leo has a huge amount of experience, possibly even with other VMs. But in any case it's about something in the past | |||
castaway | I read that first to mean he doesnt want to use it until its done being defined.. which makes some sense, its just not worded very.. politely | 07:12 | |
You might want to stress somehow that Pugs (implementation of P6 syntax) is NOT parrot (generic bytecode thingy) | |||
mugwump | ok good idea | 07:13 | |
castaway | ie that Pugs runs completely independently from parrot | ||
maybe he is confused on that point | |||
(several people seem to have the idea that P6 == Parrot= | |||
s/t=/t)/ | 07:14 | ||
the runtime library/virtualisation thing also seems to refer to parrot | 07:15 | ||
as for bypassing tests that wont work/make no sense on some platforms, I feel thats a good thing to do, as long as the bits that wont work are documented.. | 07:16 | ||
for eg, if p& gets used as an embedded language (or something) theres bits of it that are just not going to work or be needed | |||
oops p6 | |||
Ok, I'm done reading now, hope it was helpful | |||
hmm, I thought I posted a reply to that node this morning | 07:18 | ||
mugwump | very, thanks :) | ||
castaway++ | |||
castaway | oops, no that was the other one | 07:19 | |
castaway blushes | |||
you're welcome | |||
drbean | Does the comment about parrot delivering the semantics in real time | 07:28 | |
mean that he wants parrot to be finished soon? What does it mean? | 07:29 | ||
castaway | who knows :) | ||
I suspect that he thinks parrot runs slowly | |||
mugwump | www.perlmonks.org/index.pl?node_id=459834 # :) | 07:31 | |
integral | well mandel.p6 was slower than perl5 last I checked (with parrot) (because we're using PMC for everything) | 07:32 | |
drbean | Who is he referring to when he says those speccing Parrot should have | ||
mugwump | I thought I saw it running on autrijus' laptop a factor of 10 times faster than the Perl 5 version via Parrot in hualien | 07:33 | |
drbean | used previous implementations before speccing. | ||
mugwump | I'm not sure, drbean :) | ||
integral | mugwump: yeah, it was running very fast earlier | ||
mugwump | yay, that made me level up to abbot :) | 07:37 | |
gaal | Juerd about? | ||
mugwump | where can I go to spend my XP on more character skills? | 07:38 | |
castaway | ,) | 07:42 | |
grats, mugwump! | |||
nothingmuch | morning | 07:44 | |
mugwump | hi nothingmuch | ||
integral | ah, maybeColon is for matching the : in private members? | 07:49 | |
svnbot6 | r3810, bsmith++ | Moved mergeStmts and isEmptyParams from Pugs.Parser to Pugs.AST. | ||
castaway | allo nothingmuch | 07:50 | |
nothingmuch | hi ho castaway | ||
integral | hmm, you can't say: class { sub :my_private_sub { ... } } | 07:54 | |
nothingmuch | Juerd: nothingmuch, [email@hidden.address] Yuval Kogman | 08:10 | |
i'll set up a smoke loop | |||
wolverian | mugwump: nice re: perl6 wishlist on perlmonks :) | 08:25 | |
nothingmuch | wolverian: link? | 08:31 | |
wolverian | nothingmuch: www.perlmonks.org/index.pl?node_id=459834 | 08:32 | |
Aankhen`` | mugwump == mugwumpjism on PerlMonks? | 08:36 | |
wolverian | I don't know, I just assumed! | 08:37 | |
Aankhen`` | Oh, heh, I just noticed you were talking about that too. | ||
mugwump++ # excellent reply. =) | 08:38 | ||
castaway | yeah that was him, we were discussing it earlier | ||
Aankhen`` | Darnit, I'm not getting a dual-core processor after all. | 08:39 | |
I'm just getting a 64-bit P4. | |||
afdf | who is in taiwan? | 08:40 | |
Aankhen`` | Ah well, it's lightyears ahead of my Athlon 1.63 GHz. anyway. :-D | ||
09:09
spinclad is now known as spinclad_
|
|||
Juerd | gaal: pong | 09:12 | |
09:12
spinclad_ is now known as spinclad
09:19
wilx` is now known as wilx
09:21
f0rth_ is now known as f0rth
|
|||
lumi | Hi | 09:26 | |
Juerd | Hello | 09:27 | |
webmind | morning | ||
spinclad | Hi, all | 09:28 | |
Aankhen`` | Hi. | ||
Juerd | perlmonks-- # slow again | 09:29 | |
nothingmuch | aix's make is soooo flakey | 09:30 | |
lumi | Was I imagining that $string.chars would give me the chars? | ||
Juerd | lumi: Those methods are all rather confusing | ||
lumi | Yes | ||
Juerd | lumi: @array.elems gives the *number of* elements | ||
lumi: $string.chars gives the *number of* characters | |||
lumi | Although I can see how it's stupid to have .elems return the elems | ||
Juerd | lumi: $string.split('') gives the individual characters | 09:31 | |
lumi: I can't. | |||
lumi | Don't arrays numify correctly though? | ||
Juerd | lumi: Yes, they do. | ||
And so could .elems | |||
lumi | So... | ||
Yes | |||
Juerd | And so could .chars | ||
So I'm all for having these return smarter things than just numbers. | |||
lumi | It really makes sense to me to iterate over $string.chars | ||
Juerd | To me too. | 09:32 | |
And if someone wants the number, +$string.chars | |||
lumi | And still no need of the L-word | ||
Juerd | l? | 09:33 | |
lumi | Length | ||
nothingmuch | moy hed is hoirting, oi oi oi | 09:40 | |
mauke | Juerd: do you know why tnx.nl doesn't load here? | 09:42 | |
Juerd | It'll have something to do with the server's 0.04 load | 09:45 | |
Investigating... | |||
I killed apache and restarted it. Works now. | |||
Thanks for letting me know. | |||
mauke | yay, thanks | 09:46 | |
integral mutters about his mails not reaching p6c/p6l | 10:05 | ||
ah ha. Using perl6-language.perl.org does not work ;-) | 10:12 | ||
Juerd | H. Merijn Brand sent his replies to [email@hidden.address] and only yesterday discovered that none of those messages ever arrived :) | 10:14 | |
They don't bounce :) | |||
integral | heh. I never check my inbox on that account, just all the ML folders, so I'm always missing bounces :-) | 10:16 | |
nothingmuch wonders how cool a lazy DBI would be in perl 6 | 10:35 | ||
instead of calling weird bindparams, etc | 10:36 | ||
but fetched as needed | |||
everything will be inverted | |||
blobs will be filehandles or strings, depending on how they are handled | |||
the entire set is symbolically returned at once | |||
in chunks set as a param to DBI | |||
Juerd | nothingmuch: I made something like that once | 10:37 | |
nothingmuch: But Perl's tieing made syntax awkward | |||
nothingmuch | right, p5 can do this stuff | ||
but it's awkward | |||
in perl6 it will be clean and natural | |||
Juerd | It's useful to know that foreach (ARRAY) is different from foreach (LIST) | ||
nothingmuch | in p5 you mean? | 10:38 | |
Juerd | Yes | ||
castaway | Tie::DBI++ (or is it DBI::Tie, I can never remember) | ||
nothingmuch | that's good to know | ||
Juerd | foreach (ARRAY) does not flatten before it starts looping | ||
nothingmuch | Tie::DBI *is* pretty cool | ||
castaway | I should send in the db2 patch.. naughty me | ||
Juerd | So if ARRAY is tied, it fetches values as they are needed | 10:39 | |
nothingmuch | The pure-specifier (= 0) is not valid for the non-virtual function "LoadedFunctions::getSharedLibraryName".... *sigh* | ||
this is my most painful learning experience ever | |||
i know all the abstract and concepts | 10:40 | ||
but getting the details right is such a slow iterative process | |||
Juerd | What are you doing then? | ||
nothingmuch | this is the base class for dynamically loaded classes in our C++ thingy | ||
we are binding to some other companies dynamic libs | |||
i'm fixing the installer so that it installs the dynamic lib | 10:41 | ||
and then loads it | |||
so that the API to the other product is more consistent than it is now (uses a CLI tool and parses it's output... eek!) | |||
the problem is that the API we're using is split up into many libs, and to clean this stuff up i need to add support to map the libname by symbol | 10:42 | ||
now my problem is that I don't really know C++ | 10:43 | ||
Juerd | 21 users already for a server that doesn't exist yet | 10:44 | |
I wonder if it's going to hold :| | |||
nothingmuch | hah | ||
Juerd is glad L~R didn't announce it on PM :) | |||
nothingmuch | oh fun | ||
now i screwed up the macro that declares a dynamically loaded function | |||
Juerd hopes the users are spread over timezones well enough :) | 10:45 | ||
webmind | Juerd, what is this server for? except have perl6 ? | 10:46 | |
Juerd | webmind: Provide access to a linux box with good connectivity for those who don't have this | ||
integral is refactoring Parser.hs this afternoon which is a *big* file | |||
Juerd | webmind: And some want to use screen+irssi for this channel and irc.perl.org #parrot | 10:47 | |
nothingmuch | oh wow, different errors this time | ||
Juerd | webmind: So in the end, this server is supposed to boost productivity of many volunteers at the same time. | ||
castaway | assuming it doesnt bog down under the load and reduce it :) | 10:48 | |
Juerd | castaway: Yea. | ||
webmind | Juerd, hmk | ||
Juerd | castaway: I'm a bit worried about that. | ||
integral | castaway: incentive to learn how to refactor Haskell ;-) | ||
nothingmuch | integral: isn't it supposed to be easy to refactor, being a combinator parser? | ||
castaway | heh, indeed | 10:49 | |
Juerd | castaway: I think a dramatic decrease of memory use for pugs would be about the nicest thing that could happen right now :) | ||
nothingmuch | i mean, Pugs.Parser.Primtitives, Pugs.Parser.Blocks etc | ||
integral | nothingmuch: it's the more refactoring into separate files that's the problem | ||
nothingmuch | then you have Pugs.Parser which defines the top level grammer, | ||
and imports, no? | |||
integral | take for example parsing quotes | ||
Juerd | castaway: But if this doesn't hold, I'll try the Perl Foundation for an upgrade | ||
castaway: At least if it doesn't hold, that itself proves people want to use this :) | |||
integral | You can have code interpolated in quotes, so expressions need to parse quotes which need to parse expressions. So you get these massive loops of cyclic dependencies. | 10:50 | |
nothingmuch | ah | ||
so you need the hs_boot crap? | |||
or are you trying to avoid that? | |||
integral | yes, but we're not using that due to GHC unstableness | ||
nothingmuch | that part about GHC really struck me as odd | 10:51 | |
something as elegant as haskell really ought to support this kind of stuff | |||
castaway | what are you putting in it, for RAM? | ||
Juerd | castaway: 1 GB of DDR SDRAM | 10:52 | |
castaway | I'm sure you could get/ask the various users to donate a euro or two for more | ||
(each that is) | |||
integral | how much is that stuff? >200ā¬? | ||
Juerd | castaway: I ordered 2*512, filling up both slots | ||
integral: An upgrade to 2 GB would cost around 240 euros | 10:53 | ||
nothingmuch | it compiled... | ||
Juerd | But as a company, I can't take donations without HUGE (32%) income tax | ||
castaway | what, only 2 slots? is this a mini board? | ||
integral | ouch | ||
castaway | umm, then take them as a private person? | ||
Juerd | castaway: Yes, micro atx | ||
castaway: Same thing, in .nl | |||
castaway | boggle | ||
Juerd | castaway: See Jouke's rants from the time he got a big donation for pvoice | ||
castaway | then let somebody else take, and send you the RAMs :) | 10:54 | |
Juerd | castaway: But perhaps this can be arranged through the stichting perl promotie (dutch perl promotion foundation) | ||
castaway: That's another option | |||
Let's first see if this'll hold | |||
castaway | hmm, how do the tax people know someone donated you cash? thats.. weird | ||
(privately, anyway) | |||
Juerd | castaway: There are ways to make sure they don't. But that is called fraud, and is a felony. | 10:55 | |
castaway | somehow this doesnt make sense.. but I guess thats just the cultural difference | 10:56 | |
nothingmuch | Juerd: we can establish a trust protocol of some sort where money is paypalled to one of us without such constraints, which then pays with CC for hw ordered from dutch places to you | ||
webmind | Juerd, you could donate space/bandwith/time as a company to the stichting who provides hardware and receives donations for this ? | ||
Juerd | nothingmuch: Dutch places and CC. Heh. That's very rare. | ||
webmind: That would be possible | |||
webmind | Juerd, do you have a tax advantage in the netherlands for donations ? | 10:57 | |
as a company | |||
Juerd | First, I wish to stick to the current plan of Convolution owning the entire machine, which is a much simpler legal construction. | ||
nothingmuch | legal stuff sucks so bad, | ||
Juerd | webmind: Nee, alleen een stichting kan donaties krijgen zonder inkomstenbelasting te betalen. | ||
webmind | ok | ||
nothingmuch | look how much overhead over such a simple thing | ||
Juerd | nothingmuch: Just for juridical simplicity, I have to own this box instead of donate it. I could donate money, not hardware. Long live weird regulations. | 10:58 | |
And this money buys less hardware in stores than from wholesale suppliers | 10:59 | ||
If this box is a success, perhaps we can get other ISPs to sponsor entire boxes | |||
castaway: Oh, and the reason for mini-itx is the small enclosure. The small enclosure is because rackspace is expensive | 11:01 | ||
kungfuftr | Juerd: www.bytemark.co.uk | ||
Juerd | kungfuftr: What about it? | ||
kungfuftr | could always sponsor multitudes of those lvm accounts | 11:02 | |
Juerd | Heh | ||
I don't think they like huge memory users on virtual accounts :) | |||
There is a reason I didn't just install user-mode-linux (virtual machine) on one of my existing boxes :) | 11:03 | ||
kungfuftr | Juerd: they don't care... it's limited | ||
Juerd | kungfuftr: To 64 MB, yes | ||
kungfuftr | =0) | 11:04 | |
integral | 64MB makes your pugs builds take 8 hours :-) | ||
Juerd | kungfuftr: Sorry, but that just isn't even close to enough | ||
integral | but how many people are going to be hacking the Haskell? Won't most people be writing tests, docs and p6 code? If so, you just need a system-wide pugs installation | ||
kungfuftr wonders if fotango would be willing to sponsor some hardware, etc. | |||
Juerd | integral: Probably - but some people want to compile pugs, for whatever reason | 11:05 | |
integral | *nod* I'm trying 2 parallel pugs builds at the moment with 1G ram | ||
Juerd | integral: For example, just after a fix that should make *their* test pass | ||
integral | well as long as it's not a fix in the Parser, Prims or AST it's not bad ;-) | 11:06 | |
Juerd | But - the smoke cycle can probably install fresh pugses all the time | ||
integral | and make install gets tested :-) | ||
Juerd | Is there a way to cache ghc compiles globally? | ||
Like ccache does for gcc | 11:07 | ||
s/does/can do/ | |||
xinming | anyone here can tell me where to find the perl 6 doc? I mean the language specification or something else. | ||
I've read perl essentials 2nd (version 2004 June). So I want to know if the book is out dated. | 11:08 | ||
mauke | dev.perl.org/perl6/doc/synopsis.html | 11:09 | |
xinming | mauke: thanks | ||
Juerd | xinming: Every *book* about Perl 6 is outdated. | 11:10 | |
xinming: They are outdated two hours after they are pressed. | 11:11 | ||
xinming: By the time they are in stores, they are a month behind | |||
xinming: And by the time you buy and read them, an entire perl 6 interpreter was written by autrijus :) | |||
scook0 | it's hard enough keeping up with Perl6 as it actually happens... | 11:12 | |
mauke | while he was sleeping! | ||
castaway | autrijus sleeps? | ||
nothingmuch | castaway: sometimes he claims that | 11:13 | |
castaway doesnt believe it | 11:14 | ||
mauke | maybe his computer has a neural interface and he codes in his dreams | 11:15 | |
castaway | this would not surprise me :) | ||
Juerd | castaway: Well, he sometimes says he's off to bed, and then after a few hours you see a huge commit in the logs. So I don't believe it :) | 11:16 | |
castaway | hehe | 11:17 | |
from what I figure, he sleeps only in max. 30 min chunks, or something | |||
Juerd | I think he hyperthreads | ||
One brain sleeps while the other waits for input | |||
castaway | ahhh.. thats it .) | ||
Juerd | No, the other way around :) | ||
One brain sleeps while the other PROCESSES :) | 11:18 | ||
One brain sleeping with the other waiting is MY brains :) | |||
castaway | :) | ||
nothingmuch sometimes hyperthreads 3-4 active brains, but it only lasts about 5-6 hours | 11:21 | ||
then all the brains have overheated and are clocked down by the BIOS | |||
for about 2 days | |||
i think that is mostly dependant on exactly 8 hours of sleep | 11:22 | ||
good sleep too | |||
not too much sugar | |||
and headphones | 11:23 | ||
11:25
chady is now known as chady_
|
|||
Juerd | Ooh, first part arrived: the main board :) | 11:29 | |
nothingmuch | =) | 11:30 | |
deceptive code is sooo bad | 12:12 | ||
code that seems to be doing something | |||
but actually never happens | |||
especially with everyone around you telling you that's what it does | |||
integral | ah, I've found the real killer memorywise: having a 168M ghc sitting there whilst cc1 balloons up to 250M | 12:17 | |
so the trick if you're running multiple GHC's is to not have them compiling Pugs.AST.Internals simultaneously | 12:18 | ||
svnbot6 | r3811, autrijus++ | * add Eric's Tutorial to READTHEM | 12:21 | |
wolverian | argh, people who can't use mailing lists drive me insane. I don't want mailing list posts in my inbox! | 12:25 | |
integral hides under a rock | |||
wolverian | better to learn so you won't starve :) | 12:26 | |
castaway | wolverian: I would put the blame on mail/news clients that insist on default to "answer all" and not the mailing list | 12:33 | |
wolverian | castaway: if the client has the functionality to reply to the mailing list only, even if it's not the default action when one pressed 'reply', I think the user should be blamed. if the client has no such functionality at all (thunderbird..) it's certainly horribly broken. | 12:35 | |
s,pressed,presses, | 12:36 | ||
masak | wolverian: sorry, I accidentally pressed 'send' without removing you :/ | 13:03 | |
masak won't do it again | |||
help reason | |||
masak apparently struggles both with email and IRC today | 13:04 | ||
Limbic_Region | ok - a while back I asked about @hand[1..3]>><suit> syntax | ||
IIRC, it was valid but unimplemented | 13:05 | ||
sound right? | |||
wolverian | masak: ah, don't worry. it doesn't really bother me that much, at least if it doesn't happen all the time. :) (I replied to you, by the way, on the list.) | 13:07 | |
integral | hmm, why is Pad a data rather than a newtype? | ||
wolverian | Limbic_Region: looks right. does it need .<suit>? | 13:08 | |
Limbic_Region | I think . is only necessary when it is necessary (but I am not positive on that) | 13:09 | |
wolverian | well. I think I agree! :) | ||
Limbic_Region | ok - so >> is like a distributive directive - how would I have said the same thing if I meant the whole array? | 13:10 | |
@hand>><suit> ? | |||
wolverian | yes. | ||
Limbic_Region | ok | ||
so then doing something like - all( @hand>><suit> ) eq 'D' should be valid syntax? | |||
wolverian | yes. | ||
(the parens should be optional there.) | 13:11 | ||
Limbic_Region | ok - well then I guess I should write a test for it so it gets implemented then ;-) | ||
wolverian | please do that. :) I thought >> worked for methods already, by the way. does it not? | ||
Limbic_Region | I am sure that it does | ||
wolverian | (I don't have access to pugs currently, I'm at university) | ||
Limbic_Region | I think it is just limited implementation | ||
wolverian | right. please write a test then. | 13:12 | |
Limbic_Region | you can always browse the subversion repository though | ||
wolverian | by the way, has anyone been updating perl6.vim in utils/? Its last modification date is marked as something in 2002! | ||
Limbic_Region: HTTP doesn't lend itself well to a grep :) | 13:13 | ||
Limbic_Region | right | ||
which is my problem ATM | |||
I forgot to ask Jonathan if he could include the test suite in his binary builds | |||
any idea where there may be existing tests for >> ? | |||
wolverian | looking, sec | 13:14 | |
operators/hyper.t | |||
it tests for @r>>++ and such | 13:15 | ||
it doesn't seem to test for hyper subscripts | |||
only method and ++ | |||
Limbic_Region | ok - so let me see about adding a test for slice and for dereferencing | 13:16 | |
gaal | wolversian, sure, svn log it. | ||
wolverian | gaal: I don't have svn here. | ||
and I can't install it. | |||
theorb | wolverian: wget? | ||
gaal | well, yes: there have been minor changes. | ||
wolverian | theorb: is the raw svn log available via HTTP or something else besides svn? | 13:17 | |
Limbic_Region | I think so | ||
theorb | The raw log, not that I'm aware of. | ||
Limbic_Region | hang on | ||
theorb | You can get it cookied, though. | ||
Er, cooked. | |||
wolverian | what's cooked? :) | ||
gaal | rt.openfoundry.org/Foundry/Project/.../pugs/log/ ? | ||
wolverian | ah. right. thanks! | ||
gaal | that also has diffs between versions, but i found it a little awkward to use. | 13:18 | |
wolverian | woo, openfoundry has a search function too :) | ||
oh, that is for projects, not inside a project. :/ | |||
have to go. bye! | 13:20 | ||
svnbot6 | r3812, gaal++ | %h{"key"} -> %h<key>, plus a couple of fixes to the TODOed AUTOLOAD section. | ||
Limbic_Region | perlbot nopaste | 13:22 | |
perlbot | Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel> | ||
pasteling | "Limbic_Region" at 129.33.119.12 pasted "Do these tests look reasonable for adding to t/operators/hyper.t" (11 lines, 279B) at sial.org/pbot/10372 | 13:23 | |
Limbic_Region | and if they do look reasonable - would someone mind comitting them? | 13:24 | |
gaal | you don't have the commit bit, l~r? | ||
Limbic_Region | I do | 13:25 | |
but I have an issue from committing from work | |||
gaal | ah :) | ||
Limbic_Region | and I have been without net access at home for nearly a month | ||
which if that isn't rectified by tomorrow - I am going to be a very unhappy camper | 13:26 | ||
and I'm not very nice when I am not happy | |||
gaal | i have a very weird recurring transient network problem here. sometimes it looks like HTTP stops working. :) | ||
Limbic_Region | out of curiosity - does anyone know how easy it is to configure svk (or svn if I could get it installed) working through an HTTP proxy? | 13:27 | |
gaal | doesn't svk require svn? | ||
integral would hope you just set $*ENV<<http_proxy>> | |||
Limbic_Region | gaal - if it does it is all under the covers | 13:28 | |
I think it just needs some library or something | |||
not sure | |||
I would have to clear it with security anyway - rather hard to justify since p6 doesn't have any tangible relation to my job | 13:29 | ||
my boss buys the "by learning new stuff I am making myself more valuable" bit - not sure security would be so understanding | 13:30 | ||
in any case, if those tests look reasonable I would appreciate someone comitting - I should be able to start carrying my own load tomorrow | |||
gaal | i just got my port 80 back. looks okay to me... suggest a name, l~r? | 13:32 | |
oh, sorry, you did | |||
theorb | I should suspect it'd be easy, but depends on the firewall. | 13:33 | |
clkao | Limbic_Region: same as svn. you modify ~/.subversion/config | ||
or servers, can't remember | |||
Limbic_Region | thanks clkao - will keep it in mind should I find a real application of p6 for work | 13:34 | |
gaal | r3813, l~r. | 13:35 | |
Limbic_Region | cool - thanks | 13:36 | |
svnbot6 | r3813, gaal++ | hyper dereferencing tests by Limbic~Region++ | ||
Limbic_Region | once that gets implemented - all the places where I used map I can use >> which will be a major improvement visually | 13:38 | |
integral | hmm | ||
integral stares at what ruleSubHead is doing | |||
it uses maybeColon to grab a colon in `method :foo' for example, but the maybeColon is missed from the `sub :foo' case, but this still parses :-/ | 13:39 | ||
also, is using ":d sub bar { }" meant to produce just 'Noop; Noop;" as output? | 13:40 | ||
Limbic_Region | integral - did you just uncover a Schroedinbug ??? | 13:41 | |
www.huis.hiroshima-u.ac.jp/jargon/L...inbug.html | 13:42 | ||
integral | I really, really, hope not. | ||
Juerd | feather is built | 13:46 | |
Now I have to wait 100 minutes for KNOPPIX to download. | |||
integral | it's not going to be debian? | ||
Juerd | It is | ||
juerd.nl/debianraid | |||
I accidentally removed the knoppix iso from my laptop, and someone stole my cd (again) | 13:47 | ||
castaway | (knoppix IS debian..) | ||
Juerd | where is is is, not == or eq :) | ||
integral | *blink*, your swap is raided? | 13:48 | |
Juerd | Of course! | ||
integral | why? | 13:49 | |
Juerd | Don't want part of system memory to suddenly go away when a drive fails | ||
The system should keep running at least until I'm there to service it. | |||
And not die at the first crash | |||
RAID is about more than just data safety | |||
integral | hmm, interesting | ||
Juerd | Interesting? I'd call it common sense :) | 13:50 | |
Although you're probably the fifteenth to react like this :) | |||
integral would have gone for double the swap space, but with less reliability | |||
Juerd | I would certainly not | ||
Do you know what happens if you pull one of two DIMMs from a running system? | 13:51 | ||
Apart from the electrical damage, the difference with failing swap space is not that big. | |||
Programs using that part of memory will segfault | |||
Or die with bus errors | |||
etcetera | |||
Now, what if the long idle *init* got part of it paged out? That must hurt. | 13:52 | ||
svnbot6 | r3814, bsmith++ | Moved a few pad handling functions to Pugs.AST.Pad. | 14:14 | |
theorb shrugs. | 14:15 | ||
Like everything else, it's a trade-off. | |||
castaway | ah, there you is | 14:17 | |
theorb | I am everywhere. | ||
castaway | hmm, well my /msg's arent being answered.. | ||
svnbot6 | r3815, bsmith++ | Removed the use of maybeColon from ruleSubHead because it doesn't appear to | 14:21 | |
r3815, bsmith++ | actually do anything since ruleSubName just takes the : as part of the name | |||
r3815, bsmith++ | anyway. | |||
iblech | integral: [:d sub ... {...} shows Noop; Noop] That's ok, as all sub declarations are implicitly done in BEGIN blocks | 14:23 | |
integral | sure, but it's not very useful for debugging the parser | ||
iblech | integral: This is so sub infix:<...> {...} can work | ||
integral | I had to use: :d my sub ... { ... } | ||
iblech | integral: Right | ||
integral | it would be nice if the noop node hung onto what what ran, when you're doing debugging | ||
dakkar | did anyone write any Perl6 JAPHs we could put on the t-shirt for the Italian Perl Workshop? | 14:27 | |
or golfs.. | |||
iblech | dakkar: There's examples/golf | 14:28 | |
japhy | is <after ...> a look-AHEAD or a look-BEHIND? | ||
is it saying "this pattern must come after where we are" | |||
or "we must be after this pattern" | 14:29 | ||
I think it's a terrible name :/ | |||
Juerd | japhy: with /foo <after bar>/, "after" is about "bar" and has nothing to do with foo | 14:30 | |
This match fails because foo cannot be bar | |||
It is look behind | 14:31 | ||
See it from pos(): "we are after bar" | |||
japhy | so "after" is look behind, and "before" is look ahead | ||
Juerd | Yes | ||
japhy | ok. | 14:32 | |
it's from the point of view of pos(). good explanation. | |||
gaal | iblech, please see perlmonks.org/?node_id=459888 | 14:34 | |
who's responsible for the svn commit feed? | 14:36 | ||
it isn't escaping HTML | |||
dakkar | is @a Ā»+Ā« @b the same as map {$^a + $^b} zip @a,@b ? | 14:37 | |
Khisanth | try it out and see? :) | ||
iblech | gaal: Thanks, replied | ||
japhy | dakkar - I think that is exactly what it's like. | ||
gaal | iblech++ | 14:38 | |
integral | ah, the Context in ruleSubScopedWithContext is actually the return type | 14:51 | |
dakkar | if I try to run map {$^a + $^b} zip @a,@b I get '$b undeclared' | 14:52 | |
ninereasons | dakkar, that bug has been seen. but I don't know whether there is a test written to demonstrate it. | 14:55 | |
dakkar | ok | ||
on the same note, map $a,$b -> {$a+$b} zip @a,@b should work? | 14:56 | ||
(i.e. is it correct syntax?) | |||
iblech | dakkar: I think you need a "," after the "}" | ||
dakkar: Not sure, though | 14:57 | ||
dakkar | pugs (svn up 10 min ago) doesn't parse the '->' | ||
14:57
Aankh|Clone is now known as Aankhen``
|
|||
integral | err, the syntax for -> is: -> $a, $b { $a + $b } | 14:57 | |
iblech | integral: D'oh, of course, you're right | 14:58 | |
dakkar | oh. ok. | ||
ninereasons | however, it also will not work, if I recall | ||
dakkar | it does something. | ||
pugs> print map -> $a,$b {$a+$b} zip [1,2,3],[4,5,6] | |||
142536bool::true | |||
ninereasons | it doesn't appear as though map is doing anything there. | 15:00 | |
dakkar | righ | ||
integral | hmm | ||
theorb | I would expect that to give 5, 7, 9, though. | ||
integral ponders doing the Pugs.Parser -> Pugs.Parser.Internals move | 15:01 | ||
ninereasons | it would, if it saw $b | ||
but it doesn't - that's the bug, I think | |||
dakkar | pugs> print map -> $a,$b {"$a + $b"} zip [1,2,3],[4,5,6] | ||
1 + 4 + 2 + 5 + 3 + 6 + bool::true | |||
Juerd | 22 | ||
dakkar | yes, $b is not used | ||
iblech | Hrm -- I thought map is supposed to only take one argument? | ||
ninereasons | oh. well, you may be right, iblech | 15:02 | |
Juerd | iblech: No, if the closure has arity of 2, it takes 2 per iteration. | ||
dakkar | just like 'for' | ||
iblech | Juerd: Oh! Didn't know that. It doesn't seem to be implemented yet, though | ||
Forth_ | does 'next' work in while loop? | 15:03 | |
Juerd | dakkar: Write a test? | ||
dakkar | works in 'for' | ||
Juerd | Forth_: It should. | ||
dakkar | pugs> for (zip [1,2,3],[4,5,6]) -> $a,$b {print "a: $a b: $b"} | ||
a: 1 b: 4a: 2 b: 5a: 3 b: 6undef | |||
Juerd: where should I write it? | 15:04 | ||
Juerd | dakkar: In your favourite editor's write buffer | ||
dakkar | Juerd: ;-))) | ||
Juerd doesn't understand the question, really | |||
dakkar | let me rephrase | ||
how should I let the rest of the world know that I wrote the test, what is the content of said test, and that it should be included (as todo) in pugs's test suite? | 15:05 | ||
ninereasons | [+] zip[1,2,3],[4,5,6] | ||
:) | |||
Juerd | dakkar: Ask autrijus for an svn login with commiter access | ||
dakkar: perlmonks.org/?node_id=455988 | 15:06 | ||
dakkar ponders whether he wants that much power... | |||
Juerd | Why not? | ||
Every mistake you make, and you probably won't make any, can be reverted. | |||
dakkar | hmm... I might do it | 15:07 | |
PerlJam | dakkar: in lieu of getting commit access, you can send a message to [email@hidden.address] and someone with commit access will probably make it happen. | 15:08 | |
ninereasons | dakkar, I can assure you that you probably deserve commit access more than I do :-) | 15:10 | |
Juerd | I don't think it's about deserving | 15:11 | |
But instead about productivity | |||
If you can work with svn directly, you can do more in less time and you don't have to bother others every time you have a patch | |||
ninereasons | Juerd, nicely made point | 15:12 | |
should parens be required, for hyperoperators to work on lists like 3..8 ? | 15:13 | ||
PerlJam | And if you screw up in a subtle way, you can fix it without getting others involved :) | ||
ninereasons: er, why would they be required? | 15:14 | ||
ninereasons | (1..3) >>+<< (4..6) | ||
Juerd | ninereasons: No | ||
ninereasons | 1..3 >>+<< 4..6 | ||
Internal error while running expression: | |||
a but, I guess | |||
Juerd | ninereasons: >>+<< as a while has the same precedence as normal + | ||
ninereasons | s/but/bug/ | ||
dakkar | so it gets parsed as 1..(3>>+<<4)..6 ? | 15:15 | |
Juerd | Hm, yes | 15:17 | |
Juerd didn't expect .. to have such low priority | |||
wolverian | hmm. that's a surprise. I've always done 1..($a+$b) in perl5 too, even though + has tighter precedence. | 15:19 | |
Juerd | Me too | 15:20 | |
Limbic_Region | Juerd - your offer has leaked to the Monastery | 15:34 | |
albeit - buried in a thread | |||
perlmonks.org/index.pl?node_id=459994 | |||
integral wonders about the point of methOps | 15:38 | ||
Limbic_Region | integral - so we can all be as productive as autrijus | 15:39 | |
integral | heh | ||
Limbic_Region | meth does keep you up for days on end with an alert mind right? | ||
Odin-LAP | Depends. | 15:40 | |
You're referring to methamphetamine, correct? | 15:41 | ||
Limbic_Region | Odin-LAP yes, and I do realize it doesn't have the same effects in all people (ADD/ADHD for instance) | ||
it was meant to be an attempt at humor | 15:42 | ||
Odin-LAP | Well, that wasn't what I was referring to, actually. :> | ||
It depends on what you mean by 'alert', largely. ;) | 15:43 | ||
integral | hmm, the stuff for quotes is *scary* | 15:44 | |
Odin-LAP | Indeed. | 15:45 | |
dakkar | is there any way to apply a s/// to a constant and get a modified copy? | 15:48 | |
PerlJam | dakkar: that makes no sense. | 15:50 | |
gaal | doesn't the p5 idiom work? (my $modified = $constant) =~ s/// | ||
PerlJam | what gaal said | ||
dakkar | no, it looks for a &my subroutine | ||
gaal | alternatively, in some cases you might do with "is copy" :) | ||
it does? that looks like a precendece problem, maybe a bug, too. | 15:51 | ||
Limbic_Region | dakkar - you don't need the s in the /// | ||
unless you do that is | |||
dakkar | I don't? | ||
Limbic_Region | my ($match) = $string =~ /(foo)/; | 15:52 | |
dakkar | I want to do s:g/\s+/ / | ||
Limbic_Region | if you don't actually need to change the string but need to capture some pattern - you can get away without the s | ||
dakkar | I think I need the 's' | ||
Limbic_Region | if that made any sense at all | ||
integral | ah ha! There's some RuleParsers that don't actually do parsing, but just read the state | ||
Limbic_Region | dakkar - no you don't | ||
course I don't know how to do this in p6 | |||
Aankhen`` | What's wrong with t/builtins/lists/uniq.t? | 15:53 | |
dakkar | Limbic_Region: how do you collapse the spaces in perl5? | ||
gaal | L~R, when you have /g w/o capture the approach you suggest doesn't work that well. | ||
Limbic_Region | my $foo = join '', <extract all non-strings> | ||
integral wonders if getState can be changed to ask | |||
oh, ask is reader, state is get/put | 15:55 | ||
bah, there's no MonadState instance for GenParser | 15:56 | ||
Limbic_Region | errr - sorry, someone was talking to me | ||
my $foo = join '', <capture all non-whitespaces>; | |||
integral | my $foo = [~] <capture all non-whitespaces> ... | 15:57 | |
Limbic_Region | right - so we just need the fill in <> | ||
in p5 you might use () = $str =~ /(\S )/g; | |||
or something like it | 15:58 | ||
iblech | Yay! Juerd, you remember we talked about map dealing with n-ary functions, and I said they were not yet implemented? I correct myself :) | 16:02 | |
autrijus | rehi | ||
iblech | Hi | ||
autrijus | <- deep in $work, so will lurk a bit :) | ||
dakkar: [email@hidden.address] ? I'll send an invitation mail | |||
iblech: want to be metacommitter? :) | 16:03 | ||
iblech | autrijus: Sure :) | ||
autrijus | iblech: done. welcome aboveboard :D | ||
iblech | autrijus: :D | ||
autrijus | the admin ui url is rt.openfoundry.org/Foundry/Project/...?Queue=270 | 16:04 | |
Juerd | iblech: Wasn't that, like, just an hour ago? | ||
dakkar | print [~] (-> @c is copy {gather { while @c[0] { for @c -> {take shift $_} } } }(map { [ split "",$_ ] } ('Joec','utrk','shle','te6r',' r .','a h.','nPa.'))); | ||
iblech | Juerd: Yep :) | ||
dakkar | (that's what I was working on...) | ||
autrijus | dakkar: whoa. | 16:05 | |
Juerd | iblech: I remember that. | ||
autrijus | dakkar: commit it to examples/obfu/ please :) | ||
integral | :0 | ||
autrijus | actually, examples/japh/ | ||
dakkar | It will get printed on the t-shirt at the Italian Perl Workshop | ||
Limbic_Region | dakkar - in p5, this is how you might do it (without substitution) perl -e 'my $str="white spaces suck";my $new= join "", $str =~ /(\S )/g;print $new' | ||
dakkar | autrijus: ok, I'll do. | 16:06 | |
Limbic_Region | not sure if the same thing would work in p6 | ||
dakkar | Limbic_Region: but it's ugly ;-)) | ||
Limbic_Region | not really | ||
join '', $str =~ /(\S )/g # is ugly? | |||
Limbic_Region thinks it is kinda sexy | |||
dakkar | you're building a list to move between strings... | 16:07 | |
PerlJam | uglier than ($new = $str) =~ s/\s+//g; | ||
osfameron | At 3815, nmake gives "makefile(420) : fatal error U1087: cannot have : and :: dependents for same target" | ||
gaal | should -n on the commandline autochomp? it does now. | ||
contrast: /bin/echo -e "one\ntwo\nthree" | ./pugs -ne 'say "> $_"' | |||
Limbic_Region | *shrug* - I tend to not modify strings that I only want copies of | ||
gaal | and /bin/echo -e "one\ntwo\nthree" | ./pugs -e 'say "> $_" for =$*IN' | 16:08 | |
Limbic_Region | and if it is a constant I really didn't mean to modify it | ||
PerlJam | Limbic_Region: but that doesn't modify $str at all. | ||
Aankhen`` | Ahh. | ||
uniq.t failed because there was no argument between the code block and the next parameter in a function call. | 16:09 | ||
Limbic_Region | *shrug* | ||
dakkar | gaal: to get autochomp in p5 you have to use -l | 16:10 | |
PerlJam | "say" makes -l largely irrelevant for perl6 | 16:11 | |
gaal: I think autochomping is probably best. | |||
gaal | er, please look at my examples | ||
autrijus | hm | ||
print [~] (-> @c is copy { | |||
gather {@c.map:{take(.shift)} while @c[0]} | 16:12 | ||
} ([<Joec utrk shle te6r>,' r .','a h.','nPa.'].map:{[split "",$_]})); | |||
autrijus can't resist the golfing urge | |||
but in particular, $_.shift can be shortened to .shift | |||
gaal | i know how you autochomp in p5. i know about say. i was wondering if -n is supposed to autochomp, while =$fh not. | ||
dakkar | aha! that's the way. I got bitten by 'shift' not dofaulting to $_ | ||
autrijus | yeah, I'm glad there's ./method so .foo can mean $_.foo | 16:13 | |
Juerd++ | |||
and also, s/print/say/ | |||
PerlJam | gaal: and I think that -n autochomping is probably the best behavior (and =$fh not unless we asked it to) | ||
autrijus | say [~] (...) | 16:14 | |
also, if you make the @c slurpy, I think it will copy by default | 16:15 | ||
but that may be construed as a bug. | |||
or not. not sure | |||
gaal | autrijus, since you mentioned slurpiness :) i'm revisiting pipe open | 16:16 | |
and don't see why its fhs are indeed slurpy! | |||
autrijus | say [~](-> *@c { { @c.map:{take(.shift)} while @c[0] }.gather } | ||
([<Joec utrk shle te6r>,' r .','a h.','nPa.'].map:{[split "",$_]})); | |||
I shouldn't golf. it's even more addictive than nethack. | 16:17 | ||
autrijus tries to fight the withdrawal | |||
gaal: slurpy in which sense? | |||
gaal | it returns VHandles just like open, but look at this: | ||
./pugs -e 'my($i,$o,$e,$p) = Pugs::Internals::runInteractiveCommand("cat -"); say $i: "one";say $i: "two";close $i;say =$o' | |||
that last say, it slurps everything in $o | |||
shouldn't it have only read one line? | 16:18 | ||
autrijus | no, list context and all. | ||
say scalar =$o | |||
gaal | eh | ||
right | |||
autrijus | that hadn't changed since p5 :) | ||
gaal is teh dumb | |||
autrijus | nah. cryptocontext is teh confusing | ||
gaal | heh :) okay, got pointers for me on how to make a facade for this written in perl6? | 16:19 | |
autrijus | facade? this? | ||
you mean open("cat -")? | 16:20 | ||
gaal | i know i keep bringing this up and it isn't specced yet, but i want a.. usable open + pipe open already | ||
autrijus | open("cat -|"), even | ||
so, I don't know... I think both IPC::Run3 and IPC::Run are good UIs | 16:21 | ||
gaal | not that one, i think it was agereed it's a bad idea and that magic is reserved for io("cat -|") | ||
autrijus | so I'd be happy to see either ext/IPC-Run3/ or ext/IPC-Run/ | ||
but really, improvise :) | |||
gaal | hmmm, okay; but how does the run-of-the-mill programmer use a unidirectional pipe? | 16:22 | |
svnbot6 | r3816, iblech++ | * map can now take n-ary functions. | ||
r3816, iblech++ | * Added a test for n-ary map to map.t. | |||
gaal | really i'm asking: how to add a prim, that's implemented in perl6 | ||
autrijus | gaal: you can use op1 eval :) | ||
and write perl 6 in Prim.hs | 16:23 | ||
(not saying it's a good idea neccessarily) | |||
(but if you refactor it away a bit as Prelude.pm it probably works better) | |||
(Prelude.pm can also contain all the signatures for Prims, so we can kill the bad table) | |||
gaal | that's the step i'm missing, i don't see how that would work | ||
autrijus | how calling eval and evalExp would work? | 16:24 | |
it's easy... you already have params in the form of $?0 $?1 etc | |||
so in Prim.hs you can just say | |||
gaal | how Eval finds the code to actually run when it encounters a "prim" that isn't in Prim.hs | ||
autrijus | gaal: oh. you still need to declare it in Prim.hs table below | 16:25 | |
or find other ways to put it into initDecl | |||
or the emptyEnv | |||
gaal | what's initDecl? | ||
autrijus | gaal: anyway, you can first do it as a module and we can see how to integrate it makes more sense | ||
err, primDecl | |||
it's the list of symbols to load at init. env. | 16:26 | ||
gaal | gotcha, thanks. | ||
autrijus | np :) | ||
autrijus $works and lurks | |||
I think with good codegen, I'd welcome defining most prims as Prelude.pm | 16:27 | ||
gaal | src/Prelude/Prelude.pm ? | ||
autrijus | but currently it will slow things down a lot | ||
gaal | i'm starting modestly, with pipe1 | 16:28 | |
so that most tests can get rid of the temporary files :) | |||
Limbic_Region | speaking of things being slow | ||
autrijus | gaal: src/perl6/Prelude.pm probably | ||
Limbic_Region | I think my cribbage hand scoring code might be good to profile to find bottlenecks | ||
it is S-L-O-W | |||
autrijus | but maybe ext/Prelude/ for now really | ||
theorb | If it's under src, it should be under Pugs. | ||
autrijus | or ext/Builtins/ | ||
Aankhen`` | Would introducing HTML::Entities as a required module for CGI be a Bad Thing (tm)? | 16:29 | |
autrijus | Limbic_Region: yeah. sadly the bottlenexk is well known | ||
Limbic_Region: it's op dispatch loop | |||
Limbic_Region | ok | ||
Forth_ | hmm...my make install on FreeBSD stopped at /usr/bin/perl -Iinc util/version_h.pl src/Pugs/pugs_version.h | ||
autrijus | Limbic_Region: and that part can't be fixed in interpreter core without rewriting Eval.hs -- something I don't want to do | ||
theorb | Hm, autrijus, I considered this a while ago, but didn't say anything. | ||
autrijus | Limbic_Region: so instead I'll just improve the codegen part. | ||
theorb | Should opN return a bit of code to do something, rather then doing it? | ||
Limbic_Region | well - I can improve things by using less ops of course | 16:30 | |
autrijus | Limbic_Region: because we know that by compiling things to something lower leve, the op dipsatch loop will be gone | ||
Limbic_Region: sure, but that's not the solution for general adopters | |||
Limbic_Region | but I intentionally made it a boheamoth so there would be a lot of room for improvement | ||
autrijus | theorb: "code" | ||
theorb: p6 code? | |||
Limbic_Region | right autrijus | ||
theorb | Then we can replace the opN call with the thing that opN returns, so we only have to do the lookup once. | 16:31 | |
No, haskell code. | |||
autrijus | Limbic_Region: as I said on pm, my priority now is 1)interop 2)codegen | ||
theorb: oh. in -O mode GHC already does that for you. | |||
I think that's what skew found out. | |||
theorb | Oh. | ||
autrijus | referential transparency and all that. | ||
theorb | Noddage. | ||
That's why I haven't brought this up before -- I thought haskell might have already been that smart. | 16:32 | ||
autrijus | it is indeed that smart :) | ||
theorb | Turns out I should have stayed with that first thought. | ||
autrijus | that's okay :) | 16:33 | |
the GHC optimiser is still largely a mystery to me. | |||
Limbic_Region | autrijus - out of curiosity, which should be faster (assuming both were implemented currently) | 16:35 | |
grep { $_<val> == 5 } @combo; | |||
or none( @combo>><val> ) == 5; | |||
err - there should have been a ! in front of the grep | |||
I ask because part of the problem with the cribbage scoring is that I had to work around unimplemented features (which may make things faster naturally) | 16:36 | ||
autrijus | any(@combo>>.<val>) == 5 | ||
Limbic_Region | is the . necessary? | ||
autrijus | I think so. | ||
Limbic_Region | if so, the two tests gaal added for me need to be changed | 16:37 | |
autrijus | the . is mandatory unless the preceding things is a quotelike | ||
Limbic_Region | t/operators/hyper.t (dereferencing tests) | ||
autrijus | or an identifier | ||
which >> is neither | |||
Limbic_Region | ok - so the test needs to be changed | ||
autrijus | k. I'm sure someone will take care of that :) | ||
Limbic_Region | and having >> would make it faster | ||
autrijus | to answer your question -- I don't nkow. that's why I want clkao's Benchmark.pm. | ||
Limbic_Region | ahhh | 16:38 | |
ok | |||
autrijus | it looks like same number of runloop will be needed. | ||
but any() will only run once if all val in @combo is identical | |||
so it has the potential of being faster. | |||
Limbic_Region | and I have a lot of map() that could be transformed to >> as well | 16:39 | |
autrijus | but identity/equiv test may not be faster than "== 5" | ||
so I don't know. :) | |||
gaal | do we have ([ $x, $xs ]) sub params already? | ||
Limbic_Region | *shrug* - clkao's Benchmark.pm will be a great value indeed | ||
autrijus | gaal: no, not unpacking yet | ||
I think he's already got it written. but he said he's to lame to finish up and check in | 16:40 | ||
gaal | 'nks. | ||
Limbic_Region | seen clkao | ||
jabbot | Limbic_Region: clkao was seen 3 hours 6 minutes 48 seconds ago | ||
Limbic_Region | I will beg/grovel next time I see clkao for it then | 16:41 | |
autrijus | I think clkao only accepts the .complain method | ||
so that's what you should invoke him with | |||
theorb | autrijus++ | ||
Limbic_Region | oh - I am sure the way I am going about counting 15s in the cribbage hand is definately not the smartest way to do it | 16:42 | |
and runs for that matter | |||
gaal | do we have all(<module package>) ? | 16:45 | |
svnbot6 | r3817, adehohum++ | Fixing undef tests | 16:46 | |
autrijus | gaal: yes | 16:47 | |
but currently they are synonyms | |||
gaal | good enough for me :) | ||
autrijus | amusing answer to revdiablo's thread: perlmonks.org/?node_id=460030 | 16:48 | |
"I'm not using Perl 6 because... I'm too busy learning Haskell. Seriously. The Pugs project has convinced me that Haskell is an incredibly powerful language and I want to know why and use that power myself." | 16:49 | ||
gaal | heh | ||
Juerd | lol | 16:51 | |
Meanwhile, I'm wasting my time fighting yet another php fanboy on PM | |||
perlmonks.org/?node_id=460015 | |||
theorb | It's actually a very interesting question for me. | 16:52 | |
autrijus mumbles something about north wind and the sun | |||
theorb | I don't think we've done that much stealing from Haskell -- in purticular, I still see lots of useful Haskellisimis that p6 doesn't have. | 16:53 | |
Juerd | I wonder how [thinker] with only 100 posts, the top post having a reputation of around 50, can be saint. | ||
Were the boundaries lowered? | |||
autrijus | theorb: such as? | 16:54 | |
gaal | ./pugs -e 'module A; package B; say $?PACKAGE' --> 'main' | ||
autrijus | I'd like "is pure" in functions. | ||
theorb | The ability to write lots of variants on a function so easily. | ||
autrijus | is it not multisub? | ||
theorb | Pattern-matching makes it so easy, though. | 16:55 | |
autrijus | I think cabal got value-based mmd in, too | ||
and the where forms | |||
gaal | that's a bug, isn't it? | ||
autrijus | so the thing we don't have yet is pattern guard | ||
gaal | when put in a file, the resutl is "A". | ||
theorb | Where forms? You mean the backwards lexical scope thing? | ||
dakkar | gaal: try with a newline after each semicolon... | ||
autrijus | theorb: no, p6 where forms | 16:56 | |
multi sub moose ($x where { $x > 7 }) { ... } | |||
theorb | Gotcha. | ||
gaal | dakkar, no difference. | ||
theorb | Hm. | ||
gaal | autrijus++ # moose reference | 16:57 | |
autrijus | gaal: that's a bug. write test for it :) | ||
theorb | I still feel like there's a difference there, but possibly because I haven't seen the p6 version in action. | ||
autrijus | theorb: there is one single feature that haskell have that I wish p6 has. | ||
that is, tagged unions. | |||
haskell's pattern matching is so powerful because all its data types are tagged unions. | |||
and so we can get warnings about incomplete multisubs, and do structural folds, etc | 16:58 | ||
but I'm not sure how to fit tagged unions with enums and roles and objects | |||
so I don't really see a p6l proposal soon :) | |||
gaal | urrrr? package doesn't work at all. | ||
Juerd | gaal: But if you have been paying attention to the PHP hype, you'd know that namespaces are old fashioned anyway | 17:00 | |
A modern dynamic language that most beginning programmers choose to work with doesn't need them | |||
So neither does Perl 6 | |||
;) | |||
gaal will see about mending his ways | |||
integral has a silly idea for the parser | 17:01 | ||
Forth_ | I build pugs as user, make install as root, so it stops in version_h.pl waiting for 'svk info', maybe we can skip it | ||
Juerd | integral: Silly ideas can grow to be huge projects | ||
integral | rather than calling ruleExpression directly all over the place, we store the ruleExpression as a field in the RuleParser monad. Just so everything doesn't depend on ruleExpression | ||
integral mentions something about performance sucking | |||
theorb | Forth_: The problem is that with svk there's no one file that's always touched when the version goes up, so we can't make the rule depend on a file. | 17:02 | |
boch | is perl6 still under development? | ||
theorb | boch: Yes, but it's often usable anyway. | 17:03 | |
integral | boch: it's going to be for the forseeable future :-) | ||
boch | where can i get it? | ||
theorb | Get svn, do svn co svn.openfoundry.org/pugs/, and compile. | 17:04 | |
There are also binary distributions. | |||
autrijus | boch: pugscode.org/ :) | ||
Jonathan++ # new parrot/pugs binbuilds up on www.jwcs.net/~jonathan/perl6/ | 17:05 | ||
dakkar | I just checked in my JAPH | 17:06 | |
autrijus | dakkar++ # welcome aboard! | ||
svnbot6 | r3818, dakkar++ | a simple JAPH written for the t-shirt of the Second Italian Perl Workshop | ||
autrijus | dakkar: you should note the t-shirt thing in the script itself :) | ||
as comments | |||
dakkar | how doI run a single test? | ||
autrijus | dakkar: make install, then ./pugs t/foo/bar.t | 17:07 | |
dakkar | oh, install is required... | ||
autrijus | or make | ||
then ./pugs -Iblib6/lib t/foo/bar.t | |||
Forth_ | in my case, the root has no repository so 'svk info' ask user to press y/n, do we need to handle this in script? | 17:08 | |
dakkar | autrijus: ok, I hadn't seen the 'blib6' dir | 17:09 | |
autrijus | Forth_: I don't know... if you can figure out how, just fix it in script | ||
dakkar | I'm going home, see you later | 17:16 | |
svnbot6 | r3819, dakkar++ | added a comment to the JAPH stating purpose and authorship | ||
r3820, dakkar++ | test for a bug in the way map looks (or doesn't look) at the signature of the passed sub/block | |||
r3821, iblech++ | unTODO dakkar++'s test, as map with n-ary functions is implemented now. :) | 17:21 | ||
autrijus | wt...? :) | 17:23 | |
obra | heh | ||
presumably a copy and paste | |||
autrijus | no, it's already there :) | 17:24 | |
so just a simple unTODO. | |||
gaal | in terms of t/ organization.... namespaces belong in? syntax? general? builtins? | 17:25 | |
pugsbugs? :) | 17:26 | ||
well, r3822. | 17:30 | ||
oh! SomePack::func() doesn't work either! | 17:32 | ||
svnbot6 | r3822, gaal++ | add tests for failing namespace declarations | ||
autrijus | gaal: right, that only works for methods at the moment | ||
gaal | ....while functions are always exported? | 17:33 | |
autrijus | gaal: so please test away! this will all be fixed when I import the metametametametametamodel | ||
yeah | |||
gaal | coro meta { "meta" } commit [~] meta | ||
Aankhen`` | When you have a `given (...) { ... }`, can you put statements like `if (...) { }` within it and then have any `when` statements within that statement also refer to the original `given`'s topic? | 17:34 | |
iblech | Aankhen``: I think so. | 17:35 | |
Aankhen`` | OK. | ||
Thanks. :-) | |||
autrijus | yes. given and when are very decoupled | ||
that is very good design. | |||
Aankhen`` | Yey. | ||
gaal | autrijus, i'm getting a "cannot cast from" error. how can i add coordinates to the three places in AST.Internals that emit this error? | 17:37 | |
svnbot6 | r3823, Aankhen++ | * CGI.pm: added &escapeHTML and &unescapeHTML. | ||
autrijus | gaal: sure! | ||
gaal: and convert them to castFailM if you have tuits. but adding coord is fine | |||
gaal | there was a "how" there :))) | 17:38 | |
gaal <<- willing to work on this, of course, but i still need some handholding when it comes to Haskell | |||
autrijus | gaal: just change the strings | ||
oh wait, you mean the Pos | 17:39 | ||
you really need to promote castFail to castFailM | |||
gaal | yes, i don't think i have it with me there. | ||
autrijus | you do that by rewriting doCast/vCast into fromVal forms | ||
gaal | i thought some about what you just said, autrijus. | 17:41 | |
the best response i could come up with was, "huh?" | |||
autrijus | look at line 423 | 17:42 | |
there's lots of vCast there | |||
gaal | yes | ||
svnbot6 | r3824, Aankhen++ | * CGI.pm: allow &escapeHTML and &unescapeHTML to be exported. | ||
Aankhen`` | BBL. | ||
autrijus | you can fix it trivially by changing all the vCast into fromVal' | ||
and change the RHS of = into return | 17:43 | ||
eg: | |||
vCast VUndef = "" | |||
into | |||
fromVal' VUndef = return "" | |||
and finally, change the castFail to castFailM. | |||
I wish I can be more helpful, but I need to work a bit now :) | |||
gaal | :) | ||
iblech | Yay, reduce with n-ary functions implemented, too :) | 17:48 | |
autrijus | iblech++ | 17:49 | |
Juerd | Yay | 17:50 | |
Is arity detected for placeholder blocks yet? | 17:51 | ||
autrijus | sure is. | ||
Juerd | { $^a + $^b }.arity == 2 | ||
Nice | |||
autrijus | pugs> { $^a + $^b }.arity | ||
2 | |||
Juerd | Whee | ||
I'm burning knoppix by the way | |||
So the new server can do more than just blow out hot air | |||
gaal | nice.say $autrijus: `fromVal'' is not a (visible) method of class `Value' | 17:55 | |
autrijus | gaal: oh. sorry. do away with the ' | 17:58 | |
gaal: or use a "where" form | |||
and call the fromVal' from the second fromVal thing | |||
or introduce another doFromVal to the Class Value definition | 17:59 | ||
and call it from there, etc. | |||
not sure. try to improvise :) | |||
gaal | i'll have to, because just fromVal makes a pattern overlap... | 18:00 | |
svnbot6 | r3825, autrijus++ | * fix typo in READTHEM | 18:20 | |
r3826, iblech++ | * reduce() can now take n-ary functions. | 18:29 | ||
r3826, iblech++ | * Added a test for n-ary reduce to reduce.t. | |||
r3827, iblech++ | Oops, forgot to checkin the modified Prim/List.hs. | |||
r3828, iblech++ | die "abc\ndef\nghi" correctly vertically aligns now. | |||
r3829, iblech++ | util/livecd -- Increase the default initrd size, as Pugs (and/or Parrot) gained | |||
r3829, iblech++ | size. I changed this yesterday, but didn't checkin as we were in preflight. | |||
iblech | dakkar: Remember the test you wrote (n-ary map)? n-ary map is now implemented, as well as n-ary reduce :) | 18:32 | |
dakkar | iblech: yes, I just noticed. You implemented n-map before I commited the test ;-) | 18:34 | |
svnbot6 | r3830, iblech++ | READTHEM -- Corrected Leopold TĆĀ¶tsch's name (it's ĆĀ¶, not Ć ). | ||
Khisanth | hmm | ||
svnbot6: doesn't do unicode yet? | |||
iblech | Khisanth: It's not svnbot which can't do Unicode, but the svn log of the system svnbot6 runs on | 18:38 | |
Khisanth: (svnbot just pipes the output of svn log to IRC) | 18:39 | ||
Khisanth | I see, was just a bit confused since it seemed like you can have your source in unicode but not actually write code that does I/O that handles it :) | 18:41 | |
iblech | :) | ||
Corion | Hmmm. Can anyone come up with tests that maybe confirm that times() actually works? I'm not sure that it does, but I don't know how to really put that into a test... (I believe my Win32 implementation is buggy due to GHC complaining) | 18:42 | |
autrijus | Corion: ./t/unspecced/times.t | ||
Corion | autrijus: Hmmm. According to that test, it works, but it doesn't convince me really :) | 18:43 | |
autrijus | Corion: you can sleep 10, do a long while loop, then see what times() returns | ||
Corion | Aaaah - maybe I should also test the converse. [-] times(), times() ~~ (0,0,0,0,0) | ||
(except that the syntax is wrong, of course) | |||
autrijus | you had me mind-bended for a moment :) | ||
Corion | ... what would be the syntax to apply a minus-zip for the two lists returned from two times() calls? | 18:44 | |
knewt | iblech: no *.UTF-8 locale installed on the system it runs on? | ||
iblech | knewt: Exactly. | ||
ninereasons | man, I really like the reduce metaoperator. When I'm working in perl5 I really feel the lack of it. It's a good pain. | ||
knewt | iblech: i only have en_GB.UTF-8 on mine nowadays :) | 18:45 | |
Corion | I want @a = times(); @b = times(); @c = zip(@a, @b) -> $a, $b { $a - $b }; @c ~~ (0,0,0,0,0); # except more elegant | ||
... but maybe I should not write obfu in test code :) | |||
iblech | Corion: @a = times(); @b = times(); @c = map { $^a - $^b } zip @a, @b | 18:46 | |
knewt: de_DE.UTF-8 on my desktop systems here :) | |||
Corion | iblech: That's somewhat nicer, true :) But still, I feel that this would be an ideal use of [-], except that it doesn't work that way :) | ||
Corion edits times.t | 18:47 | ||
dakkar | @c= @a Ā»-Ā« @b ? | ||
Corion | dakkar++ | ||
autrijus | ninereasons: I also miss multi-param for(){} a lot :-/ | ||
Corion | That was what I was looking for (except that I'll use the ASCII variant | ||
autrijus | but I feel I'm writing better perl5 because of perl6's influence :) | ||
dakkar | regarding n-ary reduce: | 18:48 | |
knewt | iblech: i switched over back before christmas, since i knew that hoary was moving over to native utf8, so i thought i'd do that bit before the hoary shift | ||
dakkar | 1st: the test doesn't work because of the '$^c undeclared' bug | ||
2nd: is it supposed to work the way the test implies? | 18:49 | ||
ninereasons | autrijus, me too. I think that's the way it's supposed to work - perl6 eloquence forces better perl5ish imitation | ||
iblech | knewt: Yeah, utf-8 definitely pays off, especially with Perl 6's Ā«Ā» :) | ||
ninereasons | s/force/encourage/ | ||
iblech | dakkar: Did you svn up and recompile? | ||
autrijus | s/encourage/force/ # really! | ||
ninereasons | :-) | 18:50 | |
knewt | ok, request for crash space in vienna during the workshop made. next it's time to book the flights (which is made more annoying due to it not being me paying :( ) | ||
dakkar | iblech: maybe not recently enough... say, 30minutes | ||
I'll recompile | |||
iblech | dakkar: Yeah, 30min are ancient in Pugs terms :) I checked the n-ary reduce code 20:29 in | ||
autrijus | 30min is downright stone age. | 18:51 | |
knewt | iblech: yep. and i've got a script loaded into irssi that converts stuff from people using other charsets into utf8 for me | ||
iblech | knewt: How does the script detect it's not utf-8? Because in many cases, (say) iso-8859-15 is valid utf-8, too... | 18:52 | |
dakkar | iblech: re: encoding: only for the ASCII subset, usually | ||
it takes more time for my machine to compile pugs than for you guys to commit a new version... | 18:53 | ||
iblech | (make unoptimized)++ | ||
dakkar | still '$c undeclared'... am I missing something? | ||
knewt | iblech: it has some (very) small autodetection (/Ć”|Ć©|Ć|Ć³|Ćŗ|Ć£|Ƨ|Ć |Ć“|ĆŖ/). in cases it doesn't figure out automatically i can manually tell it that person A is using charset B | 18:54 | |
PerlJam | dakkar: did you not declare $c? | ||
Corion learns that where Perl has @Larry, Haskell has @Simon :) | |||
knewt | iblech: i could add other stuff to the guess list, but i can't be bothered | ||
iblech | knewt: Ah, that explains it. | ||
PerlJam | dakkar: er, what's some code that exercises the bug? | ||
iblech | dakkar: Both reduce.t and map.t run fine here | 18:55 | |
iblech checks if he hasn't forgotten to checkin a file | 18:56 | ||
No, all files checkedin. | |||
ninereasons | dakkar, I've changed a test to eval_is. svn up and see if it works, now. | ||
for reduce.t, that is | 18:57 | ||
dakkar | that's strange... If I do '{$^a+$^b+$^c}(1,2,3)' it works | ||
iblech | dakkar: What's the code you tried which does *not* work? | 18:58 | |
dakkar | iblech: reduce.t :-( | ||
iblech | ninereasons: It can't work now, as eval_is won't find @array | ||
ninereasons | iblech, test 8 of reduce.t fails for me as dakkar describes. | ||
Corion | Hmm. If I get negative values from times() I guess it's safe to assume that my implementation is broken ;) | ||
ninereasons | i see. iblech. I'll try something else. | 18:59 | |
iblech | dakkar: Try, in interactive Pugs: reduce { $^a + $^b + $^c } 1,2,3,4,5,6 | 19:00 | |
svnbot6 | r3831, ninereasons++ | reduce.t change a failing test to eval_is | ||
r3832, iblech++ | unEVAL n-ary reduce test so the test can find its lexical vars. | |||
autrijus | poll: If I get next round of tuits to work on interop, should I work on inlining perl 5 in Pugs (libperl embedding), or inlinng Pugs in Perl 5 (libghc embedding)? | 19:01 | |
assuming each takes equal time. I'm trying to measure use case here :) | |||
i.e. whether it makes more sense to use perl5 code from foo.p6, or to use perl 6 code from foo.p5 | |||
libperl embedding probably wins us libponie embedding in parrot codegen when it's there | 19:02 | ||
libghc embedding wins us Inline::Haskell as well. | |||
stevan | wow | ||
thats a hard one | |||
dakkar | sorry all, my bad: svn up; make doesn't build correctly, maybe some problems with timestamps on my machine | ||
iblech | Inlining Perl 5 in Pugs, i think, but I'd like Inline::Haskell for Perl 5, too :) | ||
stevan | I think libperl embedding it more useful | 19:03 | |
but libghc is more fun :) | |||
iblech agrees with stevan | |||
autrijus | mmm. :) | ||
dakkar | iblech: now everything works as it should | ||
stevan | autrijus: I think you should go for "fun" since Pugs is not really ready to be "useful" yet | ||
iblech | dakkar: :) | ||
dakkar | which makefile target build the 'blib6' dir? | 19:04 | |
autrijus | dakkar: "all" | ||
stevan: ok. Pugs is optimised for fun anyway | |||
stevan | and actually Inline::Haskell could be useful more so than Inline::Pugs | ||
autrijus | (will probably continue to be) | ||
dakkar | and if I want an unoptimized build, and an updated bilb6? | ||
autrijus | "make unoptimised; make" | 19:05 | |
dakkar | doh | ||
autrijus | (I know, counterintuitive) | ||
ninereasons | iblech, how about if I make the declaration of @array part of the eval. That should work, shouldn't it? | 19:07 | |
iblech | ninereasons: Yeah, and is eval('...') would work too. But does it still not work? Latest revision? | 19:08 | |
ninereasons | mm. 3815 ? | 19:09 | |
dakkar | ninereasons: up, make, test again. works for me | 19:10 | |
iblech | ninereasons: 3815 is ooold, try at least r3827 | ||
ninereasons | iblech, dakkar, will do. thank you. | ||
I don't know why it was so old anyway. my last build must have failed. | 19:11 | ||
ah.. environment fuzziness, actually. r3830 was available, but not in my path. All works now. | 19:13 | ||
iblech | :) | ||
dakkar | a non-type-safe reduce is scary... | 19:22 | |
my @a=([0,1],2,3,4,5);@a.reduce:{[$^a[0]+$^b,$^a[1]*$^c]} | 19:23 | ||
prints | |||
(6,15) | |||
iblech | Yep, and an appropriate (Haskell) type signature would be: reduce3 :: ((a,a) -> a -> a -> (a,a)) -> [a] -> (a,a) | 19:26 | |
dakkar | ((a,a)->a->a->(a,a))-> (a,a) -> [a] -> (a,a) ? | 19:28 | |
iblech | So it is type-safe -- the start value and the result are two-element lists, and the reducing function takes those two-element lists and two values, and returns another two-element list | 19:29 | |
dakkar: That's the way to denote a type in Haskell. It reads as: | |||
dakkar | well, my @a is not really an homogeneus list... | ||
more than [a] it sholud be [Either a (a,a)] | |||
or something to that effect | 19:30 | ||
iblech | reduce3 is a function which takes a function which needs a tuple of a's and two a's and produces a tuple of a's, a tuple of a's and a list of a's and returns a tuple of a's. | ||
And because nobody can parse this sentence, there're type signatures :) | |||
dakkar: That's because the first element of the input list denotes the start element | 19:31 | ||
dakkar | yes, I know foldl ;-) | ||
iblech | dakkar: Therefore I passed the start value as an own parameter | ||
dakkar | iblech: and were is it, in your reduce3 signature? | 19:32 | |
iblech | dakkar: It's the third (a,a) | ||
dakkar | isn't taht supposed to be the *return* value? (cfr. the signature I wrote) | 19:33 | |
Aankhen`` | Is this valid: for %hash.kv -> $key is rw, $value is rw { ... } | 19:34 | |
iblech | No, there're four (a,a)s in the signature. The third one is the start elem, and the last one the return value | ||
dakkar | my client must have dropped some chars... | ||
Corion | Is there a noninteractive way to make GHC show (in trace()) the type of a variable? | 19:35 | |
PerlJam | Aankhen``: surely you can't modify the keys of a hash like that. | ||
Aankhen`` | I figured it wouldn't hurt to ask. :-) | ||
iblech | PerlJam: Why not? Iff .kv returns a list of lvalue lists... | 19:36 | |
dakkar: Oh | |||
dakkar | .kv returns aliases or copies? | ||
integral | what happens if you change the key to be equal to another key in the hash? That seems to me to be the real corner case | ||
Aankhen`` | In a function call, can you use `foo(*%bar)` to pass %bar in such a way that it's assigned to the slurpy named params of &foo? | ||
iblech | Corion: Wanted that, too. | ||
Corion | I guess we could steal it from ghci, but I'd prefer a premade solution ;) | 19:37 | |
iblech | integral: Hm, right... | ||
PerlJam | "slurpy named params"? | ||
integral | plus a hash isn't a function from a box to a box, it's a function from a value to a box | ||
Aankhen`` | PerlJam >> If you have `sub foo (*%extra)`, can you use `foo(*%hash)` so that %extra := %hash? | 19:38 | |
PerlJam | Aankhen``: Hmm. | 19:39 | |
Aankhen`` | IIRC, `foo(*@bar)` would let the slurpy @_ or equivalent in foo take on @bar. | ||
PerlJam | slurpies are copies in pugs I think. I don't know if that's the proper behavior though | ||
Aankhen`` | Well, basically, if I use `foo(*%hash)`, can I access the keys in %hash using %extra<name>? | 19:40 | |
PerlJam | Aankhen``: sure. | ||
Aankhen`` | Yeesh, I need to be more consistent with my backticks. | ||
OK. | |||
Thanks. | |||
PerlJam | Just keep in mind that foo(*%hash) will flatten %hash into a list before foo() ever sees it. | 19:41 | |
Aankhen`` | Ah. | 19:42 | |
Hrm, that doesn't work. | 19:43 | ||
svnbot6 | r3833, bsmith++ | * moved newClass from Pugs.Parser to Pugs.AST. | ||
r3833, bsmith++ | * moved ruleProgram and runRule to Pugs.Parser.Program. | |||
r3833, bsmith++ | * moved unsafe* from Pugs.Parser to Pugs.Parser.Unsafe. | |||
Aankhen`` | Aha! | 19:49 | |
The solution was one of those obvious things which my mind refuses to see. | |||
foo(hash => %hash); | 19:50 | ||
autrijus | your mind is p5ised :) | 19:52 | |
Aankhen`` | Heh. | ||
I'm working on &CGI::redirect. | |||
autrijus | ooh | 19:53 | |
Aankhen`` | Was trying to figure out how to pass extra parameters from that to &CGI::header. | ||
(I don't know Haskell, so I'm trying to help by working on porting modules) | |||
So far, I love Perl 6. Once it becomes popular, people will probably feel it's just more advanced line noise, but personally, I think it's looking quite elegant so far. :-) | 19:54 | ||
svnbot6 | r3834, bsmith++ | Removing unused imports from Pugs.Parser.Program. | ||
Aankhen`` | Of course, my own opinion might change once more of it is implemented. :-P | 19:55 | |
ninereasons | s/-noise/-music/ | ||
Aankhen`` | s/-/ /g | 19:56 | |
autrijus | s:g/-/ / | ||
Aankhen`` | OK, OK, my mind is P5ised. :-P | ||
Corion | Can anybody tell me what getProcessTimes() returns under Unix? Is it an int, or a 64bit number? And what units? | 20:02 | |
svnbot6 | r3835, iblech++ | Pugs.Pretty -- Use split function instead of hand-rolled foldl. | 20:03 | |
Corion | (or, if it returns clock_t, what is clock_t on Win32 and is it compatbile with the 64-bit stuff returned by GetProcessId() ?) | ||
dakkar | Corion: getProcessTimes in what language/library? | 20:04 | |
Khisanth | getProcessTimes doesn't look very unixy :) | 20:05 | |
Corion | dakkar: glibc or whatever libc | ||
whatever is used to implement Perl5 times() on Unixy systems ;) | |||
dakkar | ok | ||
Khisanth | ah that | ||
Corion | Hmm - I should Just Check what Perl5 on Win32 does and reimplement that ;) | ||
Khisanth | it returns time_t | 20:06 | |
gaal | which is an int, isn't it? | ||
Corion | Ewww. It returns seconds. Good bye resolution :( | ||
Oh well - makes my job easier :) | |||
gaal | noooo! let's have hi res by default | 20:07 | |
Corion | If you tell me where to stuff the extra precision ... | ||
Hmmm - I could return a float upwards and let other people worry about it :) | |||
... instead of returning a CClock, which is clock_t | 20:08 | ||
gaal | setitimer | ||
seems to have ms granularity | |||
Corion | Does Haskell have a fixed point numeral ? Or an arbitrary precision numeral?` | 20:09 | |
integral wonders why runRule takes a function as its second argument | 20:11 | ||
gaal | Corion++; # helping with this: pugs -V | find "archname" --> archname: MSWin32-x86-multi-thread | ||
Corion | Maybe Data.Ratio | ||
integral | the caller can just compose runRule with that function for the same effect :-/ | ||
Corion | gaal: ? Where did I help with that? | ||
gaal: BTW, pugs -V:archname is shorter :) | |||
gaal | the compiler thingie. | ||
Corion | (and doesn't require a second program) | ||
gaal | indeed! nor one as atrocious as window's find | 20:12 | |
autrijus | integral: please refactor mercilessly | ||
Corion: VRat is infinite precision | |||
Khisanth | hmm | ||
integral | autrijus: oh, I am, I have a very nasty trick up my sleeve ;-) | ||
autrijus | integral++ # getting nasty with pugs | ||
Corion | autrijus: Yeah - I'll try to use that when (re)implementing getProcessTimes for Win32 | ||
... resp. I'll return Data.Ratio and let the upper levels worry :) | 20:13 | ||
autrijus | Ratio takes a param | ||
VRat is Ratio for VInt | 20:14 | ||
VInt is Integer | |||
Corion | Ewww. That means that Compat.hs needs to know about Pugs.Types, right? | 20:15 | |
autrijus | no | ||
you just return a Rational | 20:16 | ||
you see, VRat is a synonym for Rational | |||
how convenient :) | |||
Corion | ;) | ||
autrijus | type Rational = Ratio Integer | ||
type VInt = Integer | |||
type VRat = Ratio VInt | |||
ergo, VRat =:= Rational | |||
autrijus praises the power of syllogism | |||
gaal | Haskell also supports enthymeme, autrijus | 20:17 | |
minimal complete definitions. | |||
autrijus | indeed. | ||
Haskell is a very reasonable language. | 20:18 | ||
using Haskell is like having the power of Reason. | |||
all bad guys listen to Reason. | |||
(obscure Snow Crash reference) | |||
gaal acknowledges that, and also notes this is why it sometimes looks Greek to him | |||
i got the reference :) | 20:19 | ||
ninereasons | someone will have to pick up that quote, for sure: <autrijus> using Haskell is like having the power of Reason. | ||
gaal | and mine was an obscure reference to Aristotle | ||
but not PM's aristotle | |||
autrijus | ninereasons: just throw it to QuotesPage | ||
# haskell.org/hawiki/QuotesPage | |||
I'm sure shapr will appreciate that | |||
I got that too | 20:20 | ||
seems passing by reference is quite efficient around here | |||
Corion | Hmmm. How do I declare my types? I have "data FILETIME = CULLong", but ghc complains later that it can't match Expected: CULLong against Inferred: FILETIME | 20:24 | |
Maybe I should just banish my intermediate type and hope for the best ... | 20:25 | ||
iblech | Corion: (foo :: FILETIME)? | 20:27 | |
integral | wouldn't you want: data FILETIME = CULLong CULLong, or s/data/newtype/, or type FILETIME = CULLong ? | ||
autrijus | type FILETIME = CULLong | 20:28 | |
Corion | autrijus: Aaah - "type", not "data" ... | ||
Maybe I should do some of the exercises again ... | |||
autrijus | type is a simple alias | 20:29 | |
data is a tagged union | |||
Corion | Aaaaah | ||
autrijus | and newtype is a tagged union that only has one constructor. | ||
(oversimplifying a lot) | |||
Corion | autrijus: Oversimplifying is good! :) | ||
autrijus | so newtype is more like just a simple box label that will always be compiled away | 20:30 | |
Aankhen`` | Hrm. | 20:33 | |
Our CGI.pm has some parameters switched around. | |||
Is it okay if I fix it so that we're as backward-compatible as possible? | |||
Corion | Haskells power is really cool - the different type for the times values just bubbles upwards without problems ;) (except in the implementation, but that's secondary :) ) | ||
Aankhen``: People should use named parameters anyway, but it should either do sanity checks or have them the same. | 20:34 | ||
Aankhen`` | That's a yes, then? | ||
Corion | Aankhen``: But you might want to discuss that with the respective author - maybe there is a reason. | ||
Aankhen`` | Hrm, that's right. | ||
gaal | forum2.org/gaal/pugs/smoke-xp.html # i'll get parrot included in a bit | ||
Aankhen`` | Ovid doesn't seem to be around... | ||
autrijus? | 20:35 | ||
autrijus | yo Aankhen`` | ||
Aankhen`` | Hi. | ||
autrijus | Aankhen``: sure, switch around, write more detailed commit log, earn more ++s | ||
and check a bit that examples/memory_game still runs | |||
which is important (kind of) | 20:36 | ||
Aankhen`` | Heh, okay. | ||
Corion | Hmmm. What should the clocksPerSecond() thing in Prim.hs be? Should that go into Compat.hs, because under Win32, it could become 10 million, while it currently is 1 million... | 20:39 | |
(I could also fix getProcessTimes to return the values divided by 10 already :) ) | 20:40 | ||
autrijus | nono | 20:41 | |
just move it to compat where it belongs | |||
Corion | autrijus: Willdo - except that Win32 maybe has different timer resolutions, but I'll see that through the breaking tests :) | 20:43 | |
autrijus | Corion: you can have a different clocksPerSecond for the win32 part and posix part | ||
Corion | autrijus: Yes, but I think that Win32 itself is inconsistent :) | 20:44 | |
... because time() works, and times() returns something different. We'll see. | |||
gaal | ooh, precedence bug, i think: | 21:02 | |
my $handle = $r ?? $fh1 :: $fh2 | |||
where $r is Bool | |||
pugs: cannot cast from VBool True to Handle | 21:03 | ||
autrijus | weird. it looks okay here | ||
what if you put () around $r??:: ? | |||
gaal | happens to me in both win32 and linux | ||
autrijus | that part can't be platform dependent :) | ||
gaal | :) | ||
looks like it's helping | 21:04 | ||
hmmm, but i think it evaluates to a reference to the handle? | 21:06 | ||
Aankhen`` | Was temp() implemented? | 21:07 | |
gaal | no, my bad | ||
Aankhen`` | Ah, okay. | ||
gaal | it isn't.. but sometihng's still strange | ||
Aankhen`` | No worries, can always work around it. :-) | ||
gaal | er that was to autrijus :) | 21:08 | |
Aankhen`` | Oops. | ||
Aankhen`` runs to his code. | |||
Corion | What units does time() return nowadays? | 21:11 | |
revdiablo | floating point seconds | 21:13 | |
Corion | Hmmm. Still seems to be seconds (floating)... Weird ... | 21:14 | |
revdiablo | isn't that what it's supposed to be? | ||
Corion | revdiablo: No, I'm hunting bugs in my code :)) | 21:17 | |
revdiablo | ah, ok. I'll go back to my lurking corner. :) | ||
gaal | finally: openpipe. | 21:23 | |
svnbot6 | r3836, gaal++ | First step at Standard Prelude: &openpipe primitive in Perl 6 | ||
r3836, gaal++ | (which should be renamed to Pipe::open once namespace bugs are fixed) | |||
gaal | now tests can use fewer temp files :) | 21:24 | |
Corion | Hmmm. Are while() loops broken? | 21:28 | |
Aankhen`` | Hrm, I will have to commit in the morning. | ||
Don't nobody break CGI in the meantime. :-P | 21:29 | ||
G'night. | |||
gaal | worksforme Corion: my $i = 10; while $i-- { say $i } | 21:30 | |
Corion | gaal: Yeah - I'm trimming it down - it seems related to time() ... Or something ... | ||
gaal | by the way, isn't it a bug that "my $i = 10" evaluates to undef? | ||
Corion | I'm stupid - I got the expression wrong ;) | 21:31 | |
gaal | in pugsi, at least | ||
or pigs | |||
or whatever we're calling it now :) | |||
Khisanth | hogs | ||
gaal | i just noticed README says: "Running all tests unfortunately requires a lot more memory (perhaps 1000M)" | 21:38 | |
did someone see this happen? | |||
japhy | so. there's been a bunch of updates to apocalypse 5... | 21:51 | |
there are "capturing assertions" and "non-capturing assertions" | 21:52 | ||
this is rather esoteric. | |||
wolverian | the A05 on dev.perl.org is still the dec 2004 vesrion | 21:56 | |
version, rather | |||
vcv-- | where at japhy? | 21:57 | |
mugwump | try svn.perl.org/perl6 | 21:59 | |
autrijus | also try S05 :) | 22:00 | |
mugwump | heh, true. how goes it, autrijus ... up late or early? | 22:02 | |
mugwump looks at the backlog | |||
hmm there's the answer | |||
wolverian | both A05 and S05 on svn.perl.org/perl6/doc/trunk/design are from dec 2004 | 22:03 | |
japhy | what's the most recent A05? | ||
wolverian | (at least they claim they are.) | ||
japhy | if not the Dec 2004 one? | 22:04 | |
and the synopsis isn't what I'm after | |||
I need to read the whole thing so I have a complete set of characters and tokens | |||
wolverian | I thought you knew that; you did say there had been updates :) | ||
or did you mean that there are new rules that are not yet written down in A05? | |||
japhy | well, if there's a more recent one, I need it | ||
I don't know if there's new stuff. since the Dec 2004 A05 | 22:05 | ||
if there's a more recent version, I need to know where it is | |||
autrijus | ok. the deal is A* is no longer updated | 22:06 | |
all updates will be inS* | |||
S* | |||
and damian's new capturing semantics is the first part of S05 updates | |||
that will eventually be committed to svn | |||
but I'm not sure how soon | |||
so you'd need to prod p6l a bit to gauge the current status | 22:07 | ||
I don't have more info than you -- I'm not in the cabal either :) | |||
japhy | ok. | ||
I have to say, the weirdest thing is the **{n..m} | |||
WTF, mate? | |||
Corion | Only people hating Perl5, like Shlomi Fish, get to be in the cabal! | 22:08 | |
vcv-- | The only people who hate Perl5 are those who do not understand it. | 22:09 | |
autrijus | er, no. | ||
Corion | vcv--: How true :) | ||
autrijus | I know of people who knows perl5 and hate it :) | ||
integral | it's more perl5 that's hateful than Perl5 | 22:10 | |
autrijus | right! | ||
perl5 sucks a lot. | |||
Perl5 is generally okay. | |||
kelan | they know it | ||
but they do not understand | |||
hows that for zen! | |||
autrijus | hm, is Juerd's server online? | ||
I think I'll redirect perlcabal.org there. | |||
(!) | |||
integral thought he was still at the Knoppix stage | 22:11 | ||
vcv-- | Well Perl5 only sucks now because of Perl6 ;) | ||
ijoyce | p5's object system sucks balls | ||
vcv-- | true | ||
ijoyce | hard | ||
integral | nah, it's not the object system, it's not having a proper record type | 22:12 | |
autrijus | p5 has an object system? | ||
I missed it | |||
integral | there's little wrong with having a bless primitive... | ||
ijoyce | exactly | ||
mugwump | huh? What's a *SV if not an object? :) | ||
integral | a monstrosity that makes perl5 hateful? ;-) | 22:13 | |
autrijus | mugwump: it's a V :) | ||
ijoyce | quit being smart asses, you guys know wha I mean | ||
wolverian | I like perl5's OO. I just don't like its lack of syntax. | ||
(enter Spiffy) | |||
autrijus | heh. ingy still has that Perl5i thing in his OSCON talk abstract | 22:14 | |
vcv-- | I think it's time for some PHP bashing too... | ||
autrijus | I wonder what he will speak about it :) | ||
wolverian | Perl5i? | ||
autrijus | wolverian: before pugs started, ingy threatened to do Perl 6 syntax on top of p5 vm | ||
because it seems p6 will never be there | |||
wolverian | ah, okay. | ||
well, perl5 is fast, at least. | 22:15 | ||
autrijus | maybe I get to steal that name for the mixed perl5/perl6/parrot interpreter project | ||
Corion | & # getProcessTimes should now Just Work Everywhere | 22:16 | |
# Everywhere is in the Java.Everywhere monad :) | |||
autrijus | lol | ||
Corion++ | 22:17 | ||
Juerd | autrijus: No, I want it online tomorrow | ||
svnbot6 | r3837, corion++ | getProcessTimes now really works on Win32. Added some tests, moved a constant out of Prim.hs into Compat.hs | ||
Juerd | autrijus: (Original planning was Friday, and that's still the fallback if tomorrow for some reason isn't working) | ||
afk | |||
autrijus | Juerd: ok. I'd like to assign perlcabal.org to that IP | 22:18 | |
I think it makes a lot of sense :) | |||
ingy | autrijus: I think ORA has my bio from 3 years ago | 22:20 | |
so I'm not surprised about perl5i | |||
autrijus | ingy: I thought you had a chance to submit a new bio | ||
ingy | I may still talk about perl5i anyway | ||
autrijus | really! what will you talk about? | ||
ingy | I'm not sure what i angle I can present a talk on pugs about | 22:21 | |
autrijus | oh btw, I need to consult you with some strategy based on your mad Open Source Manager-fu | ||
ingy | I mean, every last detail will be rehashed by someone else | ||
japhy | ah ha. <foo> captures to $foo, <?foo> just matches | 22:22 | |
ingy | so I will likely give a history and insiders view of how pugs gets developed | ||
japhy | FINALLY things are explained to me. | ||
ingy | autrijus: you are the heir to the OSM throne | ||
the queen is dead | 22:23 | ||
mugwump | long live the queen! | ||
autrijus | ingy: ok. so it goes like this | ||
I'm convinced that having $perl5_dbh in perl 6 programs is the #1 priority | 22:24 | ||
I think I can do it by embedding pugs in-memory to a perl5 interpreter | 22:25 | ||
and marshal object calls like I did with Language::MzScheme | |||
so perl 5 is the main language, but you can transparently define perl 6 subroutines and load perl6 methods | |||
vcv-- | autrijus did i read wrong, or are you going to YAPC::NA this year? | ||
autrijus | s/method/module/ | ||
vcv--: I am | |||
vcv-- | and larry too ? | 22:26 | |
clkao | huh? why not just perlembed? and have xs glue for calling back to code in pugs when needed | ||
22:26
ingy is now known as php--
|
|||
vcv-- | php makes little kittens cry | 22:27 | |
22:27
php-- is now known as ingy
|
|||
obra | "encrypted php" | 22:27 | |
obra twitches | |||
ingy | what is $perl5_dbh | 22:28 | |
autrijus | ingy: it's an object defined by running the "connect" method on the "DBI" package. | ||
both defined in perl5 | |||
clkao: that is another route. and that's what I need consulting for | |||
clkao: perlembed means marshalling Perl 5 API in Haskell | 22:29 | ||
obra | Wouldn't it be faster to just write a B backend to generate pure perl6 for native perl5 code and XS code? | ||
22:29
obra is now known as troll___
|
|||
vcv-- | why couldnt YAPC::NA be down the street from me THIS year instead of last year? | 22:29 | |
troll___ | oops. sorry | ||
autrijus | troll___: very trollish | ||
troll___ | should have /nicked first | ||
22:29
troll___ is now known as obra
|
|||
autrijus | vcv--: hm? | 22:29 | |
clkao: but it also means that, once parrot backend is there, we'd need to always involve ghc as the binder | 22:30 | ||
clkao: i.e. running the pugs program with linked in libparrot and linked in libperl and marshal calls inbetween | |||
clkao: but if we do it the Inline::Perl6 way, we can precompile Perl 6 to PIR, and just involved libparrot and perl5 | 22:31 | ||
so GHC can be out from the equation | |||
mugwump | What about something IPC based? | ||
autrijus | so it boils down to whether it makes more sense to use Perl 5 + PIR modules from Perl 6 code, or to use Perl 6 + Haskell modules from Perl 5 code. | ||
and I don't really know the answer. | 22:32 | ||
vcv-- | autrijus: last year YAPC::NA was at the University at Buffalo in New York, which is literally a minute away..down the streeet from me. then this year they get all the people id be interested in hear talking | ||
ingy | autrijus: my OSM-fu tells me if you want my opinion ask me in private when I have some time ;) | ||
clkao | autrijus: hang on | ||
autrijus | mugwump: opqaue objects don't generally survive IPC | ||
ingy: ok :) | |||
ingy | autrijus: I'll ping you in 36 hours | ||
autrijus | k | ||
clkao | marshalling perl5 api in haskell... no, you do it in c, and make haskell wrap that piece of code | ||
should be trivial.. and i bet you can make use of the perl_call stuff in libsvn_swig_perl i wrote | 22:33 | ||
ingy | autrijus: er, more like 18 hours, sorry | ||
autrijus: fyi, I still see value in the perl5i marshalling api I was shooting for | 22:34 | ||
clkao | hate marginal network | ||
obra | ==clkao | ||
clkao: make sky give you a 3G card | |||
ingy | anyway, need to run... | 22:35 | |
clkao | summon sky | ||
ingy | & | ||
autrijus | clkao: I do what in C? | 22:36 | |
clkao: I still need to link in libperl no? | |||
clkao | yes | ||
autrijus | oh but you mean a saner API level | ||
better than perlapi | |||
just for object marshalling | |||
clkao | autrijus: see libsvn_swig_pl | 22:37 | |
autrijus | but why would I do that in C? | ||
I don't even know C. | |||
clkao | hang on | ||
svn.collab.net/repos/svn/trunk/subv...gutil_pl.c | |||
see svn_swig_pl_callback_thunk | 22:38 | ||
make a little libray that export similar entry to perl for you to use in haskel | |||
autrijus | oh wow! | 22:39 | |
callconv in p5! | |||
how did I miss that? | |||
clkao | because you didn't love me anymore | ||
autrijus | heh | ||
clkao | sadly im a perlembed expert. it's more sad that i'm sad about it. | 22:40 | |
autrijus | hm. and that looks like totally swig independent | ||
autrijus feels a bit more convinced to try perlembed | |||
but do you think it makes sense, strategically speaking | 22:41 | ||
to encourage people write Perl 6 and reuse perl 5 libraries | |||
clkao | yes. only one part is missing if you take this route | ||
autrijus | instead of encouraging people mixing in some perl 6 in their perl 5 programs? | ||
clkao | we can do both. but the former is more usefuly to me | ||
while there are lots of bricks in perl5, we can start use perl6 to assemble them. | 22:42 | ||
autrijus | so p6 as glue is better than p5 as glue? | 22:43 | |
clkao | as assembling is mainly what people do with perl. so they now have a cleaner way, without all those nice bricks | ||
er | |||
withouth throwing away | |||
autrijus | strangely that makes some kind of sense | ||
ok. so what part is missing? | |||
(and I don't think we have tuits to do both) | |||
(as the marshalling involved is quite different) | |||
clkao | what's missing should be in one side of ffi | 22:44 | |
autrijus | ffi doesn't handle vararg currently, btw. | ||
clkao | can you do lower level call to c without ffi | ||
we take the arg typemap from ffi. | |||
autrijus | sure can. | ||
I mean, GHC compiles to C. | |||
clkao | and invoke the vararg directl.y | ||
*nod* | 22:45 | ||
autrijus | so you can inline arbitary .c | ||
clkao | so thats why i think it's doable. | ||
just the data needs to be properly typemaped | |||
autrijus | hm. | 22:47 | |
ok. so we do what I did in par/myldr/main.c | |||
that is a custom xsinit code | |||
that installs additional callconv functions | 22:48 | ||
which includes HsTypes.h | |||
and do unpacking on the C side | |||
neither p5 nor haskell knows about this | |||
from their POV it's just a couple callconv functions | |||
that solves p5 objects in p6 space | |||
clkao | install callconv to what? | ||
autrijus | what about the other way? | ||
install callconv to call into perl5 | 22:49 | ||
but if there's a p6 obj in p5 space | |||
we can certainly tie it up and overload it for all operators | |||
clkao | i think just support simple types, coderef, wrapped blessed thing that invokes properly | 22:50 | |
autrijus | but how to invoke back is the questoin | ||
we need call_perl6 visible from p5 space | |||
that's what the xsinit code need to do... install extra Interals:: functions | 22:51 | ||
Internals::, even | |||
I'm worried about this | |||
clkao | give me an example | ||
autrijus | sure | ||
use_perl5 DBI; | |||
my $p5_obj = DBI.connect("..."); | 22:52 | ||
my $p5_hash = $p5_obj.selectall_hashref(...); | |||
actually, make that | 22:53 | ||
clkao | damn, you are getting old, type faster! | ||
autrijus | my $p5_array = $p5_obj.selectall_arrayref("Select * from foo", { :AutoCommit })); | ||
ok, that's all | |||
ijoyce_laptop | use_p5 DBI; | 22:54 | |
autrijus | no, I'm maintaining several threads of talk ;) | ||
clkao | these seem simple | ||
make something like a callback in perl6 | |||
autrijus: damnit, take the next flight and we can do this in 4 hours | 22:55 | ||
autrijus | clkao: heh. | ||
why don't _you_ take the flight to APW ;) | |||
clkao | BECAUSE I NEED A FUCKING VISA | 22:56 | |
and if you make any appointment now for that you are very lucky to be interviewd in JULY! | |||
mugwump | you need a VISA for fucking? does that depend on the nationality of the bird? | ||
autrijus | aw wtf. you don't have those euro visa thing? | ||
clkao | mugwump: thank you! | 22:57 | |
autrijus: anyway. let me talk and see if it makes sense | |||
autrijus | ok. | 22:58 | |
so line by line. | 22:59 | ||
clkao | autrijus: on use_p5 DBI, perl6 has an "evil5" object DBI. any call to that goes to underlying evil c callconv, with CALL_METHOD and arguments mapped to simple types or evil6 objects | ||
autrijus | but DBI is just a namespace! | ||
clkao | make it magic! you can invoke something on it | ||
autrijus | so what we need to do is to actually load DBI in the libperl5 | ||
clkao | sure. | ||
autrijus | and install a magical ::DBI that is actually a Perl5::Package obj | 23:00 | |
that pugs can do right now | |||
clkao | yes. | ||
let me know if i should go on. | |||
autrijus | and that is very thin anyway | ||
because a p5pkg is just a VStr. | |||
go ahead | |||
clkao | so no problem with $p5_obj = DBI.connect("") line for its invoke and return value? | ||
the return value is also a evil5 object | 23:01 | ||
(as it's not a simple type) | |||
autrijus | wait | ||
ther "..." | |||
the "..." is a p6 VStr | |||
we need to make it a SV right? | |||
clkao | yes. in callconv it's converted. | ||
autrijus | a simple SV str | ||
because DBI->connect prolly can't handle overloaded p6obj | |||
it's in XS and all | |||
so strings needs to remain strings | 23:02 | ||
clkao | unless you want to play with mg | ||
but people who do those thing should be able to rewrite dbi in p6 | |||
is that line cleared? | 23:03 | ||
autrijus | you need [OFF] | ||
clkao | why? | ||
autrijus | to clear that line :) | ||
nvm. | |||
clkao | gr | ||
autrijus | go ahead | ||
now the {:AutoCommit} thing | |||
that was what I was referring to | 23:04 | ||
because it's potentially not a simple hash that can be HV'ed | |||
I mean of course we can do a .yaml call or the moral equiv | |||
clkao | so, the p5_obj.selectall_hashref is the same, invokes the CALL_METHOD on the evil5 obj | ||
autrijus | and unmarshal it in p5 space | ||
the arg | |||
clkao | but the return value is quite simple type. | ||
autrijus | no, I mean the arg :) | ||
the hashref that I pass in | |||
that is very nonsimple | |||
because a hash is a mutable structure | |||
suppose I do | |||
my %hash = :AutoCommit | 23:05 | ||
$p5_obj_.selectall_arrayref("xxx", %hash) | |||
$p5_obj.selectall_arrayref("xxx", %hash) | |||
and further suppose that selectall_arrayref does this | |||
my ($dbh, $string, $attr_ref) = @_; | |||
$attr_ref->{AutoCommit} = 3; # destructive update! | |||
that needs to work | |||
otherwise we can't use compound structures | 23:06 | ||
and that will need to invoke p6 primitives | |||
mugwump | sounds like you're making an argument that both ways need to work.. | ||
clkao | you can make that work later. | ||
for now | |||
autrijus | for now, p6 objs are fully serialised and not at all magical in p5land? | ||
i.e. they are reduced to pure yaml streams? | 23:07 | ||
clkao | see svn_swig_pl_to_hash | ||
autrijus | I saw it | ||
clkao | and convert_hash | ||
to make it work you just use mg to invoke p6 prim | |||
use mg to invoke haskell callback for ffi to invoke p6 prim | 23:08 | ||
autrijus | but that part is very fuzzy | ||
clkao | like all other invocation of p6 obj that would happen in p5 land. | ||
autrijus | right, I'm not sure about that either | ||
clkao | no, the only unsure thing is the ffi part. | ||
autrijus | we don't yet have an arena | ||
in pugs | |||
so you can't just load obj by id | |||
I suppose we can add it, but it complicates things | 23:09 | ||
clkao | what obj by id? | ||
mugwump | what about making a perl 6 class which encapsulates Perl5 primitives, like Hash/Array/SV/Stash.. and provides methods to call macros etc on them | ||
autrijus | see, we have this $p6_obj | ||
we pass it to p5_func | |||
clkao | you hold a reference to the underlying obj. | ||
autrijus | now in p5 land | ||
clkao | mugwump: we are talking about the other direction | ||
autrijus | we invoke $p6_proxy_obj->foo | ||
now we resolve that | |||
in swig's case it's trivial | |||
because there's always a underlying Ptr | 23:10 | ||
right? | |||
clkao | you don't have such thing in haskell? | ||
autrijus | we do | ||
but that means creating a stablename for each obj | |||
clkao | no! | ||
autrijus | heh. without that GHC will GC it away! | 23:11 | |
clkao | if you implement something in ffi, how do you refer the coderef you passin? | ||
autrijus | you create a StablePtr | ||
and mark it as foreign export | |||
the point is we are dealing with two GCs | |||
GHC's is generational | |||
Perl5 is refcounting | |||
clkao | so what do you see in Cl and? | ||
land | |||
autrijus | in C land it's just a *HsPtr | ||
generic | 23:12 | ||
the point is that we need to mark it as out of reach by normal GHC GC | |||
clkao | ok. how od you invoke that hsptr from ffi ? | ||
autrijus | you cast it as a funptr. | ||
its signature needs to match the foreign export signature. | |||
and it will magically work. | |||
I don't know how :) | 23:13 | ||
clkao | work as in... gets back to pugs just properly? | ||
autrijus | let's talk in code ;) | 23:14 | |
foreign import ccall "wrapper" mkCompileCallback :: ParrotCompilerFunc -> IO (FunPtr ParrotCompilerFunc) | |||
type ParrotCompilerFunc = ParrotInterp -> CString -> IO ParrotPMC | |||
compileToParrot :: ParrotInterp -> CString -> IO ParrotPMC | |||
... haskell function ... | |||
that's the haskell side. | |||
clkao | but i write no haskell. but i have a feeling that the other magic besides eval will help in this | ||
autrijus | never mind then. assume we have a generic $p6obj in p5land | 23:15 | |
we do | |||
$p6obj->meth($arg1, $arg2, $arg3) | |||
we need to have something FFI exported like | 23:16 | ||
invoke_perl6_method(ObjPtr $obj, Str $methodname, ArgPtr @args) | |||
where each ArgPtr is a union type that may contain pure values | |||
or other ObjPtr | |||
makes sense? | 23:17 | ||
clkao | *nod* | ||
autrijus | the point is that the callconv can't be variadic... it needs to always go thru an array | ||
clkao | that's the magic i was talking about | ||
"apply" | |||
interestingly i'm wearing the purple tshirt | |||
autrijus | heh | 23:18 | |
mugwump | I have to wonder if making it look like Perl 5 objects exist in Perl 6 is trying to be overly clever at this point... I do think that the language is powerful enough to do this all in Perl 6 with a decent Perl5::Interpreter.pm that supplies opaque Perl 5 objects and lets you make perlapi calls on them via methods.. | ||
eg, my $perl5 = Perl::Interpreter->new(); | |||
autrijus | mugwump: perlapi calls! you know how many there is? | ||
clkao | bwahaha | ||
mugwump | sure, but each is fairly simple, surely | 23:19 | |
You'd have to explicitly create Perl 5 objects to receive return values from calls | |||
autrijus | sure. but say we have them | ||
now what? | |||
we have gv_fetchmeth_autoload | |||
mugwump | my $perl5_sv = $perl5.newSV; | ||
autrijus | er, you can't do that | 23:20 | |
you have to do | |||
$perl5.dSP; | |||
$perl5.ENTER; | |||
$perl5.SAVETMPS; | |||
$perl5.PUSHMARK($perl5.SP); | |||
before your newSV can be called | |||
that way lies insanity | |||
clkao: ok. so the C level is: | 23:21 | ||
* Converting P6 native types to P5 SVs | |||
* Convert P5 SVs to P6 native types (but only for SVs without SVMG and not SVRV) | 23:22 | ||
* For all P6 VObject types, take the stable pointer from FFI and manufacture a shallow SV that is of the correct class | |||
hm. do we append perl6:: and perl5:: ? | |||
i.e. is $perl5_dbh's class on the perl6 side still DBI? | 23:23 | ||
there could be namespace clashes | |||
but if that happens we're doomed at the class space anyway | |||
clkao | *nod* | ||
autrijus | so probably no prefix. | ||
i.e. use DBI; use_p5 DBI; | |||
# already doomed | |||
clkao | anyway.. this can be worried after something works | ||
autrijus | right. | ||
* For all SVRVs, invoke a special wrap_object FFI export | |||
passing in the SVPtr and get back a VObject ptr | 23:24 | ||
and use it in pugsspace | |||
then we only need to handle method calls and coderefs. | |||
what about overload? don't worry about it for now? | |||
SvMG that is | |||
clkao | don't worry about it | ||
autrijus | $perl6_object + 1; | ||
ok. people relying on that deserves to be shot, right? | |||
clkao | overload in p5 is buggy anyway | ||
autrijus | so no IO::All in p6 ;) | ||
clkao | hate | 23:25 | |
autrijus | sad, because I did make Math::Complex work in MzScheme | ||
but MzScheme is much easier to target ;) | |||
clkao | ha. so, how do i create p6 prim with ffi callbacks? | ||
autrijus | that's actually simple and done before | ||
we do that in Pugs.Embed.Parrot | |||
clkao | ok.. i will have a look tomorrow | 23:26 | |
autrijus | you just come up with anything and FFI can simulate it :) | ||
clkao | *nod* | ||
autrijus | you want to look at compreg | ||
it's closest to what we're doing | |||
Parrot_compreg in the parrot api | |||
clkao | parrot.hs ? | ||
autrijus | er, parrot source itself | ||
but sure, src/Pugs/Embed/Parrot.hsc too | 23:27 | ||
clkao | where in parrot source? | ||
autrijus | I'll make xsinit work today | ||
clkao: interpreter.h | |||
not sure where the .c form is. grep a bit | |||
<- doesn't even pretend to understand parrot's .c side | |||
clkao | i mean where does it call back to create pugs prim | 23:28 | |
autrijus | oh. | 23:29 | |
no, it's not there at all. we need a compreg from pugs side too. | |||
so you can hook arbitary code into pugs namespace. | |||
anyway, I'll work on xsinit and revcallback now | 23:31 | ||
just to make both side's eval"" work | |||
since string is easist to marshall | |||
I'm sure you can pick up there :) | |||
clkao | ya :_ | 23:32 | |
autrijus | clkao++ # mmm expert | ||
clkao | so sad | ||
autrijus | and btw, you're wrong -- it's not that I don't love you anymore, it's that I don't love C anymore ;) | ||
my relationship with C has evolved from love-hate to hate-hate. | 23:33 | ||
clkao | no.. i thought you never love c | ||
autrijus | well, I've loved some part of it by neccessity | ||
but that neccessity has just went away | |||
;) | |||
clkao | away with segfault | ||
autrijus | no, away with GHC, which is like GCC but without segfaults | 23:34 | |
clkao | anyway, i'll see what you've done after shower | ||
and decdide if i will stay up a bit | |||
autrijus | clkao++ # thanks. lots of fun | 23:35 | |
clkao++ # this is much more fun (to me anyway) than hacking SVN::Mirror ;) | |||
or (gasp) VCP | |||
japhy | I'm coming up with an exhaustive list of Perl 6 rule syntax elements. once I *think* I'm done, I'll post it online and alert p6l of it. | 23:38 | |
once we have it down, I'll really be able to make my perl6 rule parser work | |||
autrijus | japhy++ # sanity! sanity! | 23:39 | |
japhy | in between those two statements, I meant to say "if anyone knows of anything I missed, I'll add to the list" | ||
I know damian's got his capturing schema coming out, but that's implementation, not syntax, right? | |||
autrijus | yup | 23:40 | |
japhy | um, syn05 (version 7) doesn't mention the \c[...] syntax | 23:41 | |
but the corresponding apo does. | |||
so I'm going to assume the syn just overlooked that. | 23:42 | ||
I really should have gotten more involved 2 years ago | |||
I'm a regex junkie. I would have left no stone unturned. | |||
autrijus | but really, without the syns, you and I can't easily involve. | 23:45 | |
and the syns are not ready until dec 2004 ;) | 23:46 | ||
clkao | autrijus: ok, have you got something? :) | ||
autrijus | (which is not too long ago) | ||
clkao: yes. you know what dXSUB_SYS does? | |||
clkao | no | ||
autrijus | gah. it's a noop for all cases | 23:47 | |
wtf. | |||
that's why I can't grep anything | |||
because it's defined as null for all cases | |||
so it's persumably there for some 5.005 compat | |||
did I mention I hate C? | |||
clkao | ok.. show me the example for making a new number . like new_svIV | 23:48 | |
autrijus | just a sec | 23:49 | |
oh, you can build pugs with EMBED_PERL5 meanwhile | |||
er | |||
env PUGS_EMBED=perl5 | |||
clkao | i know | ||
and it's wrong. you should be able to specify which perl | |||
autrijus | eh. | ||
it's the perl that you run makefile.pl with | 23:50 | ||
isn't that good enough? | |||
it saves lots of trouble | |||
clkao | ah right :) | ||
there's no test for p5 embed | |||
autrijus | right, write to write some? | ||
ninereasons | r3837 : src/Pugs/Compat.hs:208:21: Not in scope: type constructor or class `CInt' | ||
autrijus | ninereasons: os? | 23:51 | |
ninereasons | FreeBSD 4.11 | ||
clkao | there's nony leval_p5 ? | ||
ninereasons | autrijus, also debian | 23:52 | |
clkao | eek | 23:53 | |
autrijus | clkao: right, and it's currently | ||
String -> IO () | |||
we need it to be | |||
Stirng -> IO Perl5SV | |||
clkao | so how do construct new p6 num from c land? | ||
autrijus | or something like that, right? | ||
clkao: you do this | |||
clkao | TRUNK IS BROKEN | 23:54 | |
autrijus | clkao: wtf? | ||
clkao | what ninereasons said | ||
r3837 brweaks it | |||
i up'ed to previous | |||
autrijus | no, don't do that | ||
r3838 fixed it... 3837 is ancient | |||
clkao | ok, what do i do? | ||
autrijus | your copy is 10 seconds ago | 23:55 | |
it's like eternity | |||
ninereasons | :_) | ||
clkao | 07:50 < autrijus> clkao: you do this | ||
i mean this | |||
autrijus | oh ok. | ||
clkao | no, 3838 fails too | ||
mugwump | src/Pugs/Compat.hs:209:38: Not in scope: type constructor or class `CString' | 23:56 | |
svnbot6 | r3838, autrijus++ | * unbreak trunk. | ||
autrijus | did I say r3838? | ||
I mean r3839 | |||
but anyway. you do this | |||
clkao kills autrijus | |||
ninereasons | whee :) | ||
autrijus | HsPtr* val = pugs_eval("1"); | ||
clkao | no eval please | 23:57 | |
autrijus | pugs_eval has the haskell side type of | ||
String -> Eval Val | |||
why not? | |||
I like eval | |||
clkao | i like apply | ||
src/Pugs/Embed/Perl5.o(.text+0x44): In function `r5Mz_info': | |||
: undefined reference to `eval_pv' | |||
autrijus | your perl has no eval_pv? | ||
or your perl is not shared libperl? | |||
clkao | sure it is | 23:58 | |
how do i tell itto be verbose so i can see how stupid it is when linking? | |||
autrijus | just "make" | ||
clkao | Linking ... | ||
i want to see exactly what was happening | |||
autrijus | the first line of make does that no? | 23:59 | |
clkao | rather than hateful ... | ||
japhy | w00t. | ||
job interview on tuesday :) | |||
autrijus | oh. ghc -v4 | ||
hack makefile to replace ghc with ghc -v4 | |||
(warning: never tried) | |||
and 4 may be overkill |