6.2.2 is airborne! | pugscode.org <Overview Journal Logs> | pugs.kwiki.org Set by autrijus on 1 May 2005. |
|||
shapr | "I can't think of any other case where two different programming language cultures literally at the opposite sides of the universe have come together like this." from cooking-with-lisp.blogspot.com/2005...unity.html | 00:50 | |
lambdacamels unite! | 00:52 | ||
hiya mugwump | 00:54 | ||
mugwump | hi! | ||
shapr | how's code? | 00:55 | |
jabbot | pugs - 2639 - Added x86_64 gc bug workaround instructi | ||
mugwump | Well, I'm getting "somewhere" with Perldoc, even if that isn't anywhere near like what's needed for Pod/Kwid yet ;) | 00:56 | |
I made it through another 3 short lessons in Haskell, so getting much nearer the end of those now | 00:57 | ||
bah wrong button | 00:58 | ||
shapr | Any Haskell questions? | 00:59 | |
mugwump | I'll take a raincheck on that very generous offer | 01:00 | |
shapr | ok | 01:01 | |
mugwump | I'm working towards being able to use the metamodel in src/Pugs/Class.hs for something, but I need to do my homework first... | 01:02 | |
ninereasons | stevan, listening? | 01:19 | |
stevan | ninereasons: yes | ||
ninereasons | do you know the difference between '.pairs' and '.pair'? | ||
stevan | off the top of my head no | 01:20 | |
is there a .pair? | |||
where have you seen that usage? | |||
ninereasons | .pair is used to access like this: .pairs.pair in t/builtins/arrays_and_hashes/pairs.t | 01:21 | |
stevan | I am not seeing that usage in pairs.t | 01:22 | |
ninereasons | a sec. | 01:23 | |
stevan | I am just seeing $a_pair.pairs | ||
ninereasons | try t/data_types/pair.t | 01:24 | |
the last tests might be incorrect. | |||
stevan | I am still only seeing .pairs ? which line number? | 01:25 | |
stevan is a little tired | |||
so I may be staring right at it :) | |||
ninereasons | no, try this: change .pairs to '.pair', and that test will succeed. | 01:26 | |
(still returns the wrong 'ref' though) | 01:27 | ||
stevan | ok | ||
ninereasons | should those tests say "pairs" after all? are they written correctly? | 01:28 | |
stevan | ninereasons: to be honest, I am not sure | 01:29 | |
I see pair and pairs in src/Pugs/Prim.hs | |||
have you checked the synopsis yest? | |||
ninereasons | I'm finding reference to .pairs, but not to .pair | 01:30 | |
stevan | maybe you should check with perl6 language | ||
ninereasons | ok | ||
stevan | if .pair is a mistake we can remove it from the tests and Prim.hs (assuming it does not have another usage) | 01:31 | |
mugwump | grep in Perl6::Bible? | 01:36 | |
ninereasons | I'm finding reference to a pairs method, but I'm missing the reference to a pair method | 01:37 | |
shapr | oh, a real lambdacamel? | 01:45 | |
jabbot | pugs - 2640 - Pugs.Parser: Signatures | ||
mugwump | any openfoundry admins about? | 01:51 | |
obra | sup? | 01:52 | |
stevan | Yo | ||
whatcho need ... whatcho want | 01:53 | ||
jabbot | pugs - 2641 - Whoops, prior, not next, fixes haddock | 01:55 | |
mugwump | I've just submitted a request for a new project ... I've got half a dozen keen devs itching to move from savannah.non-gnu.org | 01:57 | |
savannah.nongnu.org/projects/util-vserver/ is the project | |||
I was just wondering if I could "jump the queue" ;) | |||
stevan | mugwump: that is odd, I registered a project and it was in almost instantly | 01:58 | |
I am also not that kind of admin so I cant help there | |||
mugwump | oh, it is automatic. I saw the 72 hour notice and assumed that the request just went into a queue | 01:59 | |
stevan | mugwump: I assume it is automatic | 02:00 | |
it seemed that way to me | |||
(well maybe like 10 minutes) | |||
mugwump | oh, and there it is. cool | 02:04 | |
a pity I couldn't put a hyphen in the project ID | |||
stevan | mugwump: I agree, I didnt like that restriction either | ||
putter | fyi, on #haskell, over the last 2hrs 20 minutes or so, starting with shapr's cooking-with-lisp quote, there has been a minor but potentially interesting thread on possibilities for a long-term perl6/haskell relationship. | 03:25 | |
mugwump | is that channel logged? | 03:26 | |
shapr | yup | ||
putter | the question was what happens to the perl6/haskell relationship "post pugs". Ie, when running perl6 might mean you are entirely on parrot. | 03:33 | |
stevan | putter: and dont forget the perl6 bootstrapping | ||
putter | one posibility is Inline::Haskell goes back to being like Inline::everything else. Not something one can really use because | 03:34 | |
mugwump | this will be an entirely moot point if parrot can assume the role that C-- does on Haskell, no? | 03:36 | |
(ie, if you can compile Haskell to parrot) | |||
stevan | IIRC didnt GHC have some history with perl5? | ||
putter | users, esp windows users, can't be counted on to have the required dependencies. But... | 03:37 | |
But what if it were posible to maintain the property that "if the user has perl6, then of course they have haskell" ? Ie, | 03:38 | ||
ghc binaries are available from CPAN, are interfaced with parrot and whatever other perl6 backends there are. Then | 03:39 | ||
from the perl6 perspective, perl6 has this wizzy modern language for doing compute intensive stuff, and from the haskell side, | 03:40 | ||
haskell gets a quick ride to the "big time". | 03:41 | ||
mugwump | ideally perl 6 wouldn't have huge dependancies like that for all situations... ie it would be nice if runtime was just libparrot for running bytecode | 03:45 | |
putter | mugwump: re moot point, perl6 may have other/additional back ends then parrot. and parrot isnt a backend that lets haskell fully shine. | 03:46 | |
mugwump: re libparrot, and | 03:49 | ||
stevan: re p6 bootstrap, ... | |||
mugwump | I don't agree to the binding on principle at all, but it would be nice if I can use perl6 to write scripts intended to be run in tight situations | 03:51 | |
s/agree/disagree/ | |||
eg, /sbin scripts that can't rely on /usr | 03:54 | ||
putter | I'm afraid my brain is squarely in the end-of-day burnt out toast stage. | 03:56 | |
The little idea was that p6/haskell are both benefiting, technically or socially, from the current relationship via pugs. But... | 03:57 | ||
we know pugs role will change with time. Perhaps pugs will merely become "the thing we bootstrapped off of" and "just another success story". But... | 03:59 | ||
But perhaps there is opportunity for a richer long term relationship. | 04:00 | ||
I would much rather write p6 libraries in haskell than C. | 04:01 | ||
mugwump | for sure. and the haskell-on-bare-metal thing interests me too | 04:05 | |
putter | For bootstrap, while we can do pypy with type inference in p6 and llvm code generation... but wouldnt it be nice to hang on to the rich power of haskell...? | 04:06 | |
mugwump | I think so, yes. I want to have my cake and eat it too! | 04:07 | |
jabbot | pugs - 2642 - * PGE node type is now marshalled into H | 04:15 | |
putter | my signoff thought for the night... p6 and hs certainly can't "marry" at this point. p6 cant have ghc as a long-term critical component of its existence... | 04:17 | |
but let's not assume pugs is just a one night stand either... much of language balkanization is social rather than technical. there | 04:18 | ||
are long term ways in which both p6 and hs would benefit from being able to cooperate more closely than is typical between languages. by | 04:20 | ||
keeping an eye out for possibilities, the current nifty community overlap may find opportunities in the coming months that may become less accessible later on. | 04:24 | ||
random thought. g'night all. | |||
mugwump, stevan: thanks for the comments. | 04:25 | ||
mugwump looks forward to a future full of lambdacamels | 04:26 | ||
putter | ;) | 04:27 | |
hey ingy, could freepan grow a compile farm and serve binaries....? a whole bunch of Inline::Foo and "what compiler was perl compiled with" issues might simplify... | 04:30 | ||
autrijus | PerlJam: so it's 8 hours now, and I see no PGE :-/ | 04:36 | |
autrijus decides to $work and wait some more | |||
obra snickers | 04:37 | ||
gaal | Juerd about? | 06:26 | |
It's a little funny how Larry's open* examples on p6-l don't have a filename arg anywhere. :) | 06:27 | ||
metaperl | what does &? do | 06:33 | |
$?BLOCK.firstlist | |||
i'm sorry | |||
nothingmuch | & means sub | ||
metaperl | yes, that is correct | ||
nothingmuch | ? means special | ||
metaperl | no $? | 06:34 | |
it was on p6l | |||
nothingmuch | no, BLOCK is a closure | ||
like &?SUB is the current named/anon sub | |||
metaperl | what do you mean "special" ? | ||
nothingmuch | &?BLOCK is pretty much the same, except the union of the lexical scope is the same as the dynamic scope up to it's named sub | 06:35 | |
unless you do &?BLOCK.goto or other weird stuff like that | |||
special - err, magical | |||
basically these things are set on every scope enter | |||
for that scope's lexical pad | 06:36 | ||
for example $?POSITION stringifies to where you are | |||
$?FILE is like __FILE__ in perl5 | |||
$?SUBNAME is the name of the sub | |||
metaperl | oh instead of $. | ||
nothingmuch | while &?SUB is the actual code of it | ||
metaperl | the "." for method calls is not as visually distinctive as "->" | 06:37 | |
$_.x | |||
$_->x | |||
nothingmuch | no, $. is something else, it's the line number counter for the last read FH | ||
i guess that will become $fh.record_number | |||
or something like that | |||
arguably it looks better for properties | |||
IMHO it doesn't matter that much | 06:38 | ||
it's meant to make perl more readable for the rest of the world | |||
brb, IRC client updated | |||
metaperl | I see... I'm going to check out magicals in the synopses | ||
ok | |||
nothingmuch | S02 lists quite a few | ||
06:51
castaway_ is now known as castaway
|
|||
metaperl | what does the Perl method do? | 06:55 | |
www.hcoop.net/~terry/haskell/pugs/p...animals.p6 | |||
in that source | |||
nothingmuch | metaperl: there is nice use of &?BLOCK to do anonymous factorial | 06:56 | |
metaperl | nohtingmuch, I saw it | ||
$info.perl | |||
nothingmuch | think data::Dumper | ||
metaperl | confuses me | ||
in the URL I gave at the bottom | 06:57 | ||
nothingmuch | i think it's a terrible method name | 06:59 | |
$foo.dump_perl; # better | |||
but you can eval $foo.perl and get the same thing | |||
07:01
khisanth_ is now known as Khisanth
|
|||
metaperl | many questions on this: | 07:05 | |
1 while =$dict ~~ rx:perl5/\S/; | |||
what does the =$dict mean? what is the equals sign in front mean? | 07:06 | ||
autrijus | unary = is readline. | 07:08 | |
metaperl | oh and rx:perl5 means use perl5 regexps? | ||
autrijus | yeah. rx:P5 works too | 07:14 | |
metaperl | I have a question about function escaping within a string based on this code: www.hcoop.net/~terry/haskell/pugs/p...hangman.p6 | 07:24 | |
the code apparently has { func_call } within a string... how does perl6 know to run the function and not literally interpret the text | |||
mauke | because it's surrounded by { }, apparently | 07:25 | |
nothingmuch | metaperl: this is probably discussed in s02 (guessing) | 07:28 | |
also note that @array does not interpolate anymore | |||
you have to say @array[2] or @array[] to get it all | |||
metaperl | ok i'll check s02 | ||
Aankhen`` | HI NOTHINGMUCH | 07:34 | |
Aankhen`` coughs. | |||
Sorry. | |||
lightstep | MonadEval seems to be in limbo. is this purposeful, or would one way be picked eventually? (cf. line [email@hidden.address] | 07:44 | |
07:53
Aankh|Clone is now known as Aankhen``
|
|||
autrijus | lightstep: it is shining new. it will be picked up. | 08:07 | |
lightstep: for example, it is my wish to make Pugs.Compile.Parrot into a MonadEval. | 08:08 | ||
lightstep: so exactly the same code, such as | |||
foo <- asks envLexical | |||
can generate IMC in the compiler monad. | |||
lightstep | but the transformation can be done slowly, since Eval is MonadEval | 08:09 | |
autrijus | exactly | ||
so ideally we need to gradually refactor | |||
common eval routines from | |||
Foo -> Bar -> Eval Baz | |||
into | |||
(MonadEval m) => Foo -> Bar -> m Baz | |||
and leave only the specific-to-interpreter things around | |||
at that time it may make more sense to call it | 08:10 | ||
Foo -> Bar -> Interp Baz | |||
or some such. | |||
makes sense? | |||
lightstep | very much | ||
autrijus | =) | ||
I'd appreciate any help you can lend on this matter... changing signautres to most of AST.hs utility functions would be a good start | 08:11 | ||
and/or Eval.hs functions | |||
also, haddocking that description around MonadEval will help a lot too | 08:12 | ||
lightstep | where is haddock's documentation? | ||
castaway | (documentation for the documentation ?) | 08:13 | |
lightstep | yes | 08:14 | |
for haddock - the format, mostly | |||
castaway hopes the haddock package has some ,) | 08:16 | ||
lightstep | nm, it''s at haskell.org/haddock/docs | 08:17 | |
castaway | makes some degree of sense ,) | 08:18 | |
lightstep | yes | ||
i actually don't understand the plan. say Parrot is an instance of MonadEval. then the compilation stage Parrot->String will compile and convert the instructions to parrot code. but how will liftIO work in Parrot? or Control.Monad.Reader.local? these operation don't make sense, to me, when building an AST | 08:36 | ||
Juerd | gaal: About now. | 08:51 | |
kungfuftr | bah | 08:55 | |
playstation2-- # time sink | |||
castaway | *g+ | 08:59 | |
theorbtwo | G'morning, all. | 09:29 | |
autrijus | greetings theorbtwo-san. | 09:35 | |
thanks for the signaturing and haddoccking. | 09:36 | ||
theorbtwo | Mostly just been doing signaturing; I don't feel like I understand the code all that well to be really haddocking. | 09:38 | |
Juerd moved some things around in his room - now it's a bigger mess than ever before | 09:55 | ||
I'm starting to wonder if this was a good idea. | 09:56 | ||
I think I just mostly need to throw a lot of stuff away | |||
Empty boxes, broken hardware, things I never use | 09:57 | ||
Or the combination of all those | |||
Like the broken MSX computer that I never use, and its empty box that is a few meters away from the thing. | |||
theorbtwo | Juerd, where do you live? And are any of those machines decently recent PPC? | 10:09 | |
I can't get my mac to do /anything/. | |||
castaway sneaks over and snuggles theorbtwo | 10:10 | ||
jabbot | pugs - 2643 - More Haddocks for Eval/AST | 10:25 | |
castaway pokes bro. | 10:36 | ||
broquaint | Hey, c, how's tricks? | 10:45 | |
castaway | nay bad, thanks.. 3-day week this week :) | 10:49 | |
broquaint | Sweet :) | 10:50 | |
When are you in to2 heading over to Blighty? | |||
s/in/and/ | |||
castaway | Thursday afternoon | 10:51 | |
broquaint | Cool stuff. | 10:53 | |
Juerd | theorbtwo: Heh, I don't have many machines. | ||
theorbtwo: I've always upgraded part by part | |||
castaway | he wandered off, Juerd | ||
Juerd | theorbtwo: And no, no PPCs except my mini | 10:54 | |
castaway: The same way I read his old messages, I'm sure he can read mine. | |||
jabbot | pugs - 2644 - * undef in grouped lhs: `my ($x, undef, | 10:55 | |
castaway shrugs. | 11:01 | ||
jabbot | pugs - 2645 - * rename `Junc` constructor to `MkJunc` | 11:35 | |
autrijus | hey Jonathan_, elmex. | 11:39 | |
Jonathan_ | autrijus: Hi :) | 12:40 | |
jabbot | pugs - 2646 - Haddocks for AST/Types | 12:45 | |
stevan | morning all | 12:53 | |
autrijus | yo stevan-san! | ||
how's $work? | 12:54 | ||
autrijus finally did some small amount of $work today | |||
stevan | $work is okay | ||
I did some :todo<attr> stuff last night | |||
I wanted to run it by you before I commitied it though | 12:55 | ||
autrijus | sure, go ahead | ||
stevan | I also got Algorithms in the mail yesterday :) | ||
autrijus | oooh :) | ||
the first few chapters are deceptively easy to pick up. | |||
stevan | just a quick look through and I already feel like I understand Pugs better | ||
autrijus | :D | ||
also, docs/haddock/index.html helps a lot | 12:56 | ||
to me, even | |||
stevan | I have so many programming books, but this is my first haskell book :) | ||
autrijus | makes me all the more motivated to refactor | ||
stevan++ | |||
stevan makes a note to run the haddock stuff and read the docs | |||
ok,... the :todo<attr> stuff | |||
so what it does is to pass through whatever you give to :todo | 12:57 | ||
and print it as the TODO "reason" (in TAP speak) | |||
so :todo<bug>, will print # TODO bug | |||
:todo will just print # TODO | |||
then i added some code to our Test::Harness to count each different type of TODO | 12:58 | ||
(this info is available to the smoker too) | |||
autrijus | ok. worksforme | 12:59 | |
stevan | so when you run a particular test with prove, you will see how many :todo, :todo<bug>, :todo<anything> there are | ||
autrijus | I think it's useful upstream as well | ||
stevan | maybe | ||
I personally never used TODO until Pugs | |||
autrijus | yes. then the yaml renderer can colour them differently | ||
stevan | hmmm, thats true | ||
autrijus likes colours | |||
stevan | ok I will work with nothingmuch & co. on that part | 13:00 | |
autrijus | since it has access to all todo tags | ||
it can simply assign them based on lexographic order | |||
stevan | well that access was always there actually | ||
autrijus | different shades of green, etc | ||
stevan | a rainbow of TODOs :P | ||
autrijus | ah right. | ||
just need to grep the diag stream | |||
but I think lifting it to model makes more sense | 13:01 | ||
instead of | |||
todo: 1 | |||
todo: '' | |||
(as currently stands) | |||
now it can be | |||
todo: 'bug' | |||
todo: '' | |||
(talking about tests.yml) | |||
stevan | autrijus: sorry one sec, $work called | 13:02 | |
autrijus | 'tis okay | 13:03 | |
I need to grab food too | |||
see you in a bit | |||
stevan | ok | ||
and I agree with all your comments :) | |||
autrijus | :) | ||
stevan | I am going to do a make test and commit | 13:04 | |
Aankhen`` | We have rules now? | 13:05 | |
stevan | I will explain it on perl6-c too so that others can start :todo<bug|feature|parsefail|hardfail> the tests :) | ||
Aankhen``: we have perl5 reg-exp | |||
and the PGE is in the Pugs tree, but not working with Pugs yet | |||
Aankhen`` | r2629 | autrijus | 2005-05-02 22:56:05 +0530 (Mon, 02 May 2005) | 1 line | ||
* PGE is now part of Pugs; :P5 restriction lifted from rx// and s///. | |||
Ahh. | |||
Darn. | |||
stevan | that may take a while, and first priority right now is Objects :) | ||
Aankhen`` | Oh well. | 13:06 | |
autrijus | and more importantly, we are will waiting for patrick. | ||
Aankhen`` | I just want them to play with anyway. :-P | ||
Patrick? | |||
autrijus | patrick, author of PGE. | ||
Aankhen`` | Ah. | ||
autrijus | the tree's PGE version is dated (and old and obsoleted) | ||
Aankhen`` | Awww. | ||
autrijus | he promised a new version Real Soon Now | ||
Aankhen`` | Heh. | ||
stevan wonders how autrijus eats/showers/sleeps and still manages to chat on #perl6 :) | 13:07 | ||
autrijus | stevan: easy, by chatting while eating/showering/sleeping | ||
Aankhen`` | I don't think autrijus sleeps. :-P | ||
autrijus | Aankhen``: so, if you use rx// in pugs | ||
stevan | :) | 13:08 | |
autrijus | you'll see a data structure repensenting the compiled Rule | ||
stevan | haskell or perl? | ||
autrijus | it's just a Simple Matter (tm) to turn it into a pattern matching function | ||
probably in ST monad | |||
stevan: haskell. | |||
that actually is a quite good exercise for beginning lambdafolks. | |||
translating the machine in pge_gen.c to haskell, that is | |||
however, this is old PGE, as I said | 13:09 | ||
Aankhen`` | Ah. | ||
autrijus | but adapting it to new PGE should be very trivial | ||
but, as stevan said, I'm not personally listing it as high priority :) | |||
getting the OO model figured out and out of door is. | 13:10 | ||
Jonathan_ | autrijus: Were you after me for something earlier, or just saying hi? :) | 13:11 | |
autrijus | Jonathan_: just saying hi | ||
Jonathan_ | Ah, cool. | ||
stevan | autrijus++ # because make test is running so fast now :) | ||
autrijus | :D | ||
bbiab & | 13:12 | ||
Jonathan_ | Limbic_Region: ping | ||
stevan | whoo hoo! my copy of Tiger is "OUT FOR DELIVERY" according to amazon | 13:16 | |
13:21
khisanth__ is now known as Khisanth
|
|||
Juerd | I'm amazed by the number of people willing to pay a fortune for a minor upgrade | 13:23 | |
theorbtwo too. | 13:24 | ||
stevan | Juerd: its not really that minor | 13:25 | |
theorbtwo | stevan, BTW, I got a copy of 9.1, and it's also not working. | ||
stevan | theorbtwo: sorry I totally forgot about that | ||
Juerd | stevan: I fail to see the major improvement. Spotlight? That's a nice thing to have, but worth maybe $10 in the shareware world. | 13:28 | |
theorbtwo | stevan: No big. I wanted to try getting it from another source anyway. | 13:29 | |
stevan | Juerd: spotlight could not be shareware since it integrates soo tightly into all the existing mac apps | 13:30 | |
well it could be shareware,.. but i wouldnt use it | |||
(and take the chance of breaking everything) | |||
Juerd | stevan: Oh, and mac software is unscriptable of course... :P | ||
stevan | Juerd: scriptable is one thing, tightly integrated search is another | ||
Juerd | Still, I wouldn't pay this much for an upgrade. For a new install, sure, I'd say it was cheap even. | 13:31 | |
stevan | Juerd: to each their own :) | 13:32 | |
I dont mind paying it | |||
Juerd | Are you rich? | ||
stevan | Juerd: nope | ||
just love my mac :) | 13:33 | ||
Juerd | Ah, that must be the difference then | ||
I love the hardware, not the software. | |||
The OS sucks as much as Windows and Linux+KDE, but in different ways | |||
stevan | I see hardware like I see my toaster, it should just work | ||
software is what I am interested in | |||
Juerd: to a degree, all software sucks | 13:34 | ||
we are in the stone age of computers | |||
Juerd | Yes, but there should be software that sucks less than other software | ||
stevan | software developement is about maybe 50 years old | ||
that is very young | |||
if you compare it to bridge building | 13:35 | ||
Juerd | It's a very different science | ||
stevan | Juerd: yes it is, and one that has been perfected over thousands of years | ||
Juerd | It is only/mostly because of Microsoft that software isn't developing at much higher pace | ||
stevan: Perfected? All but. | |||
stevan | Juerd: perfect being a relative term :) | 13:36 | |
Juerd | That's a bad definition | ||
stevan | s/has been perfected/is being perfected/ | ||
Juerd | perfection is the most absolute value :) | ||
Quality is always on a scale from nonexistence to perfection | 13:37 | ||
(where nonexistence is more like undef than 0) | |||
stevan | and current software is on the low end of that scale | 13:38 | |
Juerd | That's impossible to say | ||
Because we don't know what perfection is | 13:39 | ||
For all we humans know, it's as far away as infinity. | |||
stevan | Juerd: now your getting all philosophical on me :P | ||
Juerd | s/your/you're/ | ||
stevan | s/your/yur/ :P | ||
Juerd | And of course I'm getting philosophical - how else to view the world? | 13:40 | |
stevan | LOL | ||
wolverian | as if there's a perfect objective interface.. | ||
jabbot | pugs - 2647 - this revision has the new :todo<attr> co | 13:56 | |
theorbtwo wants to hack on bringing in the PGE stuff, but is uncertian where to begin... | 14:06 | ||
PGE is in Text.PGE, so presumably Autrijus doesn't want it colored with stuff from the Pugs namespace, meaning that the glue doesn't go there... I think. | |||
Unless I should add a function there that gets text and matches against it, but general perl should be available from inside of rules, so probably not. | 14:07 | ||
autrijus | theorbtwo: yo. | ||
theorbtwo: the easiest way is to start by emulating RRegex interface. | |||
and don't worry about embedding perl inside it yet. | 14:08 | ||
actually, just provide a | |||
matchRule :: String -> Node -> Maybe [String] -- returns captured | |||
is a very good start. | |||
then we can move it inside eval monad. | |||
one thing at a time. | |||
theorbtwo | OK. | ||
autrijus | for how to write matchRule, consult pge_gen.c | 14:09 | |
it has detailed plan of how to translate a Node into an execution context. | |||
PerlJam | so ... did pm release his pge rewrite yesterday? | ||
autrijus | I'd probably use the ST monad. | ||
and carry on the local context with ST. | |||
you can also use ReaderT ST if you feel like. | |||
PerlJam: not at all. | |||
PerlJam | bummer :( | ||
autrijus | ;) | ||
theorbtwo: for a demo of runST and ST monad, see my perlmonk post wrt BrowserUk a while ago | 14:10 | ||
brb & | |||
14:15
gaal is now known as roo,
roo is now known as gaal_
|
|||
gaal_ | i think we need objects for a reasonable implementation of pipe open. | 14:19 | |
reasonable interface that is. | |||
14:19
gaal_ is now known as gaal
|
|||
gaal | does everybody get pestered by NickServ, or is it just me? | 14:19 | |
castaway | not me, mines not registered :) | 14:20 | |
theorbtwo | I set gaim to log in for me, and just close the "you are identified" message. | 14:21 | |
gaal | either i'd registered a while ago and forgot; or someone else registered this nick; but if it was me then it oughta have been recycled already. | 14:22 | |
theorbtwo | Hm, I don't see a forgotten password mechinisim. | 14:24 | |
Talk to the admins? | |||
gaal | yeah | 14:25 | |
i mean, i should. | |||
jabbot | pugs - 2648 - Added svn:eol-style => "native" to t/ an | 14:35 | |
Limbic_Region pokes his head in and looks about | 14:37 | ||
stevan | howdy Limbic_Region | ||
theorbtwo | Allo, Joshua. | ||
stevan | Would you like to play a game? | 14:38 | |
Limbic_Region | as long as "thermo-nuclear" isn't in the title | ||
stevan | LOL | ||
Limbic_Region | stevan - thanks for p6ifying my infinite lazy list code | 14:40 | |
feel free to update it in the repository too | |||
stevan | Limbic_Region: no problem, thanks for writing it in the first place :) | ||
Limbic_Region: I didnt know you had commited it | |||
Limbic_Region | yep | 14:41 | |
stevan | Limbic_Region: you should put a link back to the svn repo, so people can always check the latest version | ||
Limbic_Region | my goal is to learn enough p6 to be able to answer relatively simple questions at the Monastery with both p5 and p6 answers | ||
ok | |||
will update | 14:42 | ||
autrijus | gaal: you can fake objects using VOpaque, you know that? | 14:43 | |
stevan | autrijus, and co: I have sent a description of the new layered TODO functionality to perl6 compiler | ||
Limbic_Region | stevan - the node has been updated to point to svn.openfoundry.org/pugs/examples/i...zy_list.p6 for latest version | ||
stevan | questions, comments, suggestions welcome :) | ||
Limbic_Region: excellent | 14:44 | ||
Limbic_Region | so I have a couple of todo follows | ||
err followups even | |||
autrijus - we were going to look at the my foo = sub { ... return sub { ... } } issue of not being able to drop the sub keyword in both cases | 14:45 | ||
stevan | Limbic_Region: It also did not want to handle pointy subs either (-> {}) | ||
Limbic_Region | nothingmuch - I was going to look at the splatted parameters shouldn't be rw test and see if I could think of any varations as well as investigate as o the proper way to throw/catch the error | 14:46 | |
stevan has to take the dog out & | |||
Limbic_Region | and apparently - Jonathan_ wanted to talk to me too | ||
Jonathan_ ping | |||
is there an easy/straightforward way to add to a junction of any() or all() | 14:56 | ||
PerlJam | Limbic_Region: wish I knew. Given $j=1|2|3; does $k=$j|7|8 make some sense other than "adding" to the junction? | 14:59 | |
If so, then you'll probably need something like $k=$j.values|7|8 | 15:00 | ||
theorbtwo | any(any(1,2,3),7,8), I think. | ||
any($j.values, 7, 8) is I think what you want. | |||
PerlJam | theorbtwo: I tend to think that any(any(1,2,3),7,8) means the same as any(1,2,3,7,8) | 15:02 | |
jabbot | pugs - 2649 - s/:todo/:todo<feature>/ in t/oo/. | 15:05 | |
Limbic_Region tries to think of an example that makes sense since what is in his head isn't coming out right | 15:07 | ||
ok - you have won a shopping spree, you are allowed to pick exactly 1 item from anything in the store. As you are walking up and down the isles, a new shipment of doodads comes in - since any( @entire_store ) is already quite large - what is the sane way of adding 1 more item to my current junction? | 15:12 | ||
PerlJam | Limbic_Region: I think that way is $store |= $one_more_item | 15:21 | |
Limbic_Region is going to eat pizza and think about it | 15:24 | ||
shapr is going to think about pizza while doing work. | 15:29 | ||
15:37
sbkhh is now known as Odin-
|
|||
ninereasons | I wrote a test for the pairs method assuming that I understood what a pair is. I'm not so sure, now. | 15:51 | |
Presently, the pairs method returns a different kind of data structure, depending on the context. | |||
S09 says that context matters. | 15:52 | ||
but how much? | |||
see the example | |||
pasteling | "ninereasons" at 199.107.164.126 pasted "are all behaviors of the pairs method correct?" (26 lines, 497B) at sial.org/pbot/9873 | ||
Limbic_Region | FAQ: "How do I get a list of unique elements from an array" - Answer: my @uniq = grep { one( @list ) eq $_ } @list; | 15:57 | |
anyone see that as being a "good idea"? | |||
broquaint | hash { @array.map:{ $_=> 1 } }.keys ;) | 15:59 | |
Limbic_Region | broquaint - not necessarily the solution - the idea | 16:00 | |
the p5 FAQs in p6 | |||
broquaint | I figured, L~R, was just playing around. Seems a little awkward, but that's probably because of the one() usage. | 16:01 | |
Can junctions been flattened? I forget :/ | 16:03 | ||
Limbic_Region | broquaint - say any( @list ).values; | 16:04 | |
pasteling | "ninereasons" at 199.107.164.126 pasted "unspecced 'pair' method" (16 lines, 292B) at sial.org/pbot/9876 | ||
Limbic_Region | that's the best way of doing it | ||
ninereasons | compare the behavior of the pairs method, to the unspecced 'pair' method. | ||
broquaint | Thanks, L~R. | ||
Limbic_Region | broquaint - the only two methods I know about for junctions ATM is .values and .pick | 16:05 | |
but I am sure others in the know have all kinds of wizardry up their sleeve | |||
it is quite elegant though (as long as order isn't important) | 16:06 | ||
say "unique = ", any( @list ).values; | |||
broquaint | Is that meant to produce a unique list of values from @list? | ||
Limbic_Region | no, but that is the end result | 16:07 | |
forget about junctions and think of quantum superpositions | |||
the eigenstates were the values that the superposition could take on | 16:08 | ||
ninereasons | s/,/~/ | ||
say "unique = " ~ any( @list ).values; | |||
Limbic_Region | thanks ninereasons | ||
ninereasons | :-) | ||
Limbic_Region is still writing p6 with p5 | |||
from that perspective broquaint - they are the same state so you only need 1 of them. If we were going to stay in the realm of Q::S though, probabilities of state when things collapsed would have to be kept too | 16:09 | ||
ninereasons | it's not so bad a problem as writing p5 with p6, Limbic_Region | ||
metaperl_ | is "~" string concatenation | ||
Limbic_Region | but fortunately it isn't needed - so the states are unique | ||
ninereasons | bool:true metaperl | 16:10 | |
metaperl_ | ninereasons, thanks | ||
Limbic_Region | sorry - I saw that as a statement not a question | 16:11 | |
Limbic_Region knew the answer but parsed the question wrong | |||
ok - so no screams and shouts for the p5 FAQs to have p6 answers ATM? | 16:12 | ||
ninereasons | I have more questions than answers right now, Limbic_Region | 16:13 | |
ninereasons thinks this might be a permanent condition | |||
Limbic_Region | ninereasons - now I think you misparsed | ||
I wasn't proposing a p6 FAQ | 16:14 | ||
I was proposing answering the p5 FAQ with p6 answers | |||
ninereasons | that's what I mean, Limbic_Region . I'm not sure that I would recognize the canonical answer if I saw it | ||
Limbic_Region | ahhh | 16:15 | |
ninereasons | what you posted looks good to me | ||
Limbic_Region | yeah - there is definately the issue of toomwtdi coming into play | ||
*shrug* - just an idea | |||
autrijus | $ ./pugs -e 'for (1..3) { state $x; $x += $_; say $x }' | 16:16 | |
1 | |||
3 | |||
6 | |||
yay, works. | |||
rehi, btw :) | |||
Limbic_Region | so we have C's static ? | ||
autrijus | implementing state() involves a one-line change... | ||
one-line revert, actually | |||
because for a couple hours a few days ago, our my() was acting like state() | 16:17 | ||
(which the tests dutifully caught) | |||
Limbic_Region: yeah. or perl 5's | |||
my $x if 0; | |||
tests welcome for that | |||
Limbic_Region | right, but p5's behavior was never defined nor intended to work | ||
autrijus | actually, tests welcome for let() too, although I'm not quite sure what does that do | 16:18 | |
temp() too. | |||
and for state(), of course | |||
Limbic_Region: right. it is nevertheless quite useful. | |||
broquaint | let() only works within the context of a rule doesn't it? | ||
ninereasons | let sounds interesting | ||
Jonathan_ | Limbic_Region: I'm here now - just wanted to check how the latest Pugs Win32 build worked out for you. | ||
Limbic_Region | 6 mb binary - but working fine | 16:19 | |
I just fiddle when I want to run tests Jonathan_ | |||
ingy | hola kids | ||
Limbic_Region | and after thinking about it - anyone who is intelligent enough to want to write/run tests should be smart enough how to get it working after you did all the hard work | ||
autrijus | broquaint: no... | ||
Jonathan_ | I would still like it to work out of the box, mind... :S | 16:20 | |
autrijus | $x = 9; try { let $x = 10; die "bye~" }; say $x; # 10 | ||
Jonathan_ | Can you say "use CGI;" or whatever, and it finds it, if you just extract the archive and run pugs.exe? | ||
I got it doing that in the tests I did.. | |||
autrijus | er. | ||
$x = 9; try { let $x = 10; die "bye~" }; say $x; # 9 | |||
sorry ;) | 16:21 | ||
broquaint | Oh yeah. | ||
Limbic_Region | autrijus - how should state() behave inside a factory? Will subsequent instances of closures be "tangled" (another Q::S term)? | ||
autrijus | Limbic_Region: state is just like my() | ||
except no new pad instance is generated on reentry. | |||
i.e. it's initialized only once | |||
Limbic_Region | autrijus - I understand all that | ||
autrijus | so it's like a global, but useful only in lexical context. | ||
Limbic_Region | and my question remains | ||
autrijus | so all closures refers to the same variable. | 16:22 | |
same pad storage slot, that is. | |||
they all have the common reference in their subPad. | |||
Limbic_Region | ok - so if you want a bunch of counters to be able to be used throughout the code but draw from the same pool, state() is a perfect thingy | ||
autrijus | exactly! | ||
you can use a my() in outer scope to do the same. | 16:23 | ||
but then it's overkill for visibility. | |||
which is one of the annoying things about p5. | |||
Limbic_Region | Jonathan_ - any chance you building a new build so I can play with state() - once I get home I am in the process of moving and won't get to play | ||
autrijus - my outside of the factor for the same effect is fugly | |||
ninereasons | i've wanted just that thingy many times, in p5 | ||
Jonathan_ | Limbic_Region: Sure, is it in SVN now? | ||
autrijus | Jonathan_: yes | ||
ninereasons: the p5 idiom is | 16:24 | ||
{ my $state_var; sub thing { ... } } | |||
Jonathan_ | It's on its way. | ||
Limbic_Region | ninereasons - I have done it several times in p5 through various implementations - and none of them are pretty | ||
autrijus - same can be achieved using OO | |||
autrijus | eh, sure. anything can be achieve with OO :) | ||
Limbic_Region | and even my own variation of multi-method closures | ||
autrijus | ah. that's more interesting | ||
Limbic_Region | but state() is a "cool" way of doing it | ||
ninereasons | autrijus, I use File::Find a lot, and hate using "my" outside of the loop especially to create an iterator. | 16:25 | |
s/loop/block/ | |||
autrijus | ninereasons: I think you speak for many people :) | ||
which is, come to think of it, why people are willing to write atrocious constructs like "my $var if 0". | |||
jabbot | pugs - 2650 - * implement `state $var`. | ||
ninereasons | autrijus, would you enlighten me re: my 'pairs' question ? | 16:26 | |
autrijus | $pair.perl should say | 16:27 | |
('foo' => 'bar') | |||
or some such. | |||
that's a pugs bug | |||
ninereasons | so, the 'pair' method is correct 'pairs' behavior ? | ||
autrijus | I think so. if you want alternating k and v, use .kv | 16:28 | |
pairs support in pugs is spotty. | |||
partly because the OOification is not yet complete | |||
Limbic_Region | what are the various ways you can refer to hash keys again besides {} and <> | 16:29 | |
autrijus | theorbtwo: hold off working on Text.PGE if you have begun -- the new PGE apparently is not C based. | 16:34 | |
it's all IMC. | |||
Limbic_Region | perlbot nopaste | 16:39 | |
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 "Possible use for state()" (17 lines, 310B) at sial.org/pbot/9877 | 16:40 | |
Limbic_Region | I can't test state() ATM, but if someone could please run what I just posted on the nopaste bot - I would appreciate it | 16:41 | |
autrijus | 00:40 <@pmichaud> okay, okay -- I'm working on it now. I've been working on it pretty steadily for a couple of weeks, it's within an hour or two of release | ||
Limbic_Region | except it has a mistake | ||
pasteling | "Limbic_Region" at 129.33.119.12 pasted "Can someone please test - possible use for state()" (17 lines, 315B) at sial.org/pbot/9878 | 16:42 | |
broquaint | I think you want my() there L~R, as you want $cash shared per gen_cashier() call, right? | ||
Limbic_Region | broquaint - I want all 3 cashiers to have access to the same $cash | ||
so no - my they would all get their own lexical copies | |||
broquaint | Ah, ok. | 16:43 | |
Limbic_Region | $cash is "total cash for the store", not "cash in your own drawer" | ||
I was trying to be quick about it to make sure it worked as expected - I will work on "the story" later | 16:44 | ||
autrijus | Limbic_Region++ # OO! | 16:45 | |
(closured-based OO)++ | |||
state() is class variables, and my() is instance vars | |||
Limbic_Region | autrijus - www.perlmonks.org/index.pl?node_id=291486 might be of some mild interest | ||
jabbot | pugs - 2651 - a few changes mostly related to pairs | ||
Limbic_Region | I wrote that about a year after learning p5 | 16:46 | |
metaperl_ | I still dont understand when multi-methods are useful | ||
autrijus | Limbic_Region: cool. | ||
incidentally, that's how I implemented some sort of OO in QuickBasic way back when. | |||
wow, more than 10 years ago. | 16:47 | ||
metaperl_ | Limbic_Region: want to tutor me? :) | ||
Limbic_Region | metaperl_ - I can give you 1 example that isn't tooooo contrived | ||
give me a second | |||
Jonathan_ | Limbic_Region: Updated Pugs Win32 build online. | ||
autrijus | metaperl_: oh. do you understand when overload are useful? | ||
sub add (Complex $x, Num $y) { ... } | |||
metaperl_ | you mean ad hoc polymorphism? | ||
Limbic_Region | metaperl_ - see www.perlmonks.org/index.pl?node_id=407834 | 16:48 | |
autrijus | multi sub add (Complex $x, Num $y) { ... } # rather | ||
Limbic_Region | specifically sub Stats { ... } | ||
thanks Jonathan_ - trying now | |||
in that case, you are gathinger numbers over a period of time | 16:49 | ||
but beyond just the total, you want the average, min, max, etc | |||
you could have made it so that you passed in what you wanted as an argument | 16:50 | ||
my $ave = $stats->( 'ave' ); | |||
but you could have made $stats multi-method as well | |||
my $ave = $stats{ave}(); | |||
one big benefit is that you can change the behavior of the closure or add closes at any time | 16:51 | ||
metaperl_ | Tool::Box is a nice piece of code... it seems like what might be in "Higher Order Perl" even though I have not bought the book yet | ||
Limbic_Region | metaperl_ - HOP didn't exist when I wrote Tool::Box | 16:52 | |
at least it wasn't finished/published | |||
theorbtwo | autrijus: ACK to that. | ||
autrijus | theorbtwo: however, that means src/IMC/*.hs has a reason to exist :) | ||
theorbtwo | Are we going to use parrot to try to make the IMC into something we can use, or give up and write our own, or beat pmichaud about the brow until he gives in and puts it back in C, or what? | ||
Hm, I should figure out what it is that it does, then. | 16:53 | ||
Limbic_Region | in anycase metaperl_ - there is very little the multimethod closure approach gives you that can't be accomplished some other way - just a style I happen to like | ||
metaperl_ | what does IMC mean? intermediate compiler? | ||
autrijus | metaperl_: s/compiler/code/ | ||
theorbtwo: so, I think either a Pasm interpreter | |||
(which is probably not a great idea) | |||
metaperl_ | maybe reading the Class::Multimethods docs will elucidate things for me | ||
Limbic_Region | metaperl_ - are you familiar with the Parrot FAQ? | ||
shapr | Limbic_Region: Have you heard of Intentional Programming? | ||
autrijus | or a IMC parser+(interpreter|compiler) | ||
metaperl_ | no - not at all | ||
Limbic_Region | shapr - I haven't heard of much | 16:54 | |
PerlJam | metaperl_: pir is the new imc ;) | ||
autrijus | theorbtwo: or beat parrot folks until they produce a useful embedded parrot | ||
Limbic_Region is digging up the link for you metaperl_ | |||
PerlJam | autrijus: good luck on that one! | ||
autrijus | actually, we have an expert here. | ||
jhorwitz: ping? | |||
Limbic_Region | metaperl_ www.parrotcode.org/faq/ | ||
jhorwitz | autrius: pong | ||
autrijus | jhorwitz: mod_parrot wants a parrot source tree, right? | 16:55 | |
Limbic_Region | shapr - I am a programmer hobbyist (never went to school for it and don't do it professionally) | ||
so no, I haven't heard of Intentional Programming | |||
PerlJam | Limbic_Region: what do you do professionally? | ||
jhorwitz | autrijus: not sure what you mean | ||
autrijus | jhorwitz: I notice when I do "make install", the parrot embed header is not installed | ||
ingy | the beatings will continue? | ||
Limbic_Region | PerlJam - I work for the government so the stock answer is "as little as possible" | ||
autrijus | jhorwitz: a source build of parrot, instead of a binary installation | 16:56 | |
Limbic_Region | PerlJam - my title is Information Technology Specialist which is a fancy way of saying I am resident jack-of-all-trades master of none IT-weenie | ||
PerlJam | Limbic_Region: So ... when there's a guy digging a hole, you're one of the 4 standing around watching him dig? | ||
jhorwitz | autrijus: yes, but that's only because at the time, "make install" didn't install includes, libs, and such. | ||
not sure what the situation is now. | |||
autrijus | yeah, so do you only need | ||
libparrot.a | |||
and include/parrot/*h | 16:57 | ||
that's all, right? | |||
Limbic_Region | PerlJam - no, I am the one in the air conditioned trailer eating delivered food who is in charge of the 4 guys standing around watching him dig | ||
PerlJam | heh | ||
jhorwitz | and parrot-config.imc | ||
Limbic_Region | metaperl_ did you get the Parrot FAQ link? | ||
metaperl_ | yes I just read it | 16:58 | |
Limbic_Region | the Parrot web site is notrious for not being "up to the minute" | ||
but the content is good and it is usually reviewed circa each public release | |||
so all in all - good place to get up to speed | 16:59 | ||
autrijus | jhorwitz: alright. looks they are not installed yet. | ||
I'm prodding them. | |||
Limbic_Region | #parrot is too (but not on this network) | ||
autrijus | theorbtwo: so, worst case, we link against libparrot.a | 17:00 | |
theorbtwo: so if you don't have parrot built, you don't get rx//. | |||
on the plus side, that gives us much faster pugscc | 17:01 | ||
and eval_imc() | |||
and more. | |||
oh and eval_tcl ;) | |||
in that case Pugs will be just like Ponie :) | 17:02 | ||
Limbic_Region | don't forget about basic | ||
autrijus | yes. bbberry imbbortant | ||
so, as long as the dependency is optional (much like hs-plugins), I take nobody really oppose to this? :) | |||
Jonathan_ | On a Parrotish note, how is the Pugs backend to emit IMC/PASM (I forget which) coming on though? | 17:04 | |
autrijus | Jonathan_: IMC | ||
it's coming along nicely. | |||
most simple expressions now work. | |||
Jonathan_ | Cool. Maybe I'll have time to play with it sometime. | 17:05 | |
Limbic_Region | autrijus - being opposed to really isn't the right sentiment | ||
autrijus | it's pending my next supply of tuits to make it monadic. | ||
Limbic_Region | it would be nice to have rules without all of parrot | ||
but - beggars can't really be choosers now can we | |||
autrijus | Limbic_Region: in that case, I'm afraid it's either writing a IMC interpreter | ||
/compiler | |||
or somehow trick parrot into generating C file | 17:06 | ||
which is probably not going to happen | |||
Limbic_Region | autrijus - parrot can generate a native executable on a lot of platforms | ||
autrijus | Limbic_Region: er yes. | ||
how is that relevant? | |||
Limbic_Region | autrijus - not sure because I am not sure how it goes about generating the native executable | 17:07 | |
Jonathan_ | Limbic_Region: It uses its JIT subsystem. | ||
autrijus | Limbic_Region: it's basically doing an exec(). | ||
on the embedded libparrot | |||
so there's no C-based object file we can link to | 17:08 | ||
aside from libparrot.a | |||
Jonathan_ | Limbic_Region: That is, it actually generates proper native code in an object file and then links it with libparrot and some startup stub code to initialize stuff. | ||
Limbic_Region | again - what "would be nice" isn't always "what is available" | ||
autrijus | oh, there's another option. | 17:09 | |
port PGE to Perl 6 :) | |||
and have it generate perl 6 :) | |||
(which is, the Ultimate Goal(tm)) | 17:10 | ||
jhorwitz | autrijus: i make a quick & dirty hack for "module" in Parrot.hs so I can use namespaces. it works, but can you check the paste to make sure it's sane? i'm still a newbie here... :) | 17:13 | |
pasteling | "jhorwitz" at 216.52.77.2 pasted "module for Parrot backend" (2 lines, 119B) at sial.org/pbot/9879 | 17:14 | |
autrijus | sure! | 17:15 | |
jhorwitz: commit it? | |||
jhorwitz: oh btw. | |||
are you using the parrot embed api? | 17:16 | ||
I wonder how do you evaluate an arbitary chunk of IMC | |||
without writing it to a temp file | |||
and pass it to readbc | |||
i.e. in-memory readbc | |||
jhorwitz | i use Parrot_load_bytecode and then call the subs individually. | 17:17 | |
you should be able to use the "PIR" compiler to eval IMC directly though. | |||
wolverian | p6l++ # I often can't follow the discussion but it sounds neat | 17:18 | |
(such as Thomas Sandlaß's Re: Type system questions.) | |||
autrijus | Parrot_load_bytecode takes file too, no? | ||
jhorwitz | yes. but i imagine it can be tweaked to load from memory... | ||
been a while since i looked at the source for it | 17:19 | ||
autrijus | I think I want the drug Sandlaß is smoking. | 17:20 | |
it sounds like fille type lambda. | |||
er | |||
full type lambda. | |||
I wonder if the builtin constraint solver can be leveraged at the Rules level. | |||
shapr | Limbic_Region: I'm a programmer hobbyist too, I never went to school, but I do get to program professionally. | 17:21 | |
autrijus | jhorwitz: I see IMCC_compile_file | ||
jhorwitz | that sounds familiar | ||
autrijus | but it's commented out | 17:22 | |
jhorwitz takes a quick look to jog his memory | |||
autrijus | I'd appreciate it. | ||
I'm writing Pugs.Embed.Parrot, btw. | |||
nothingmuch | wow, people have been talking to me a lot today | ||
nothingmuch has been a lazy blob of lard | |||
autrijus | jhorwitz: once I check in, I think you'll be the person most entitled to hack it into pieces :D | 17:23 | |
Limbic_Region agrees and kicks nothinmuch to help motivate him | |||
jhorwitz | autrijus++ for being a brave soul. :) | ||
nothingmuch | stevan, autrijus: how will we fit this into TAP? by simply parsing '#TODO bug' etc? | ||
Aankhen``: hola | |||
Limbic_Region: i don't know what you mean by proper | |||
Limbic_Region has to scroll back to see what he said before | 17:24 | ||
nothingmuch | i think variations are useful | ||
but perhaps effort is directed elsewhere | |||
but checking that an eval died is the best way to check for an error | |||
and doing something wrong is the best way to create it ;-) | |||
Limbic_Region | nothingmuch - oh, I agree | ||
what I was saying is that if it is a catchable error | |||
then ultimately what we should do is | |||
eval "foo"; | 17:25 | ||
is( $@, 'error we expected' ) | |||
of course that has p5 feel to it, but you get where I am going | |||
nothingmuch | ah | ||
i disagree | |||
Limbic_Region | for now since we don't know what is the proper way to fail | ||
nothingmuch | because the specific error is impl specific | ||
Limbic_Region | we should just verify it fails | ||
nothingmuch | pugs and the one true perl 6 and some other spinoff could do it differently | 17:26 | |
Limbic_Region | nothingmuch - I disagree | ||
nothingmuch | these are tests for the perl language | ||
autrijus | nothingmuch: yes, I think parsing is ok for now | ||
Limbic_Region | or rather | ||
autrijus | Limbic_Region: you going to check in the cashier example? | ||
Limbic_Region | I think we can't JUST test for failures since it might have failed for something else | ||
nothingmuch | autrijus: i can hack it in real quick, but i think i'd rather maintain this in a pugs specific subclass, because I don't want to annoy other users with this interpolation | ||
Limbic_Region | autrijus - it didn't work - playing with it ATM | ||
nothingmuch | Limbic_Region: true, but there is no reliable way to get it to stabilize better | 17:27 | |
Limbic_Region | nothingmuch - right now - which I agree with | ||
nothingmuch | i think we're better off investing time in implementing exact proper behavior | ||
than doing ackward stunts to test for it | |||
autrijus | nothingmuch: then maybe another scheme: "# TODO TAGGED feature" | 17:28 | |
sure, I agree with that too | |||
Limbic_Region | autrijus - if I can't get it working RSN I will throw it over the fence | ||
autrijus | Limbic_Region: cool | ||
nothingmuch | it's a trivial thing, just subclass the css_class of Test::TAP::Subtest::Visual, and make it be more specific if $self->todo | 17:29 | |
by parsing the actual structure | |||
if that's good enough, i can have it out the door in 15 minutes | |||
(because i want to read email first ;-) | |||
Limbic_Region | autrijus - got it working but I can't check in from work :-( | 17:34 | |
I know I know - same old song and dance right | |||
pmichaud | autrijus: there will unfortunately be a slight delay before I can check pge into svn | 17:35 | |
my network connection to svn.perl.org has gone down :( | |||
nothingmuch | Limbic_Region: nopaste it then | ||
pasteling | "Limbic_Region" at 129.33.119.12 pasted "Using state() to do OO without OO" (17 lines, 320B) at sial.org/pbot/9880 | ||
jabbot | pugs - 2652 - add "module" support using Parrot namesp | ||
nothingmuch | pmichaud: why not use openfoundry? | 17:36 | |
Limbic_Region | autrijus - is svn.perl.org/perl6/pugs a 1 way mirror? | ||
pmichaud | ummm, pge goes into the parrot svn | ||
Limbic_Region | errr - rather | ||
svn.openfoundry.org/pugs/ | |||
nothingmuch | pmichaud: oh... i was under the impression a fork will be integrated into pugs... sorry! | ||
Limbic_Region was confused as well | 17:37 | ||
nothingmuch | Limbic_Region: nice code... no do roles ;- | ||
) | |||
pmichaud | oh, I think that pge will be integrated into pugs, but I'm working out of the parrot svn | ||
autrijus | Limbic_Region: yes it is | ||
pmichaud: can you put up a tarball? | 17:38 | ||
Limbic_Region | nothinmuch - I wan't a proof of concept - I will work on a better "story" later | ||
autrijus | or a .zip somewhere we can download? | ||
Limbic_Region | so someone going to check that in? | ||
pmichaud | autrijus -- unfortunately, my connection to my server is down also | ||
autrijus | because... Pugs.Embed.Parrot is working :D | ||
pmichaud: aw. and your code is in your server? | |||
pmichaud | no, I have a local copy. just a sec, lemme see what I can do | ||
autrijus | you can commit to Pugs tree as src/pge/ :D | 17:39 | |
pmichaud | oh, wait, my connection just came back up (finally!) | ||
autrijus | cool! | ||
(but I sent off an invitatino to you anyway.) | |||
pmichaud | okay, let's try this again -- should be about 30 mins :) | ||
autrijus | :) | ||
as a backup you can always check in to svn.openfoundry.org/pugs/src/pge/ | |||
pmichaud | okay, good to know | ||
thanks | |||
autrijus | np | ||
ok. trying to make require_parrot() work... | 17:40 | ||
jhorwitz | autrijus++ | ||
autrijus | mm what should I run. | 17:41 | |
tetris! | |||
shapr | autrijus+=42 | ||
I haven't been on channel much lately, I'm sure I've missed at least 42 good opportunities. | |||
Limbic_Region | shapr - the result of $cash is of course 42 | 17:42 | |
Limbic_Region should probably change $cash to $cash_in_store to make it more clear | |||
jhorwitz | autrijus: are there plans to run tests using the different backends? i just missed something very obvious in my Parrot "module" commit, and of course there was no test to catch it. | 17:50 | |
autrijus | jhorwitz: there are plans. | 17:51 | |
it needs an embedded parrot | |||
for hopefully obvious reasons. | |||
jhorwitz | :) | ||
autrijus | well, we can also compile each test to .imc | 17:52 | |
using pugscc --runparrot | |||
but it's going to be slow. | |||
very slow. | |||
wolverian | how slow? as in, a few hours, or days? | ||
(I would run it...) | |||
pmichaud | arrrgh, lost my connection again | 17:53 | |
okay, I'm heading out to a wifi hotspot -- bbiab | |||
autrijus | good luck | 17:54 | |
Pugs.Embed.Parrot compiles | 17:55 | ||
now hooking it to Prim. | |||
or rather, to Eval. | |||
jhorwitz | autrijus: "module Foo" needs to emit IMC outside of the main sub. not sure how easy this is -- my lambda-fu is weak here... :) | ||
autrijus | jhorwitz: can't you emit ".end"? | 17:56 | |
or do you want to go back to main again? | |||
jhorwitz | autrijus: we'll need to be able to go back, since "module" declarations can happen anywhere. | 17:57 | |
stevan | nothingmuch: ping | 17:58 | |
autrijus | jhorwitz: commit whatever you have with XXX comments about how it should go? | 17:59 | |
jhorwitz | autrijus: already committed, but i'll recommit with comments | ||
autrijus | ok. | 18:00 | |
thanks! | |||
I probably can't stay up long enough to wait for pmichaud :-/ | 18:01 | ||
jabbot | pugs - 2653 - add a few more pairs tests | 18:05 | |
pugs - 2654 - int() (and other builtins which default | |||
Aankhen`` | xABnothingmuchxBB: You rang. | 18:06 | |
s/\.$/?/ | |||
nothingmuch | Aankhen``: you said hello | 18:07 | |
stevan: pong | |||
Aankhen`` | Er... where? | ||
nothingmuch | this morning | ||
Aankhen`` | Ohh, right. | ||
nothingmuch | several minutes after i left, i think | ||
stevan | nothingmuch: were you wondering about the Test::TAP::Model changes for the TODOs? | 18:10 | |
nothingmuch | yes | 18:11 | |
autrijus | $ ./pugs -e 'require_parrot<mandel.pbc>' | ||
................::::::::::::::::::::::::::::::::::::::::::::................ | |||
... | |||
it runs. | |||
stevan | it is all very simple | ||
nothingmuch | it should be a very trivial change | ||
i would like someone to prepare a css though | |||
i have no clue what I'm doing when it comes to that | |||
jhorwitz | woohoo! autrijus++ | 18:15 | |
shapr | btw, is yrlnry Mark Jason Dominus? | 18:16 | |
autrijus | jhorwitz: it only does pbc though, I have no idea how to make imc work | ||
jabbot | pugs - 2655 - remove module support until we can emit | ||
autrijus | shapr: yes | ||
shapr | Ah, ok then. | ||
autrijus | shapr: where did you see that name? | ||
jhorwitz: maybe you can take a look | |||
jhorwitz | autrijus: commited? | ||
shapr | He's been on #haskell off and on for a long, long time. | ||
autrijus | jhorwitz: I have this feeling that src/Pugs/Embed/Parrot.hs will be familiar ground to you | ||
also look at Syck.hs for how FFI is done | 18:17 | ||
jhorwitz: I think you'll discover that GHC can be merely sugared GCC :) | |||
jhorwitz likes sugar | 18:18 | ||
shapr likes spice | |||
nothingmuch | cat VICTUALS | ||
shapr | It don't get no spicier than we got 'round here! | 18:19 | |
shapr distributes the habañeros in carefully sealed packages. | |||
jabbot | pugs - 2656 - * experimental `require_parrot()` suppor | 18:25 | |
pugs - 2657 - [BUG] map flattens arrayrefs, while it s | |||
autrijus | jhorwitz: found time to play with it yet? :) | 18:29 | |
r2658, btw. | |||
jhorwitz | autrijus: was just able to svn up | ||
Aankhen`` | Were there suddenly changes to a lot of different files? | ||
autrijus | Parrot JIT works in Pugs too. | ||
Aankhen`` | My svn up output is rather large. o_O | 18:30 | |
autrijus | jhorwitz: I think what I'd like to see is: | ||
pugscc --parrot examples/mandel.p6 | |||
jhorwitz | autrijus: that's good news. i have yet to play with JIT in mod_parrot. | ||
autrijus | # this produces mandel.imc | ||
./pugs -e 'require_parrot("mandel.imc")' | |||
I'd like that to work. | |||
currently it only loads pbc. | |||
if loading imc works, then we don't need an external file anymore | |||
in face, we don't need pugscc anymore. | 18:31 | ||
it will all be in memory. | |||
jhorwitz | :) | ||
Juerd | Hi from Amsterdam.pm | ||
autrijus | and the resulting linked executable may be, to the zeroth approximation, called perl6, or something :) | ||
nothingmuch | Juerd: giving a pugs talk? | ||
PerlJam | autrijus: you scare me. The same way that damian scares me. I like it! ;-) | ||
Juerd | nothingmuch: I don't know what to say about pugs | ||
nothingmuch: And the minute I do, it's already old info. | 18:32 | ||
nothingmuch | you can do two lightning talks | ||
one now | |||
and one at the end of the talk | |||
PerlJam | Juerd: just say "pugs is perl6" and you're done. | ||
nothingmuch | and describe what autrijus has been doing while people were listening to other speakers | ||
Juerd | nothingmuch: Hehehe. | ||
PerlJam | nothingmuch++ that's a good idea :) | ||
autrijus | actually, if Ponie supports the same EXTERN.h interface | 18:33 | |
Juerd | Can someone summarize the commits since $now till $then when it's $then? | ||
autrijus | like our current PUGS_EMBED=perl5 uses | ||
Juerd | Perhaps it will indeed make a nice lightening talk. | ||
autrijus | then we can also evaluate perl 5 code natively with the embeded parrot :) | ||
stevan | Juerd: make it an art peice, just read the SVN log | ||
autrijus | Juerd: what stevan said | ||
Juerd | stevan: That's too much for a *lightening* talk ;) | ||
stevan | ring a gong for each commit | ||
ingy | I am trying to figure out what angle to play for my Pugs talk at OSCON | 18:34 | |
stevan | ingy: Juerd doesnt like my performance art idea, you are free to it :) | ||
nothingmuch gets busy on real work | |||
autrijus | ingy: it's too far off. | ||
stevan | interpritive dance Pugs | ||
autrijus | ingy: you can think about it at T-7 | ||
ingy | stevan: have you ever seen one of my talks? | ||
autrijus | I mean 7 hours, of course | ||
stevan | ingy: I have not yet had the pleasure :) | ||
ingy | well it makes your suggestion redundant ;) | 18:35 | |
q[acme] | dancing troupe of dogs? | ||
Juerd | Is there a way to get the past $n hours of svn log? | ||
autrijus | Juerd: not really. | ||
stevan | YAPC::NA will actually be my first confernce (aside from the comic-cons of my youth) | ||
nothingmuch | maybe we can write one of those music visualizers, but for sloc changes | ||
autrijus | svn log --limit 100 | ||
ingy | all talks are performance art | ||
jabbot | pugs - 2658 - * add embedded parrot with JIT. | ||
autrijus | nothingmuch: Haskore! | ||
Juerd | autrijus: Danke | 18:36 | |
stevan | Juerd: actually you can svnbook.red-bean.com/en/1.0/ch03s03...3-sect-3.3 | ||
Juerd | autrijus: Is svn log --base what I want? | ||
nothingmuch | Juerd: is the "{" DATE "}" thingy in 'svn log --help' useful? | ||
autrijus | nothingmuch: www.haskell.org/tmrwiki/Haskore | ||
Juerd | stevan: I don't want to use a browser | ||
nothingmuch: Not really | |||
* add embedded parrot with JIT. | |||
stevan | Juerd: sorry :) | ||
Juerd | That works. | ||
ingy | autrijus: there will be a t-7 factor, but i doubt the talk will be a tech talk... | ||
ie I could probably write it now | 18:37 | ||
nothingmuch | autrijus: looks interesting... *reading* | ||
Limbic_Region | autrijus - will Pugs built on plain jane windows work with a Parrot built on Cygwin? | ||
stevan | Juerd: svn checkout --revision {"2005-05-02 8:30"}:HEAD | ||
(fill in a time approriate to you) | |||
Juerd | stevan: Don't want to checkout. Want log. | ||
autrijus | Limbic_Region: I think ABI differ | ||
so no. | |||
ingy | I need to start hiring the supporting cast, etc | ||
stevan | sorry,.. s/checkout/log/ | ||
Limbic_Region | grrrr | ||
Juerd | stevan: Think I found it, svn log -r BASE | ||
autrijus | Limbic_Region: I mean msys/mingw vs cygwin/gcc | ||
hey pmichaud! Pugs now has embedded Parrot! | 18:38 | ||
pmichaud | cool! | ||
autrijus | mandel.pbc runs! | ||
pmichaud | I just commited pge | ||
Limbic_Region | ok - so I need to just tell my father and my wife they need to finish the new house all by themselves so I can play with Pugs/Parrot/Perl6 | ||
autrijus | yay! | ||
pmichaud++ | |||
nothingmuch | Juerd: the date thingy is the same as saying 'any revisions after'... | ||
ingy | autrijus++ # Irssi: #perl6: Total of 104 nicks | ||
pmichaud | note that it's not a complete implementation yet, but it's got enough to work with | ||
Juerd | autrijus: Since when does it have that? | ||
autrijus: Does that fit in the past few minutes? By any definition? :) | |||
kungfuftr | ingy-- # too much incrementing going on | 18:39 | |
autrijus | Juerd: yes... let me see | ||
02:35 < jabbot> pugs - 2658 - * add embedded parrot with JIT. | |||
that's 3 minutes ago. | |||
Juerd | Ah, right | ||
NEAT | |||
autrijus: That's a very nice item for the What Pugs Got The Past 2 Hours. | |||
autrijus | oh. 2 hours! | ||
ingy | kungfuftr: grrr | ||
autrijus | tsk. we got a lot more. | ||
Juerd | autrijus: Yea. | ||
kungfuftr | ingy: i love ye really... =0) | ||
pmichaud | now I just have to update the p6rules test suites | ||
Juerd | autrijus: Hours just began. I'm at Amsterdam.pm | ||
autrijus: A lightening talk of what has been written during our sitting here | 18:40 | ||
Limbic_Region can't resist opening an obvious spam email as the subject line is "being lazy" | |||
autrijus | Juerd: so we have require_parrot(). we have state($var) which is like `my $x if 0` but works better. | ||
Limbic_Region is glad he did - it was from the Higher Order Perl mailing list | |||
Juerd | autrijus: When was the state thing introduced? Has to be after thishour:25 | ||
Limbic_Region | autrijus - did you check in my example code? | ||
and if so - as a test or as an example? | |||
autrijus | it's introduced exactly two hours before, I think | 18:41 | |
Limbic_Region: I had not, I don't know, both way worksforme, your call :) | |||
Juerd | autrijus: Hm, we were eating then. Good enough. | ||
autrijus | Limbic_Region: do you have url again? | ||
Limbic_Region | sial.org/pbot/9880 | ||
only thing I would change is $cash | |||
$cash_in_store # or some such | |||
autrijus | ok. | ||
Limbic_Region | to make it obvious it is being shared | 18:42 | |
autrijus | cashers.p6? | ||
cashiers.p6? | |||
stevan | Limbic_Region: maybe a bank() and $vault is better analogy? | ||
Limbic_Region | sure | ||
stevan | and the generator creates $tellers | ||
Limbic_Region | stevan - sure - it was a very quick proof of concept | ||
knowing it is in there is all that I need to go back and work on it later | 18:43 | ||
Limbic_Region WILL have free time again | |||
stevan | ok | ||
stevan is a homeowner, so he knows Limbic_Region is wrong :P | |||
you will be praying Home Depot has WiFi hotspot :) | |||
Limbic_Region | stevan - I have a father who missed out on my childhood who feels a great need to make up for it | 18:44 | |
yay - for extremely cheap competent labor | |||
masak | perlbot karma ingy | ||
perlbot | Karma for ingy: 38 | ||
masak | :) | ||
autrijus | Juerd: there's some minor thing... | 18:45 | |
like | |||
:name{ ... } | |||
for closure as pair values | |||
Juerd | autrijus: Closure as the pair value must be either :name{ { ... } } or :name({ ... }) | 18:47 | |
autrijus: Or name => { ... }, or anything involving "sub" | |||
autrijus | Why is :name{ { ... } ] different from :name[...] ? | 18:48 | |
ok, then you can say it's retracted in a minute :) | |||
Juerd | :name{ { ... } ]? | ||
autrijus | :name { {...} } | ||
:name{ {...} } | |||
Juerd | autrijus: :pair uses *hash subscript* syntax, in the most basic case. | 18:49 | |
autrijus | oh, does it. | ||
I thought it's | |||
:name( ... ) | |||
as the most basic case. | |||
Juerd | autrijus: Nope, I thought that too | ||
autrijus | but wtf? | ||
where is that specced? | 18:50 | ||
Juerd | I'll try to see Larry's mail | ||
s/see/find/ | |||
autrijus | that's fine, I trust you | ||
when is you talk again? | |||
Juerd | I'm trying to follow MarkOv's talk too | ||
autrijus: I don't know. Whenever we're almost done here | |||
autrijus | like, in two hours? | ||
Juerd | I haven't been to an amsterdam.pm meeting ever before | ||
autrijus | Juerd: ok. svn.openfoundry.org/pugs/examples/cashiers.p6 is new, too | 18:51 | |
30 seconds ago from Limbic_Region | |||
you may find that amusing | |||
Limbic_Region is going to take stevan's advice and change it to bank/vault/cashier when he finds time | |||
autrijus | cool | 18:52 | |
Limbic_Region | I also have some p5 code at the Monastery that will be even better practical implementation of state() | ||
provided the other pieces already work in Pugs | |||
Juerd | Message-ID: [email@hidden.address] | ||
autrijus: That's for you | |||
autrijus | k. | ||
Limbic_Region | I do have a feeling though that until I am moved into the new house - all play is going to have to be done at $work | ||
autrijus | Limbic_Region: I'm so glad I managed to convince you into building pugs :) | 18:53 | |
Limbic_Region | autrijus - it was bound to happen - I was just fooling myself into thinking I could hold back the flood gates | 18:54 | |
Limbic_Region is looking forward to meeting autrijus in person some time | |||
Juerd too | 18:55 | ||
jhorwitz looks forward to heckling autrijus at YAPC. :) | |||
shapr too | |||
Juerd | world-- # too fscking large. | ||
Let's found programmeria! | |||
Coderia I mean | |||
jabbot | pugs - 2659 - * add Limbic_Region's demo of state() va | ||
shapr | Why don't we just design a better transporation system so we can cheaply visit neat people? | 18:56 | |
Juerd | Or all move to Poland and rename it to Perlland. It already has the correct country extension. | ||
shapr: It has been designed over and over again but governments sck.3 | |||
suck. | |||
autrijus | I think augmented reality with mind-controlled navigation is more practical :) | 18:57 | |
Limbic_Region | here is the real problem - the people who have money want more | 18:58 | |
we need someone with a lot of money who doesn't care about it to put it to good use | |||
Juerd | If that's just one someone, it isn't enough. | ||
shapr | Juerd: but, I think programming is not limited to Perl, Haskell, or any one language. | 18:59 | |
Limbic_Region intends to give away his entire lottery winnings once he has set up enough to ensure he doesn't have to $work again | |||
emphasis on HAVE TO WORK | |||
Juerd - Bill Gates? | |||
autrijus | wow, it's clean. | ||
the PGE code, that is. | |||
pmichaud++ | |||
pmichaud | is there any other kind? | ||
Juerd | shapr: Perl 6 is every language, so that's not a problem. | ||
autrijus | pmichaud: heh, the C-based v1 was less so :) | ||
pmichaud | the c-based version was as clean as I could make it with the tool I had... which is why I switched to Parrot | 19:00 | |
autrijus | ok, now let me grok the code... | ||
pmichaud | besides, it's terribly important to me that we build something maintainable for the long haul, so clean beginnings are important | ||
autrijus: just ask if there are any questions | |||
Limbic_Region | autrijus pmichaud all - current Pugs coversation in the Monastery chatterbox | 19:02 | |
autrijus | addattribute base, "$:to" # end of match | 19:03 | |
the sigils are actually meaningless right? | |||
just monikers | |||
pmichaud | yes, they don't mean anything | ||
I'm just following p6 naming conventions a bit | |||
autrijus | what's target? | 19:04 | |
like ".*" ? | |||
pmichaud | the string to be matched | ||
Juerd | svn: PROPFIND of '/pugs': Could not resolve hostname `svn.openfoundry.org': Temporary failure in name resolution (svn.openfoundry.org) | ||
Known issue? | |||
autrijus | the entire? | ||
pmichaud | yes | ||
autrijus | Juerd: try using openfoundry.dyndns.org/pugs | 19:05 | |
pmichaud | target == string to be matched, pos == current match position | ||
Juerd | autrijus: Is there a way to do that without re-checking-out? | ||
autrijus | Juerd: svn switch --relocate | ||
Juerd | thank you | ||
autrijus | so the signature of yield() is... | ||
pmichaud | oh, you were referring to $:target . Yes, it's the same thing -- the match object has to remember what it was matching against | ||
yield() is a coroutine | |||
autrijus | $match, $target, ?, ? | 19:06 | |
pmichaud | so, yielding() just returns back to where we were in the match | ||
autrijus | what's the 0 doing there? | ||
pmichaud | and yes, the signature is mob, target, pos, lastpos | ||
autrijus | yield(me, target, 0, lastpos) # start match | ||
oh, pos. | |||
0 means start. | |||
pmichaud | that will likely change | ||
slightly | |||
autrijus | what does yield return? | ||
pmichaud | basically it returns control :) | 19:07 | |
autrijus | ah. it is a mutator. | ||
of the internal Match state. | |||
pmichaud | yes | ||
autrijus | nice! | ||
pmichaud | yielding again returns back to the match at the state where we left off, so we can get more matches | ||
autrijus | so @capt and %capt | ||
are unnamed and named capts | 19:08 | ||
respectively? | |||
pmichaud | yes | ||
named capts don't exist yet, but I've already got the base code in for that | |||
autrijus | and it's an array of string | ||
or array of Match? | |||
pmichaud | which one? | ||
autrijus | capt | ||
@:capt | |||
pmichaud | @capt is an array, %capt is a hash | 19:09 | |
autrijus | yeah, but array of.. ? | ||
pmichaud | array of array of Match | ||
autrijus | array of array of match. | ||
why two arrays? | |||
two-level, that is | |||
pmichaud | there can be multiple match objects returned | ||
autrijus | ah. right. | ||
pmichaud | for example, rx / (abc)* / returns an array of match objects in $1 | ||
autrijus | yup. | ||
subtle. | |||
so offset starts with -1? | 19:11 | ||
with __init | |||
pmichaud | offset? | 19:12 | |
autrijus | I'm seeing | ||
$P0 = new Integer | |||
$P0 = -1 | |||
setattribute self, $I0, $P0 | |||
oh, that is the "$:to" slot | |||
it means to the end | |||
(I hope) | |||
pmichaud | oh. The ending position is -1, meaning failed match (or not matched yet) | ||
-1 generally indicates a current failure state, -2 means "permanently failed" | 19:13 | ||
those will likely change also, and they're supposed to be internal to PGE anyway | |||
-1 will be failed last expression, -2 failed current alternation, -3 failed current rule, -4 failed match | |||
I may also end up with a different state variable, but thought I'd co-opt $:to for the purpose anyway | 19:14 | ||
autrijus | that's fine | ||
so who gives out the first yield() ? | |||
pmichaud | the subroutine created by p6rule | ||
autrijus | where in code is that? | 19:15 | |
pmichaud | PGE/P6Rule.pir | ||
oh, wrong | |||
wait | |||
scratch that | |||
autrijus | :) | ||
pmichaud | it's in the preamble to the code returned by compiling the expression | ||
PGE::Exp::Start | |||
Juerd | What is PGE written in? | ||
pmichaud | juerd: PIR | ||
jabbot | pugs - 2660 - Limbic_Region++, added comments to examp | ||
Juerd | pmichaud: Oh, wow, so the parrot embedding brings rules dramatically soon? | 19:16 | |
pmichaud | yes | ||
not to mention it finally allows me to start building a parser for p6 | |||
Juerd | Wooh! | ||
pmichaud | since I don't have a Parsec available in Parrot :-) | 19:17 | |
Juerd | pmichaud: Can you put in one sentence how far PGE is? Is it useful for basic regexes yet? | ||
PerlJam | pmichaud: give autrijus a day or so and you will ;-) | ||
pmichaud | juerd: basic regexes, yes | ||
I don't have character classes or cuts yet | |||
or interpolated vars | |||
Juerd | pmichaud: Great - I'll inform the amsterdam people :) | ||
PerlJam | Juerd: when do you stop collecting info and start presenting it? | 19:18 | |
pmichaud | but I have captures, \d \s \w \n \D \S \W \N , etc. | ||
subrules are next on my hit list | |||
once I have subrules I can start writing grammars. In fact, I'm getting ready to use PGE to write the demo program for PGE :) | |||
Limbic_Region | so you do have character classes, just not arbitrary ones right | 19:19 | |
autrijus | aha, _pge_rule_coroutine. | ||
pmichaud | right, I have only some of the \x ones | ||
autrijus | I see a monad! | ||
pmichaud | I don't have <[abcd]> yet | 19:20 | |
autrijus | (but I see monads everywhere. :)) | ||
ingy | I see dead people | ||
pmichaud | <[abcd]> is fourth on my list right now | ||
PerlJam | autrijus: too much haskell for you! Back in the box! | ||
pmichaud | autrijus: yes, _pge_rule_coroutine -- sorry, I probably could've identified it for you if I had been thinking straighter (and not trying to compose an email announcement in another win) | ||
the call to the coroutine itself happens in _pge_rule | 19:21 | ||
the initial invocation sends the target string and a (newly created) match object to house the routine | 19:22 | ||
Juerd | PerlJam: End of the meeting | ||
autrijus | pmichaud: that's fine. please finish composing your mail. this is amazingly cool :) | ||
pmichaud++ | |||
Juerd | PerlJam: I want to give people an impression of the speed of development - the best way to do that is to tell them how much has been done in just the time we were lazily sitting here :) | ||
autrijus | pmichaud++ | ||
Juerd | pmichaud: Thanks for the info | 19:23 | |
pmichaud | juerd: anytime | ||
juerd: literally, anytime . Feb-Mar killed my momentum from last winter -- but as you can tell (and report) the momentum of perl 6 is steadily increasing with each passing hour :) | 19:24 | ||
Limbic_Region | I think I might have just made another convert ;-) | 19:25 | |
PerlJam just wishes he could compile a parrot to play with | 19:26 | ||
perhaps a fresh checkout will help | |||
pmichaud | perljam: try a fresh checkout :) | ||
Limbic_Region can't remember the last time he compiled Parrot but would approximate it as mid December | 19:27 | ||
jhorwitz | autrijus: which parrot dist are you building against? | ||
autrijus | jhorwitz: trunk. | ||
pmichaud | I'm always building against the trunk :) | 19:28 | |
PerlJam | autrijus: what os are you building on? | ||
(please say something other than linux :) | 19:29 | ||
autrijus | PerlJam: freebsd | ||
PerlJam | excellent | ||
ah, I have a parrot! | |||
(a live one even) | 19:30 | ||
pmichaud | email sent | ||
autrijus | pmichaud++ | ||
PerlJam | Every time I've had problems compiling parrot has been something dealing with ICU | ||
jhorwitz | autrijus: pugs tried to link with ICU, but i don't include it in my parrot build. we should probably check in parrot config for ICU libs. | ||
pmichaud | well, there's no more icu :) | ||
jhorwitz | PerlJam++ for reading my mind | ||
autrijus | jhorwitz: please hack away in MAkefile.PL | ||
it's all yours | 19:31 | ||
:) | |||
jhorwitz | autrijus: thanks, i think... ;-) | ||
pmichaud | now let's see how long it takes my message to p6c to actually show up | ||
perl.org seems to want to hold my p6c messages for moderation | |||
which is, well, kinda bizarre :-) | |||
ninereasons | real 104m18.880s # time for an upgrade, obviously | ||
nothingmuch swears his parrot is pushing up the daisies | 19:32 | ||
maybe it will talk to Dan in YAPC too | |||
jhorwitz | so tonight i'll work on ridding the Makefile of ICU and compiling IMC from a buffer. | ||
pmichaud | okay, well, now that that's done I'm going to head home and see if my network connection is back yet | 19:33 | |
autrijus | jhorwitz++ | ||
pmichaud++ | |||
Limbic_Region loves the smell of progress in the morning | |||
pmichaud | exit | ||
oops | |||
somehow irc is not a shell | |||
nothingmuch | someone please make a counter reference | 19:34 | |
l-fy | hello | ||
Shillo | Hullo, folks. | ||
nothingmuch | hello | ||
PerlJam | Limbic_Region: yeah ... it's days like this that make me think that if I went away on vacation for a week, by the time I got back, everyone would be using the new perl6 compiler :-) | ||
l-fy | ok, so perl6 compiler is ready? | ||
nothingmuch | PerlJam: aren't you supposed to have more time for p6 when on vacation? ;-) | 19:35 | |
l-fy | PerlJam > you own me a library for yate in perl 6 :) | ||
PerlJam | l-fy: A perl6 version wouldn't do you much good. | ||
nothingmuch | doesn't anybody here know monty python, like, at all? | ||
PerlJam | nothingmuch: yes, but the references have been done to death. | 19:36 | |
l-fy | PerlJam > is nice as example | ||
nothingmuch wonders how he can feel good about himself without anyone backing him up | |||
PerlJam | l-fy: Are you in a hurry wrt YATE in perl? | ||
nothingmuch | too many google hits for yate | 19:37 | |
l-fy | PerlJam > a lot of people are yelling here :) | ||
PerlJam | nothingmuch: the second one is the relevant one | ||
l-fy | nothingmuch > yate.null.ro | ||
anyway this will also help the adoption of yate | 19:38 | ||
nothingmuch | . o O ( i'm feeling sort of lucky ) | ||
l-fy | sorry | ||
the adoption of perl 6 | |||
PerlJam | l-fy: heh ... I don't think that's going to be a problem | ||
l-fy | well, it may be | ||
autrijus | shapr: yay! oleg grants permission! | 19:41 | |
shapr: CC_2CPST will land to pugs in a few mins. | |||
Shillo is rebootstrapping ghc. Yay, the fun never stops. :) | |||
Shillo would feel better about his new machine if it didn't crash twice so far. Will have to run stress-tests. | |||
nothingmuch | is the Amsterdam.pm meeting done yet? | ||
Juerd | no | 19:43 | |
First talk is still going on | |||
I don't mind - I hope there won't be enough time for me to explain Perl 6 context | |||
Limbic_Region asks the silly question of "WTF is CC_2CPST" ? | |||
boogie | autrijus: have you got my mail about segfault of eval_yaml(undef)? | 19:45 | |
shapr | autrijus: w00! Did he say anything about the second part of his Zipper as tree of subcont? | 19:46 | |
I really want to attempt the insanity involved in viewing a tree shaped mutable datastructure as a tree of SMP-using continuations. | |||
autrijus | boogie: no I didn't | 19:47 | |
boogie: write a test? | |||
shapr: that is a good insanity to have | |||
shapr | But my idea is probably just a simple isomorph of something like Yampa's arrows, O'Haskell's objects or some other independent mutable object flavored critter. | 19:48 | |
boogie | autrijus: Strange. Where should I put this test? | ||
autrijus | boogie: eval_yaml('') | ||
ok(eval_yaml('')) | |||
or something like that. | |||
Limbic_Region | t/unspecced/eval_yaml.t | 19:49 | |
autrijus | Limbic_Region: CC_2PST is something insane. | ||
Limbic_Region | ok | 19:50 | |
boogie | thx, I do it. And what should be the result of it? undef? | ||
Limbic_Region | but t/unspecced/eval_yaml.t is a sane place for boogie's test right | ||
autrijus | yes. | ||
Limbic_Region | ;-) | ||
autrijus | Limbic_Region: it allows for save dump() and restore() :) | ||
dump(), as in perl5's dump(). | |||
and lightweight | |||
and you can dump() only outward to some subroutine | |||
nothingmuch | autrijus: what O(N) complexity? | ||
autrijus | nothingmuch: what what O(N)? | ||
Limbic_Region | ok - so intended to be abused like p5's dump to get a native executable | 19:51 | |
or more for "real" debugging? | |||
nothingmuch | is it optimized with respect to closures? | ||
autrijus | Limbic_Region: it gives you backstepping in debugging. | ||
nothingmuch | or does it do a linear dump of stuff? | ||
or does it do something more complicated? | |||
autrijus | nothingmuch: it's O(1) dump. | ||
:) | |||
that's the beauty of it. | |||
nothingmuch | where can i read on how that's possible? | ||
autrijus | nothingmuch: first read up on delimited continuations | 19:52 | |
"A Monadic Framework for Subcontinuations" and references | |||
and then, read about monadic reflection in www.haskell.org/tmrwiki/FunWithLine...Parameters :) | |||
oh also, for Perl 6 library management: | 19:53 | ||
www.haskell.org/tmrwiki/EternalComp...tyInTheory | |||
I think TMR is a wonderful e-magazine :) | |||
shapr cheers for TMR | |||
Limbic_Region used to work for TMR | |||
autrijus | shapr++ # editor | ||
shapr | autrijus: and we want YOU to write more for TMR! | ||
autrijus | I will! | ||
shapr: btw, src/Pugs/Cont/CC_2CPST is landed | 19:54 | ||
shapr hops excitedly | |||
Limbic_Region | www.tmrhq.com/ | ||
shapr | I would be very interested in TMR articles from other people here who would like to describe the process of learning Haskell from a Perl perspective. | ||
Limbic_Region | shapr - I will be sure to let you know once I venture into Pugs internals | ||
for now I am just porting p5 code to p6 | 19:55 | ||
nothingmuch | shapr: i can write one about hoping to learn | ||
shapr | hoping to learn? | ||
Limbic_Region | a man needs to learn to crawl before he can run | ||
nothingmuch | everyone will be very interested, i'm sure | ||
shapr | Well, send me an article summary! | ||
nothingmuch | then i can write one about failing miserably | ||
in which I will excuse that i lack the tuits | |||
shapr | haha | ||
autrijus | nothingmuch++ | ||
jabbot | pugs - 2661 - * Monadic subcontinuation transformer. | ||
autrijus | rofl | ||
shapr: I think the code is very very heavy wizardry. | 19:56 | ||
it smells like HList. | |||
;) | |||
nothingmuch | that commit message sounds like something out of a cheap sci fi click | ||
s/click/flick/; | |||
shapr | Well, if Oleg wrote it... | ||
Heck, if Oleg found it to be interesting enough to work with... | 19:57 | ||
19:57
khisanth_ is now known as Khisanth
|
|||
nothingmuch | autrijus: did you write larry-esque comments to match? | 19:57 | |
Limbic_Region ducks the decepticons and joins the autobots | |||
autrijus | nothingmuch: no, it's deep inside src/Pugs/Cont/ | ||
I only add poems for src/*.hs and src/Pugs/*.hs | |||
shapr: it's heavier wizardry than SPJ's. | 19:58 | ||
obra ponders tools to autodetect apropriate poetry based on code naming and complexity | |||
autrijus | I can understand SPJ's code with effort :) | ||
Shillo | nothingmuch: I studied math, and when going home from the univ, we'd discuss things like free tensor algebras over p-adic fields on a tram... surrounded by people... who had nowhere to go. Compared to that, monadic subcontinuation transformer is positively benign. :) | ||
nothingmuch | maybe someone wanting to practice parsec can parse comments out of the p5 tree | ||
if they contain /magic|wizard|$etc/i | |||
and randomly insert them | |||
actually i'm used to math jargon | 19:59 | ||
dad is a mathematician | |||
nothingmuch does that too | |||
sadly it's with cable names and how video equipment is broken | |||
not that i get to practice that anymore | |||
Shillo | nothingmuch: *grin* | ||
boogie | I've added eval_yaml test. Can anybody test it? It's my first test from the ground. | ||
nothingmuch | all else is your usual acronyms, which aren't too impressive to people here ;-) | 20:00 | |
shapr | I've never been part of an in-person group of people who had such neat discussions. My first experience meeting FPers in person was ICFP03. I realized that I didn't actually know how to speak a lot of words in my FP vocabulary. | ||
Juerd | What does eval_yaml do? | ||
autrijus | obra: that tool is Coy | ||
Juerd | Return a nested structure? | ||
autrijus | Juerd: yes. | ||
l-fy | microsoft.beplaced.com | 20:01 | |
shapr | Juerd: Lately I wonder if programmeria would actually be a worthwhile idea. If someone like Estonia decided to permanently ban all software patents and give other advantages to programmers, they'd get high-tech immigrants from all over the West. | 20:02 | |
obra | autrijus: heh | ||
Shillo | shapr: My fav was when we were in a tram, watching a totalled car being towed away. A colleague says 'piecewise smooth diffeomorphism'. I nearly died laughing. | ||
boogie | Juerd: reads a YAML file (~XML), and gives the result back | ||
integral | heh | ||
autrijus | obra: you saw the Two Big News? :) | ||
shapr laughs | |||
obra | autrijus: no | ||
autrijus | obra: ok. | ||
1. New PGE is upon us. | |||
2. Pugs now embeds Parrot. | 20:03 | ||
boogie | Juerd: search for YAML on the net | ||
autrijus | taken together they mean: Pugs can natively use PGE. | ||
obra | !!!!!!!!!!!!!!! | ||
Shillo | shapr: Eh. Programmers should found guild-like organisations. Like what doctors and engineers have. | ||
shapr | That's like category theory jokes on #haskell. Sometimes they're so funny I can barely breathe, and there's no one off of #haskell that I can explain them to. | ||
autrijus | and natively run IMC generated from Perl6. | ||
oh and there's 3. | |||
Shillo | autrijus: Holy **** | ||
obra | autrijus: does this mean that pugs can be translated to perl6 function by function? | 20:04 | |
autrijus | 3. Leo and I are looking at Grin. It is believed that Grin can be compiled to Parrot without much effort. | ||
obra | what is Grin? | ||
Shillo | What's Grin? | ||
autrijus | and JHC, the Haskell->Grin compiler, already produces very fast code. | ||
Grin->C is just 300 lines. | |||
shapr | @google grin boquist | ||
obra | oh shiut | ||
obra sees where this goes | |||
autrijus | yes. | ||
a bootstrapping JHC means a haskell code to IMC in IMC. | |||
nothingmuch is not sure he sees where this goes | 20:05 | ||
autrijus | s/code/compiler/ | ||
nothingmuch | ah | ||
autrijus | also, Grin->C produce very small executable with fast code | ||
obra | "embrace and gengineer to create a pug made of perls | ||
autrijus | and more importantly: it has no RTS (linked runtime) | ||
jabbot | pugs - 2662 - eval_yaml | ||
autrijus | so, perfect. | 20:06 | |
shapr | obra: I'm writing a blog entry about that actually... | ||
obra grins | |||
shapr | But I'm making the case that there is just programming, and you can call it whatever you like. | ||
Limbic_Region patiently waits for a "the most productive day in Pugs yet...." journal entry | 20:07 | ||
autrijus | rofl. | 20:08 | |
congrats, you just made to my journal. | 20:09 | ||
shapr | I think I'm going to try to take the same approach with my paying Python work btw. I'm going to embrace and gengineer. | 20:11 | |
Limbic_Region | autrijus - out of curiosity, since I suggested installing the tab extenstions - has "undo close tab" saved your butt yet? | 20:12 | |
autrijus | Limbic_Region: no, not yet | 20:14 | |
pmichaud: hey. the plan is to port PGE to perl6 right? | 20:15 | ||
eventually that is | |||
pmichaud | eventually, probably | ||
autrijus | I think Pugs can run something like PGE now. | ||
pmichaud | the parser could be better written in perl 6 | ||
autrijus | someone wants to try a port? | ||
Shillo | Hmm, while we're on the topic, is GLR compatible with Perl6 rules spec? | ||
pmichaud | I dunno about the code generator though | ||
autrijus | pmichaud: the codegen can gen p6. | 20:16 | |
pmichaud | the code generator might be just as easy in pir | ||
autrijus | I think gen p6 is easy. | ||
Shillo | In other words, are there any requirements on the order-of-evaluation in embedded closures? | ||
pmichaud | I'm not so sure that generating p6 is the best way to go here | ||
it could be | |||
autrijus | oh, if the genned p6 can emit fast-enough imc | 20:17 | |
then that's probably a good idea | |||
iirc, the point of p6 with its type annotations is to gen fast code :) | |||
Shillo | autrijus: Is it possible to generate a readable Perl6? | ||
autrijus | Shillo: sure, why not | ||
Shillo: if you look at PGE's code and PGE's codegen | |||
Shillo | Er, I mean, with less effort then writing it from scratch | ||
autrijus | the IMC it gens is very p6ish | 20:18 | |
Shillo | Hmm, uh, sorry. My mind skipped tracks. | ||
autrijus | compared to, say, p5ish :) | ||
Shillo | I was actually thinking about compiling Haskell into Perl6 for some reason. Buh. | ||
pmichaud | the big difference I can see is that I'd expect a p6 gen to contain Parrot subroutine calls, whereas PGE's gen does bsr/ret | ||
autrijus | pmichaud: bsr/ret has p6 equiv, no? | 20:19 | |
Shillo <-- not at his best, the last 2-3 days. | |||
autrijus | that is, .goto() | ||
&Continuation.goto(), to be precise | |||
pmichaud | umm, isn't a continuation in this case going to be the same as a Parrot continuation? | ||
Shillo | autrijus: Actually, what -is- a subcontinuation? | ||
autrijus | pmichaud: yes. am I misunderstanding what you're using bsr/ret for? | 20:20 | |
Shillo: it is like a continuation, but instead of capturing up until program termination | |||
it captures until a certain delimiter. | |||
Shillo: Pugs uses subconts heavily. | |||
pmichaud | I'm using bsr/ret so that I get very fast subroutine call execution and don't have to do lots of register swaps/saves/restores | ||
autrijus | Shillo: a subroutine call, for example, creates a delimiter, then passes the continuation to the subroutine as &?CALLER_CONTINUATION | 20:21 | |
pmichaud | in parrot, every call to sub(something) generates lots of set instructions that move values from one register to another | ||
autrijus | Shillo: the return() primitive is essentially invoking that continuation and yielding a value. | ||
pmichaud | but since every one of my subroutines has exactly the same arguments and return value, it seems weird to be generating all of those invokes/continuations | 20:22 | |
justatheory | autrijus! | ||
autrijus | Shillo: and error handling is done by invoking the escaping continuation as well. they are guaranteed to stop at the subroutine call boundary at resetT | ||
hey justatheory | |||
justatheory | heya | ||
So, pugs doesn't compile for me. I sent another failure today. | |||
autrijus | justatheory: how? | ||
pmichaud: true. can it be iteratorized or tail called? | |||
justatheory | autrijus: One sec. | ||
autrijus | pmichaud: or, maybe perl6 can contain inline parrot :D | 20:23 | |
pmichaud | it can be tailcalled, but that just helps us on return | ||
well, if p6 has inline parrot then that's basically what I have now -- i.e., we could move the generator into p6 (and that's probably worthwhile) but I think the generated code itself may still need to be pir | |||
justatheory | autrijus: Well, my latest failure for 6.2.2 hasn't shown up yet. | 20:24 | |
But here's the one for 6.2.1: www.nntp.perl.org/group/perl.cpan.testers/200958 | |||
Shillo grrrrrrrs. Aparently a key combo crashes X, intermittently, and I can't find out which. | |||
shapr | Shillo: just log your keys | 20:25 | |
Shillo 's typing is quite noisy. | |||
Involves CTRL-ALT-something_right_handed | |||
jabbot | pugs - 2663 - * fix uninitialized value errors when bu | ||
autrijus | pmichaud: ok. I'm just curious about inline code | ||
integral | CTRL-ALT-BACKSPACE? | ||
Shillo | shapr: I might decide to. Once I track the other source of crashes. | ||
autrijus | pmichaud: that is, embedded p6 code inside rules | 20:26 | |
Shillo | integral: Nope. | ||
integral: That'd be too easy. ;) | |||
integral | ;-) | ||
pmichaud | autrijus: oh, that will be handled as a standard parrot subroutine call. Same with subrules | ||
autrijus | oh. | ||
well then, there's nothing really parrot specific :) | |||
pmichaud | the idea is to use inline parrot for the things that really need to be fast (i.e., matching individual tokens), while the more expensive and harder to optimize things will fall back to standard p6 semantics | ||
autrijus | right. | 20:27 | |
justatheory | autrijus: Hrm, looks like the cpan-testers archive is lagging... | ||
autrijus | it may be worthwhile to identify exactly where p6 can't generate fast code | ||
whilst imc can | |||
Shillo | integral: That combo will stay with me forever. Nothing sets a long term memory like disaster. I pressed CTRL-ALT-BS on a DEC station that had 8 MB of RAM, while it was swapping like crazy. Took the admin a month to recover the HD. :) | ||
autrijus | because that may help p6 into a better language for low level operations | ||
which I'd very much like to see. | |||
pmichaud | well, here's my thinking on this | ||
autrijus | justatheory: select gcc at 3.3? | 20:28 | |
pmichaud | at some point we'll end up optimizing the expression engine to the point where it can parse things faster than the imc parser I've written by hand | ||
autrijus | right. | ||
justatheory | autrijus: Here's the latest: rafb.net/paste/results/iWPHna72.html | ||
That's on Tiger. | |||
pmichaud | at that point, it's worthwhile to rebuild the pge parser in p6 | ||
Limbic_Region | home time | ||
autrijus | justatheory: try #haskell? :-/ | ||
justatheory | autrijus: It uses gcc? | ||
autrijus | justatheory: I think you need gcc3.3 | ||
pmichaud | then we can look at rebuiilding the codegen portion in p6 as well | ||
justatheory | I thought it used ghc | ||
autrijus | see GHC page | 20:29 | |
justatheory: GHC in optimization mode is just a C generator | |||
justatheory | ah | ||
pmichaud | but somehow I think the low-level codegen stuff will remain imc/pir for some time to come | ||
autrijus | pmichaud: okie. | ||
pmichaud | but hey, it'll be easy soon enough to prove me wrong :) | ||
autrijus | :) | ||
pmichaud++ | |||
justatheory goes to eat some lunch... | |||
autrijus | justatheory: but really, try gcc_select :) | 20:30 | |
justatheory | ok | ||
Shillo blushes. Yes, it was CTRL-ALT-BS. | 20:43 | ||
I managed to press it without really realising what I did. Note to self: Don't prepare to do CTRL-ALT-LEFT (switches virtual desktop) while in the middle of backspacing a line. ;) | 20:44 | ||
wilx | lol | 20:48 | |
jhorwitz | autrijus: ping | ||
autrijus | jhorwitz: pong | 20:49 | |
jhorwitz | Makefile.PL changes in r2664 | 20:50 | |
queries parrot directly -- try it out when you get the chance to verify it works. | |||
(and anyone else w/ parrot) | 20:51 | ||
autrijus | k. | ||
justatheory starts make with gcc3.3... | |||
hlen_ | guys, every 20 days or so i've been asking this question.. are the ==> and <== operators coming soon? | ||
autrijus | jhorwitz: | 20:52 | |
ghc-6.4: unrecognised flags: -Wl,-E | |||
Usage: For basic information, try the `--help' option. | |||
hlen_: not as far as I know... you want to take a stab? | |||
hlen_ | autrijus, sorry, no knowledge, and little time | 20:53 | |
autrijus | ah. well. :-/ | ||
jhorwitz: ghc can't take generic GCC flags. | |||
jhorwitz: you need to strip so only -I -L -l are left | 20:54 | ||
jhorwitz | autrijus: got it -- didn't have that problem on my end | ||
autrijus: what flags are you seeing? | 20:55 | ||
autrijus | -Wl,-E | 20:56 | |
jhorwitz | okay then. | 20:57 | |
jhorwitz gets to fixin'... | |||
metaperl_ | which SYNOPSIS shows how strings can have functions interpolated in them | 20:58 | |
pmichaud | functions? You mean which synopsis does interpolation? S02 I think | 20:59 | |
metaperl_ checks S02 again | |||
pmichaud | yeah, S02 | ||
the answer is "use curlies" :-) | |||
PerlJam | metaperl_: It's just "{ foo() }" though | 21:00 | |
pmichaud | in fact, you can search for that :) | ||
hiya, pj | |||
PerlJam | greets pm | ||
metaperl_ | I saw somewhere where it showed all sorts of ways to double quote a string and it had several cases of function interpolation... | 21:01 | |
pmichaud | there's "..." and <<...>> | ||
metaperl_ | under literals in S02 it seems to discuss it | ||
Shillo | Whoa, ghc bootstrap done. Less than 90 minutes! :) | 21:05 | |
autrijus | Shillo: nice | ||
you have a Fast Machine. | |||
Shillo | :)))) | ||
jabbot | pugs - 2664 - * query parrot's configuration for requi | ||
Shillo | It still runs into a wall from time to time. :) | 21:06 | |
Need to debug that and then I'd say I have a l33t g34r :) | |||
justatheory | autrijus: Looks like select_gcc 3.3 did the trick. Running make test... | ||
autrijus | justatheory: cool! | 21:09 | |
wow, 5am. | |||
justatheory | Looks like it's compiling faster than Emacs still, which is good. ;-) | ||
autrijus | a voice somewhere says I should sleep | ||
justatheory | autrijus: You *sleep*? | 21:10 | |
autrijus | I try to. | ||
metaperl_ | you are getting sleeeeeeeeeeeeeeeeeeeeppy. sleeeeepy..... | ||
justatheory | autrijus: You're someone's hero: www.justatheory.com/computers/progr...se.html#tb | 21:11 | |
Shillo | autrijus: What's the time over there? :) | ||
autrijus | 5:10am | ||
so, zzz. | 21:12 | ||
autrijus waves & | 21:13 | ||
Shillo | Oif. Laters. | ||
jabbot | pugs - 2665 - * strip non-GHC flags from imported parr | 21:15 | |
metaperl_ | what special variable in p6 will determine how interpolated array elements are separated? | 21:16 | |
$" is p5... | 21:17 | ||
PerlJam | metaperl_: I don't think there is one. | 21:18 | |
pmichaud | it's not a variable, it's an adverb | ||
metaperl_ | hmm | 21:19 | |
pmichaud | oh, I'm wrong | ||
it's a method on the array | |||
just a sec | |||
PerlJam | @foo.separator(':') ? | ||
lambdabot | Unknown command, try @listcommands. | ||
pmichaud | no, I'm thinking of .as(...) | ||
@array.as('%s', ':') or somesuch | 21:21 | ||
lambdabot | Unknown command, try @listcommands. | ||
PerlJam | I thought Larry said that it's easy enough to do "{@foo.join ':'}" or something | ||
pmichaud | yeah, that's another way | 21:22 | |
wolverian | @foo.join(':') you mean :) | ||
lambdabot | Unknown command, try @listcommands. | ||
wolverian | oh shush | ||
PerlJam | wolverian: indeed. | ||
brentdax | You know something's wrong when you're seriously considering using an Acme:: module in real code. | 21:23 | |
PerlJam | oh, I guess curlies aren't needed then: "These are my @foo.join(':')" | ||
brentdax | (Need to curse an object in a threaded program so it won't run its destructor.) | ||
pmichaud | pj: yeah, the curlies aren't needed there | 21:24 | |
PerlJam | pm: the (potential) long look ahead for brackets to decide whether or not to interpolate is somewhat bothersome though | 21:25 | |
pmichaud | I think it's just one step | ||
oh, you're right, it's not | |||
I'm sure we'll be able to come up with a reasonable rule to cover that case :-) | 21:26 | ||
PerlJam | I think {} are cheap, so why not {@foo} instead of @foo[] for interpolation and lose the $sigil.thingy.that.ends.in('a bracketing construct') entirely? | 21:28 | |
I guess some people have aversion to the shift key and the common case will most likely be @foo[] | 21:29 | ||
pmichaud | because {@foo} and @foo[] produce different results | 21:32 | |
PerlJam | they do? | 21:33 | |
pmichaud | @foo[] puts spaces between elements, {@foo} doesn't | ||
lambdabot | Unknown command, try @listcommands. | ||
pmichaud | I think I read that somewhere | 21:35 | |
PerlJam | That's strange | ||
the results of subroutines are interpolates as if they were arrays | |||
pmichaud | the rsults of bare subroutines are interpolated | 21:36 | |
PerlJam | {} is almost a subroutine :) | ||
pmichaud | it's a closure called in string context | ||
and @array in string context produces all of the elements next to each other | |||
with no separators | |||
PerlJam | oh. yeah, I'm just reading S02 now. | ||
{} gives scalar context | 21:37 | ||
so it would be {*@foo} to replace @foo[] | |||
or {list @foo} | |||
pmichaud | A bare closure also interpolates in double-quotish context. It may not be followed by any dereferencers, since you can always put them inside the closure. The expression inside is evaluated in scalar (string) context. You can force list context on the expression using either the * or list operator if necessary. | 21:39 | |
@foo in string context is the concatenation of its elements | |||
Shillo | Uh, when is string context distinct from scalar context? | 21:41 | |
PerlJam | still ... it'd be nice to know what to do with the thing you're parsing from the beginning rather than having to find the end. | ||
Shillo: string context is a type of scalar context. | |||
wolverian | Shillo: it's distinct even in perl5! | ||
pmichaud | when interpolating inside of a double quoted string, I suspect | ||
wolverian | PerlJam: I agree. {}s are even visually more distinctive. | 21:42 | |
pmichaud | well, one is always welcome to use curlies in their strings :-) | 21:43 | |
wolverian | (and both curlies and brackets need an extra key on this keyboard) | ||
PerlJam | Anyway, it's like sentences in english ... you have to scan ahead to see how to read them sometimes because they may be exclamatory (for instance) but you don't know until you hit the end. If you're reading out loud at the time, they tend to come as emphasizing the last few words rather than the whole sentence. | ||
(where by "emphasizing " I mean either exclaiming or querying) | |||
wolverian | pmichaud: true enough. :) | 21:44 | |
pmichaud | there's lots of languages where you have to wait until the end to get the full meaning of the sentence | ||
PerlJam | I think I'll use @foo[] over {*@foo} given the current syntactic rules :) | ||
pmichaud: sure, but never is it a *feature*. Always a bug. :-) | |||
pmichaud | isn't German the language where the verbs often come at the end? ;-) | 21:45 | |
wolverian | maybe we should just use a sigil that isn't used in e-mail addresses for arrays... | 21:46 | |
PerlJam | wolverian: bzzt! | ||
wolverian | :) | ||
Shillo | Going. Later, all. :) | ||
wolverian | how about :? that's not used much yet. | 21:47 | |
PerlJam | I know! Let's get rid of @ and % and just use $. While we're at it, let's unify arrays and hashes into a single data type. | ||
wolverian | you're funnier. :) | ||
let's get rid of namespaces while we're at it. they just overcomplicate things. | 21:48 | ||
pmichaud | PerlJam: uh... didn't we already do that? | ||
PerlJam | pmichaud: which "we"? I didn't do it. | ||
pmichaud | at least as far as getting rid of @ and %? They aren't required :-) | ||
PerlJam | perl hasn't done it (yet) | ||
wolverian | hmm. true. | ||
forgot that. | |||
PerlJam | pmichaud: so now every php programmer can now write perl as if it were php. I see how Larry is co-opting mindshare now ... :-) | 21:49 | |
wolverian | my @foo is Scalar; # hmm. | ||
pmichaud | pj: this was one of the expressions of dismay at the dfw perl mongers meeting last week :-) | ||
"it looks like PHP!" | |||
wolverian | is & a ref-taker only or is it a sigil as well? | 21:50 | |
PerlJam | "ref-taker"? | ||
wolverian | &foo; # ref to foo | ||
pmichaud | ummm, &foo is a subroutine, yes? | ||
& is the subroutine sigil | 21:51 | ||
wolverian | er. yes. my point is that can I do: my &foo = sub { ... }; | ||
PerlJam | right. | ||
And you can apparently do "&foo()" too ;-) | 21:52 | ||
wolverian | I assume that's a yes then! | ||
PerlJam | wolverian: certainly | ||
wolverian | okay, good. my logic brains aren't up this late. sorry for bothering. and thanks :) | ||
PerlJam | Though I think you really want my &foo := sub { ... } | 21:53 | |
wolverian | why? | ||
PerlJam | And you may want my &foo ::= sub { ... } | ||
wolverian: I believe = makes a copy while := will only alias. | |||
perhaps it's a cheap copy though so it mayn't make a difference | 21:54 | ||
wolverian | I certainly hope anonymous-to-named copies are cheap :) | ||
(and the other kind, but those aren't as common. unless we learn to use := more.) | 21:55 | ||
my $foo = "bar"; # copy? | 22:03 | ||
meppl | perl6 looks like php? | 22:32 | |
he? | |||
pmichaud | one can use $-sigils for almost any variable/datatype | 22:33 | |
meppl | joke? | ||
Khisanth | oooh finally ghc-bin 6.4 | ||
pmichaud | no, I'm serious | ||
$foo = [ 1, 2, 3 ] | |||
$foo[0], $foo[1], $foo[2], etc. | |||
Khisanth | you can drop all the sigils then :) | ||
pmichaud | $foo = hash { a => 0, b => 2, c => 4 } | 22:34 | |
$foo{'a'}, $foo{'b'}, etc. | |||
Khisanth | $foo<a>! | ||
pmichaud | yes, but I was demonstrating that it still looks a lot like PHP :-) | ||
Khisanth | pmichaud: but it's not $foo['0'] :) | ||
pmichaud | er, you mean that $foo['a'] won't work. You're right there, of course -- but still it means someone can be a lot less sigil-bound if desired | 22:35 | |
meppl | php is a young language which adopted syntax-rules from other languages | 22:36 | |
for example "strint1"."string2" | |||
from perl | |||
theorb | meppl, perl did a lot of that too. | 22:37 | |
meppl | yes | ||
theorb | Oh, and I suspect that you can create an ArrayHashMonster datatype fairly easily, though you'll have to decorate your "my"s to use it. | ||
(You can create one in perl5 -- MJD has done so. I wouldn't recommend it, of course.) | 22:38 | ||
ninereasons | pugs M parrot/examples/mops/mops.p6 # op/s: 0.0010911074740861974904528096017457719585 | 22:47 | |
perl parrot/examples/mops/mops.pl # M op/s: 0.602409638554217 | 22:48 | ||
(that is, both are "M op/s:" ) | |||
22:51
[1]metaperl_ is now known as me,
me is now known as metaperler
22:59
[1]metaperl_ is now known as meta_perl
|
|||
pasteling | "revdiablo" at 24.75.156.86 pasted "array references getting flattened?" (3 lines, 62B) at sial.org/pbot/9895 | 23:00 | |
revdiablo | is that wrong, or am I going crazy? :) | ||
wolverian | looks wrong. | 23:01 | |
(check tests.) | |||
revdiablo | should I write a test and put it somewhere? | ||
wolverian | if there isn't one for that, yes. | ||
revdiablo | ok, I'll look to see if there's one already | 23:02 | |
wolverian | t/builtins/arrays/push.t probably | ||
unless it's a more general flattening error | 23:03 | ||
ninereasons | i bet if you write it as \[ 1..5] it will behave as you expected | ||
revdiablo | ninereasons: same thing, gets flattened | 23:04 | |
ninereasons | nope | ||
yep to you, revdiablo | |||
nope to me. | |||
revdiablo | I don't see anything in push.t | ||
perhaps it's something more general? | |||
ah, there's something in t/pugsbugs | 23:05 | ||
flattening_in_map | |||
but this looks like a more general thing | |||
ninereasons | imho it seems like a nice fit to test for it in push.t, though. | 23:06 | |
revdiablo | arrayrefs are getting flattened in any list context? | ||
wolverian | pugs> sub foo (@a) { say @a[1] } foo [1,[2]] | ||
2 | |||
illegal flattening there too | |||
revdiablo | ninereasons: ok, I'll add a test or two in push.t | ||
wolverian | [1,[2]] on its own doesn't flatten | 23:07 | |
looks like it flattens in subcalls | |||
ninereasons | it seems like list contexts generally are a bit flurby and unpredictable | 23:08 | |
wolverian | flurby++ | ||
revdiablo | well, I added to push.t ... if anyone has some suggestions for a more general place, I'll add there too | 23:13 | |
jabbot | pugs - 2666 - tests for nested arrayrefs | 23:15 | |
revdiablo | nested arrayrefs seem to be working in hashes, foo => [ ... ], doesnt cause the flattening | 23:18 | |
wolverian | even when passed to a sub? | 23:20 | |
revdiablo | I didn't try passing to a sub | ||
wolverian | that's where it happens | ||
Juerd | rehi | 23:23 | |
I'm back home | |||
wolverian | welcome back :) | ||
Juerd | Talks on pugs-developments-in-the-past-few-hours and perl 6 context were both received positively | 23:24 | |
theorb | Cool, Juerd. | ||
Juerd | People were very impressed at the speed of development of Pugs | ||
theorb grins. | |||
Not that I had anything to do with it, but it's still nice to bask in reflected glory. | |||
Juerd | "And since when was all this added you said?" | ||
"Since we ordered dinner, 18:15" | 23:25 | ||
revdiablo | wolverian: wait, it's flattening when not in a sub call too | 23:26 | |
except when there's a , in the hash definition list | |||
so 'my %hash = (k => [ qw(1 2 3 4 5) ]); say %hash<k>[2]' vs 'my %hash = (k => [ qw(1 2 3 4 5) ],); say %hash<k>[2]' | 23:27 | ||
Juerd | 3 vs 3? | ||
revdiablo | I'm getting undef in the first case | 23:28 | |
Juerd | (RHS of %hash = is in list context already) | ||
revdiablo: That's a bug, I think. | |||
revdiablo | I know what it *should* be :) | ||
wolverian | me too. | ||
(r2646) | |||
revdiablo | Juerd: yeah, there's some weird flattening going on | ||
Juerd | flattening of what? | 23:29 | |
revdiablo | the arrayref | ||
Juerd | That would be weird indeed. | ||
revdiablo | $ pugs -e 'my %hash = (k => [ qw(1 2 3 4 5) ]); say %hash<4>' | ||
5 | |||
wolverian | hmm. %hash<k>[0] in the first case is set to 0 | ||
it should be an arrayref, I think | 23:30 | ||
revdiablo | well, the tests I added in push.t exercise this, so maybe that's enough | ||
ninereasons | This all looks so familiar. an unfixed fix, unless I'm misremembering | 23:31 | |
Juerd | revdiablo: What does %hash = (key => want) result in? | 23:32 | |
theorb | The pair constructor gives scalar context to both sides, or should, leastways. | 23:34 | |
Juerd | Yes, it should | ||
revdiablo | $ pugs -e 'my %hash = (foo => want); say %hash<foo>' | ||
Scalar (Any) | |||
wolverian | weird. | 23:35 | |
pugs> my %h = (k => [want]); say %h<k>, ", ", %h<k>[0] | 23:36 | ||
List (Any), List (Any) | |||
revdiablo | yeah, it does this weird subscript collapsing thing too | ||
$ pugs -e 'my @a = 1 .. 5; say @a[0][0][0]' | 23:37 | ||
1 | |||
ninereasons | my %hash_k = (k => [ qw(1 2 3 4 5)]) | ||
say %hash_k.perl | |||
\(\('2', '3'), \('4', '5'), \('k', '1')) | |||
my %hash_j = (j => [ qw(1 2 3 4 5)], ) | 23:38 | ||
say %hash_j.perl | |||
\(\('j', ('1', '2', '3', '4', '5'))) | |||
wolverian | haha, what?! | ||
theorb | Hmm, seems like [] is behaving like () should. | ||
wolverian | that is broken. | ||
revdiablo | I wonder if that comma works with push too | 23:39 | |
nope | |||
:) | |||
theorb | Tests! | 23:40 | |
revdiablo | is that you volunteering? :) | 23:41 | |
theorb | No. | ||
I'm trying to get a working copy of jhc. | |||
23:41
Odin_ is now known as Odin-LAP
|
|||
revdiablo | I already put a test in push.t that demonstrates the improper flattening | 23:42 | |
ninereasons | does the Grin thing mean that we might be moving away from ghc, to jhc ? or, what does it mean? | ||
theorb | It's possible. | ||
jhc is currently quite incomplete. | 23:43 | ||
However, it's a better platform to build a haskell->perl compiler on, and thus obtain self-hosing. | |||
ninereasons | pugs seems to be genetically attracted to the edges of worlds | ||
theorb | Yup. | 23:44 | |
Odin-LAP | That fits, doesn't it? | ||
theorb | Fun, isn't it? | ||
Odin-LAP | Perl6 is kinda on the edge of language design... | 23:45 | |
theorb | s/on/over/ | ||
ninereasons | yes, it is fun. but very hard to keep up with (and still be productive in the real world) | ||
theorb | There's a real world? | ||
Odin-LAP | theorb: Hmm. Dunno. The jury's out regarding Lisp vs. P6. ;p | ||
ninereasons | don't make me doubt it .. i'm barely hanging on theorb | 23:46 | |
:-) | |||
Odin-LAP | 'real world'? That thing with all the depressing stuff and other people and suchlike? | ||
You mean people actually *want* to stay there? | |||
shapr | They do serve food. | 23:47 | |
ninereasons | mm spaghetti | ||
theorb is hoping that he'll be able to survive interaction with real people on thursday. | 23:48 | ||
(Visiting London.) | |||
ninereasons | mm figgy pudding | ||
theorb | At least they speak English (of a sort). | ||
Odin-LAP | shapr: That's overrated. | ||
theorb | Odin-LAP: They also serve beer, and more potent libations. | 23:49 | |
Jonathan__ | Mmmm...beer. :) Time for sleep, night all. | ||
Odin-LAP | theorb: Meh. I live in a country where there's an alcohol monopoly, and it's illegal to obtain alcohol under twenty. When that's the 'real world' I think I prefer the virtual one. ;) | 23:50 | |
theorb | Where do you live, Odin? | 23:51 | |
Odin-LAP | Iceland. | ||
ninereasons | cool. | ||
Odin-LAP | Indeed. | 23:52 | |
The temperature very rarely reaches 17°C. ;) | |||
... in the peak of the summer, that is. | |||
theorb | Icy, one might even say... | ||
ninereasons | I love the geysers. | 23:53 | |
Odin-LAP advises not going too close. | 23:54 | ||
ninereasons | hmm news to me: this page (www.wyojones.com/how_geysers_got_their_names.htm ) says that Great Geysir is mostly dormant. | 23:56 | |
people-damaged. very sad. | 23:57 | ||
Odin-LAP | Hm. People-damaged? | 23:58 | |
Any specifics given? | |||
ninereasons | soap, rocks and other things. | ||
tossed in to try to stimulate an eruption. | |||
Odin-LAP | I don't think anyone knows the exact reason it stopped. | 23:59 |