|
Pugs t-shirts www.cafepress.com/pugscode | Pugs 6.2.9 released | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | www.geeksunite.net Set by stevan on 15 August 2005. |
|||
|
00:00
xinming1983 is now known as xinming_BeiJing
|
|||
| stevan | luqui: re: graffle | 00:02 | |
| no I think you can use a limited eval version | |||
| I bought it because I use it for work all the time | |||
| nothingmuch | mega luqui++ for fmap redux | 00:10 | |
| and mega luqui++ for theories | |||
| luqui | Arrr, thank ye | 00:11 | |
| P-) | |||
| nothingmuch | Sep 19th is over here =) | 00:12 | |
| xinming_BeiJing | Hi,all, Now I am in Laptop... Really happy for getting the first Laptop in my life. | 00:13 | |
| luqui | not here | 00:14 | |
| another six hours to go | |||
| xinming_BeiJing | hmm, Why doesn't pugs be updated these days please? | ||
| luqui | xinming_BeiJing: hmm? | ||
| xinming_BeiJing | It seems it's being lasting quite for 2 days... | ||
| luqui scampers off to gander TaPL | 00:15 | ||
| stevan | luqui: more theories stuff? where? | 00:16 | |
| re: TaPL | |||
| I am still trying to grasp Church Numerals fully,.. that is some really really really cool stuff | |||
| luqui | use.perl | 00:17 | |
| oh, what? | |||
| yeah, functions isomorphic to numbers is pretty sweet | |||
| stevan | I mean I "get" it, but my mind see it as being too simple to be true | ||
| luqui wrote increment/decrement/addition of church numerals in haskell | |||
| and they worked | |||
| (wikipedia's definition of subtraction is wrong though) | 00:18 | ||
| stevan | I was gonna write them in perl :) | ||
| luqui | er, multiplications | ||
| haskell is a bit cleaner in that domain, but have at it | |||
| see the lambda_calculus.p6 that was recently checked in | |||
| anyway, re: theory stuff | |||
| a role is a single-parameter theory that obeys a certain property | 00:19 | ||
| stevan | yes I saw that,.. I wanted to expand it with examples from TaPL | ||
| svnbot6 | r7043 | putter++ | PIL-Run - fixed p6_to_a(), and \@INC. A simple replacement Test.pm is again used for make test and smoke, as the real one currently fails with Perl6-Container/Perl6-Value errors (eg, is(1,1,'x') doesn't work). | ||
| luqui | aa soo | ||
| stevan | luqui: is there a way to do to the "next method" in C::MM::Pure? | 00:22 | |
| luqui | er, no | ||
| luqui wonders how he would implement that | |||
| luqui wonders what the exact semantics are | |||
| stevan wonders how luqui will too | |||
| luqui | stevan, what exact semantics would be useful to you? | ||
| nothingmuch | before i nod off i'd like to raise my hat to stevan & luqui for making perl6 much more beautiful on the inside | ||
| stevan | next METHOD in multiple dispatch context is supposed to first try the next most appliable mulit-method | ||
| nothingmuch: thanks :) | |||
| luqui smiles bigly | 00:23 | ||
| thanks | |||
| stevan | nothingmuch: are you saying we are ugly on the outside? | ||
| nothingmuch | nope | ||
| perl 6 was very much a handwavy fog on the inside | |||
| stevan | oh,.. that changed? | ||
| nothingmuch | but WRT the metamodel, and theories, and type inferrence, and all that, I think we are making amazing progress | ||
| towards a language that is designed to be much more balanced than anything else | 00:24 | ||
| while reaching for both ends of the spectrum | |||
| strong typing and dynamic typing | |||
| stevan blushes | |||
| nothingmuch | a good metamodel | ||
| good functional support | |||
| sound definitions of internals | |||
| (sound == elegant + practical) | |||
| these things are slowly mounting, and they aren't going away | 00:25 | ||
| and I think that you two are responsible for a lot of it... so thanks =) | |||
| luqui | :-D | ||
| and to return the complement, I think I'd like to see nothingmuch in charge of a virtual machine someday | 00:26 | ||
| way cool ideas | |||
| stevan | here here | ||
| I second that | |||
| nothingmuch | neh | 00:27 | |
| my current obsession with the compilation process is just a manifestation of another love | |||
| it'll go away soon | |||
| what I really like is to see a good plan come together from end to end | |||
| stevan | of course it would be side gig from his real career as a porn star | ||
| luqui | haha | ||
| nothingmuch | and high level things that are useful and go all the way down to actually working is what is making me interested in VMs | ||
| and yes, there's that | 00:28 | ||
| then I'll go into politics | |||
| luqui | is there any other path? | ||
| nothingmuch | or start a wikipedia of my own | ||
| stevan | nothingmuch for president!!!!! | ||
| nothingmuch | (see also bomis.com) | ||
| stevan | oh wait,.. we alreayd have that here | ||
| luqui | stevan: lol | ||
| stevan praises local again,.. but this time with symbol tables :) | 00:29 | ||
| nothingmuch | en.wikipedia.org/wiki/Bomis | ||
| luqui | stevan, you'll be cursing local soon, when it refuses to let you do it to lexicals | ||
| nothingmuch | luqui: aye, that always depressed me about local =/ | ||
| stevan | luqui: I only need it to rebind global | ||
| s | 00:30 | ||
| nothingmuch | as local is really scope of execution and my/our is scope of definition, which is why perl6's attitude towards these things is so much better | ||
| stevan | $?SELF, $?CLASS, $?ROLE, $?PACKAGE and now "next METHOD" | ||
| I was previously keeping my own stack,.. which was wasteful | |||
| I actually got the local rebinding idea from CLOS | 00:32 | ||
| luqui 's battery is going | |||
| my mind is going | |||
| stevan | part of the 'apply-method' function calls a 'add-function-bindings' which makes lexical binding for method execution | ||
| luqui | my mind is going | ||
| stevan | its a very cool approach, so I was happy to see it work in perl too | 00:33 | |
| gantrixx | anyone here living in arizona? | 00:47 | |
| svnbot6 | r7044 | stevan++ | Perl6::MetaModel 2.0 - | 00:49 | |
| r7044 | stevan++ | * adding new example test (classic OO shapes) | |||
| r7044 | stevan++ | * making next_METHOD rebound for each dispatch, making it specific to | |||
| r7044 | stevan++ | it's execution context, this removed the need for manual mangement | |||
| stevan is amazed at how useful local and lvalue subs have proven to be in the metamodel | 01:03 | ||
| I have never found a good for use for them before this :) | |||
| svnbot6 | r7045 | stevan++ | Perl6::MetaModel 2.0 - | 01:07 | |
| r7045 | stevan++ | * changing opaque_instance_attrs($) into opaque_instance_attr($$) so that it will | |||
| r7045 | stevan++ | fetch the label for you, making the opaque instance structure further opaque and | |||
| r7045 | stevan++ | making way for some cool things with Roles (more on that later) | |||
| r7046 | putter++ | PIL/Run/PrimX.pm: a couple of new primitives, a bit of cleanup. | 01:19 | ||
| r7047 | putter++ | perl5/PIL-Run/lib6/Test.pm: more Test subs. And :todo is now tolerated (but doesn't actually work), which unfortunately required... | 04:02 | ||
| r7047 | putter++ | perl5/Perl6-Value/lib/Perl6/Code.pm: short-circuited check_params(). It now always returns 1. This is a work-around hack to let simple Test almost work, despite sub f(*%h){};f() currently failing. | |||
| r7048 | gaal++ | fatal.pm in Prelude. Exposes a bug in %*INC not being checked | 04:20 | ||
| r7048 | gaal++ | correctly before 'use'. It's interesting to see whether this | |||
| r7048 | gaal++ | module works correctly (once lexical pragmas do) since it does | |||
| r7048 | gaal++ | things that need to work in different calling contexts. | |||
| gaal | bug report: "pugs" on win32 doesn't work, because that OS doesn't have unix's automatic interpreted binary mechanism. | 05:08 | |
| svnbot6 | r7049 | putter++ | perl5/PIL-Run/lib6/P5Runtime/PrimP6.pm: statement_control:for now works with blocks of both arity 1 and 2. But not > 2 (for no good reason). | ||
| Detonite | Good morning... | 05:29 | |
| dduncan | good evening | 05:33 | |
| Detonite | ?eval 5 | 05:37 | |
| evalbot_7049 | 5 | ||
| revdiablo | ?eval 5**5 | 05:40 | |
| evalbot_7049 | 3125 | ||
| nothingmuch | morning | 05:44 | |
| Detonite | Morning | ||
| ?eval ? | 05:52 | ||
| evalbot_7049 | Error: unexpected end of input expecting term | ||
| putter | status report: perl5 backend PIL-Run: the current bottleneck is Perl6-Value and Perl6-Container. Repair of Code.pm's support for slurpy array arguments is perhaps the most pressing. But there is a lot which is not working. PIL-Run's current role is to exercise metamodel and Perl6-Value/Container objects. MM1 is working fine for now. But the objects need work. Fyi. | 05:53 | |
| a recent pilrun smoke was 41%. if the test :todo's could be slurped and "# TODO"'ed, it would be over 50%. | 05:58 | ||
| good night & | 05:59 | ||
| svnbot6 | r7050 | Darren_Duncan++ | /ext/Locale-KeyedText : merge in the latest changes made to the Perl 5 version | 06:32 | |
| r7051 | putter++ | perl5/PIL-Run/lib6/Test.pm: Now handles :todo's. A temporary kludge - when argument passing works better, this will break. And can then be replaced. (ie, use slurpy hash parameters, which currently don't exist/work) | 06:38 | ||
| r7052 | putter++ | PIL-Run - Removed obsolete TODO. Created README with usage hints. | 07:21 | ||
| Detonite welcomes evalbot_7052 | |||
| nothingmuch | 8192 would be nice | 07:22 | |
| it's a big number | |||
| webmind- | and a round number | 07:23 | |
| Detonite | Aye, quite round. | ||
| svnbot6 | r7053 | putter++ | PIL-Run - Added graphs() and codes(). string/length.t now mostly passes. | 08:15 | |
| r7054 | putter++ | PIL/Run/EvalX.pm: improved temp() | 09:27 | ||
| nothingmuch | holy crap | 09:34 | |
| i have C | |||
| GeJ | nothingmuch: you have C? is it that bad? C is less fun than Perl6 for sure, but it's not _that_ bad, is it? | 09:36 | |
| nothingmuch | i mean Blondie is compiling to C | ||
| GeJ | sounds sweet... | 09:37 | |
| nothingmuch | shyte | ||
| i can't Inline::C it though | |||
| since my types conflict with it | |||
| nothingmuch does some yucky search and replace | 09:39 | ||
| WOOT! | 09:40 | ||
| ods15 | ..... | ||
| nothingmuch | IT FUCKING WORKS! IT REALLY REALLY WORKS | ||
| ods15 | if it's C, KEEP IT FRIGGIN C | ||
| C is good | |||
| GeJ | I think he means "IT'S ALIVE! ALIIIIIIIIIIIVE!!!!" | 09:41 | |
| Detonite_ claps | |||
| ods15 | bleh | ||
| ods15 bleh's at all | |||
| GeJ | nm++ | ||
| pasteling | "nothingmuch" at 212.143.92.226 pasted "say(42) in C" (32 lines, 742B) at sial.org/pbot/13215 | ||
| ods15 | most of this channel seems to like perl6 more than C :/ | ||
| nothingmuch | ods15: duh | 09:42 | |
| C is a headache | |||
| ods15 | C is friggin awesom | ||
| nothingmuch | you shouldn't write in C, you should compile to it ;-) | ||
| ods15 | typedef int IV; typedef FILE * GV; typedef char * PV; | ||
| wtf??? | |||
| Detonite_ | Feh. Pure binary is the only truth. | ||
| nothingmuch | ods15: quick hack to match to Cification of perl values | ||
| in perl an IV is an SV that represents an integer | 09:43 | ||
| it's really a struct | |||
| since I'm doing static typing, i'm just using a real int instead | |||
| PV is pointer to string | |||
| GV is filehandle | |||
| ods15 | Detonite_: i've done a bit of that actually | ||
| nothingmuch | you keep "wtf???"ing at stuff like we're idiot | ||
| s | 09:44 | ||
| ods15 | it was quite fun | ||
| nothingmuch: no, it just means wtf | |||
| nothingmuch | well, instead of saying "what the fuck" as if it's insane, you can say "please explain" | ||
| ods15 | anyway, lol, that's some hilarious C code :) | ||
| nothingmuch | why is it hilarious? | ||
| ods15 | the "leaks" :) | ||
| nothingmuch | fuck it, i'm not doing garbage collection | 09:45 | |
| ods15 | also, sizeof(char) is just funny :) | ||
| nothingmuch | ods15: you program C and yyou think that's funny? | ||
| you are aware that char is not always 8 bits, right? | |||
| ods15 | rofl, no, it IS, unless you're doing f'ed up typedefs/defines | 09:46 | |
| nothingmuch | ods15: no, it ISN'T | 09:47 | |
| ods15 | it is garunteed by C standard that char is always 8 bits | ||
| nothingmuch | no, that's what it's guaranteed as the usable space | ||
| it may be aligned to anything else | |||
| QtPlatypus | nothingmuch: Can't you use a poblically accessable garbage collector. | ||
| nothingmuch | in crays it's 256 values, but takes up 64 bits | ||
| since crays can only address by memory words and not bytes | |||
| QtPlatypus: i don't know of any, i'm not a C coder | 09:48 | ||
| w | |||
| QtPlatypus | publically. | ||
| nothingmuch | e.g. www.hpl.hp.com/personal/Hans_Boehm/gc/ ? | 09:49 | |
| QtPlatypus | Exactly | ||
| pjcj | as I recall sizeof(char) is defined as 1 in the C standard | 09:51 | |
| nothingmuch | pjcj: even WRT allocation? | 09:52 | |
| well, whatever... the compiler will optimize that away | |||
| i was always told never to hard code magic numbers anyway | |||
| my well behaved alter ego, which was telling me that all along, kicks in when coding in unfamiliar territories | 09:53 | ||
| pjcj | well, the sizeof a struct may not equal the sum of the sizeof its members, but sizeof(char) will always be 1 | 09:54 | |
| clkao | peskky padding | 10:13 | |
| pjcj | pwd | 10:17 | |
| bah | |||
| ods15 | 12:47:23 <@ods15> ahem, sizeof(char) is ALWAYS 1, right? | 10:45 | |
| 12:51:22 <@dalias> yes | |||
| 12:52:12 <@iive> ods15, no | |||
| 12:52:16 <@iive> it is at least 1 | |||
| 12:52:24 <@dalias> iive, stfu and rtfm | |||
| 12:52:30 <@dalias> sizeof(char) is 1 by definition | |||
| 12:52:50 <@dalias> read the c standard or c.l.c faq if you don't believe me | |||
| pjcj: yup | |||
| and struct padding is a totally different thing | 10:46 | ||
| pjcj | of course, that doesn't mean 1 char is necessarily exactly 8 bits ... | 11:02 | |
| nothingmuch | me leaves sizeof(char) | 11:31 | |
| don't feel like editing the file, because it really doesn't matter, and it helps me focus to see hints like that =) | |||
| it allows me to reduce mental stack overflows when reading code i'm not 100% comfortable with | 11:32 | ||
| oh god... not another bug in setup | 11:33 | ||
| =( | |||
| nothingmuch does not like maintaining code which is other people's fault | |||
| i'm not sure whether I want to minimize my interaction with the code, and fix things trivially, or whether I should actually work to improve it's robustness | |||
| so that I get less bugs in the future | |||
| pjcj | the maintenance programmer's dilemma | 11:35 | |
| QtPlatypus | nothingmuch: I suggest unit tests to solve that problem. | 12:01 | |
| nothingmuch | QtPlatypus: this is absolutely not unit testable | ||
| QtPlatypus | THen you can you do robustness work without fear of introducing more bugs. | 12:02 | |
| nothingmuch | just refactoring it from one giant heap into code that can actually be called by unit tests is going to take me forever | ||
| and the reason I don't want to do robustness work is because I don't want to waste time ;-) | |||
| the code parts (Qt UI, configuration management, wizardly behavior, installation logic, and probing) are about as coupled as it gets | 12:03 | ||
| it's about 6000 lines | |||
| QtPlatypus | Ouch | ||
| nothingmuch | i think 3000 or so are dead | ||
| it's filled with #ifdefs in places like parameter arguments | |||
| e.g. | |||
| int do_this ( foo param, | 12:04 | ||
| #ifdef SOMEDDEF | |||
| bar another, | |||
| #endif | |||
| ); | |||
| and then the calls to do_this also look like that | |||
| it's OOP, but doesn't really know it | |||
| GeJ | ugly... :( | ||
| nothingmuch | things that should be instance data are passed around as parameters | ||
| even the naming thing is all bad | |||
| Config::setConfig or something like that does the full installation ;-) | 12:05 | ||
| and since block comments for non working features are pretty much 50% of the code, it's completely unreadable too | |||
| i resorted to using doxygen's function call graphs, so that could actually understand which code happens when and what parts of it are relevant | 12:06 | ||
| as I see it the code base has no value. I could reimplement all the features with Verby in about 2-3 days | |||
| then I can learn perl's Qt bindings and write a GUI in about 2 weeks | |||
| or I could port Verby to C++ in slightly less, and then do Qt in C++ for another 2 weeks or so | |||
| but i don't want to, it's not important enough | 12:07 | ||
| nothingmuch wwraps up his brain for the 40th time today | 12:19 | ||
| kolibrie | ?eval $pattern = rx /(5)/; say '123456789'.split($pattern).join(', '); | 12:40 | |
| evalbot_7054 | Error: Undeclared variable: "$pattern" | ||
| kolibrie | ?eval my $pattern = rx /(5)/; say | ||
| evalbot_7054 | bool::true | ||
| kolibrie | ?eval my $pattern = rx /(5)/; say '123456789'.split($pattern).join(', '); | 12:41 | |
| evalbot_7054 | 1234, 5, 6789 bool::true | ||
| kolibrie | ?eval my $pattern = rx /5/; say '123456789'.split($pattern).join(', '); | ||
| evalbot_7055 | 1234, 6789 bool::true | ||
| kolibrie | ?eval my $pattern = rx /5/; say '123456789'.split(rx /($pattern)/).join(', '); | 12:42 | |
| evalbot_7055 | 123456789 bool::true | ||
| nothingmuch | kolibrie: this behavior has changed in P6, i think | ||
| see S04 | |||
| kolibrie | so how do I capture? | 12:43 | |
| nothingmuch | captures are the same | ||
| it's pattern interpolation that changed | |||
| ?eval /5/ | |||
| evalbot_7055 | Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode) | ||
| nothingmuch | ?eval rx/5/ | ||
| evalbot_7055 | {rule} | ||
| nothingmuch | ?eval ~ rx/5/ | ||
| evalbot_7055 | '<Pugs::Internals::VRule>' | ||
| nothingmuch | i think your pattern is trying to match that string inside 123456789 | ||
| s05, not s04... sorry | 12:44 | ||
| kolibrie | so if I have a non-capturing rule | ||
| how do I pass it to split in such a way that it is captured? | |||
| nothingmuch | dev.perl.org/perl6/doc/design/syn/S...erpolation | 12:45 | |
| ?eval my $pattern = rx /5/; say '123456789'.split(rx /(<$pattern>)/).join(', '); | 12:46 | ||
| evalbot_7055 | *** Cannot parse PGE: :w::(<$pattern>) *** Error: PGE Parse error: invalid subrule name at offset 6 (found <<$>>) 123456789 bool::true | ||
| svnbot6 | r7055 | nothingmuch++ | Blondie: | ||
| r7055 | nothingmuch++ | - minimal compilation to C | |||
| r7055 | nothingmuch++ | - no symbolic unification of duplicate nodes (necessary for recursion) | |||
| r7055 | nothingmuch++ | - type safety issues need to be resolved for further progress | |||
| nothingmuch | =) | ||
| scook0 | nothingmuch++ # asynchronous list-forcing | ||
| nothingmuch | i think that's how it'll work, but it's obviously not there yet | ||
| scook0 | I was going to reply to your thread, but didn't get around to it... :( | 12:47 | |
| nothingmuch would like feedback, so do get around to it | |||
| ==) | |||
| thanks | |||
| scook0 | just to point out that all you need is &async_force, and everything else can be considered a shorthand for that | ||
| nothingmuch | ah... ofcourse =) | 12:48 | |
| scook0 | but I can see gather:async being clearer in many cases | ||
| kolibrie | nothingmuch: that could be the syntax, S05 skips that example | ||
| nothingmuch | kolibrie: around the middle of "Extensible meta syntax" | 12:49 | |
| A leading $ indicates an indirect rule. The variable must contain either a hard reference to a rule, or a string containing the rule. | |||
| kolibrie | ah yes, that makes sense now | ||
| nothingmuch | ingy: ping | ||
| kolibrie | so, can that be fixed in pugs, or is that a pge thing? | 12:50 | |
| nothingmuch | i think pge doesn't support it yet, and after that'll make it in it's pge/pugs integration | ||
| nothingmuch finally finished doing this: search.cpan.org/~ingy/Inline-0.44/C...#Evaling_C | |||
| nothingmuch proudly claims to have "totally lost my marbles" | 12:51 | ||
|
13:17
ods15_ is now known as ods15
|
|||
| Limbic_Region | I just did a make clean, svn up, perl Makefile.PL, make, pugs -V for the first time in oh, about a month - anyone know why it says r6656? | 14:02 | |
| PerlJam | Limbic_Region: I just did the same thing and I got r7055 | 14:04 | |
| Limbic_Region | this is odd then cause when I svn up I am at the proper rev level | 14:06 | |
| *shrug* | |||
| PerlJam | perhaps you need to make clean or something | 14:07 | |
| scook0 | Limbic_Region: simple things: did you check that the build succeeded, and that you're running the right binary? | ||
| Limbic_Region | see step 1 in my list above PerlJam | ||
| scook0 - yep and yep | |||
| not a big deal - just wanted to play around with some higher order p5 code in p6 and see how much/little it changed | 14:08 | ||
| PerlJam | Limbic_Region: maybe you need to "make realclean" or "make distclean" or whatever the bleachy version of clean is. | ||
| Khisanth | realdistclean! :P | 14:09 | |
| Limbic_Region | well - considering this box only has 256MB of ram and I can't even use all of it - I will wait until tonight to have another go at it | ||
| so has anyone been building any new/exciting projects with Pugs lately? | 14:11 | ||
| Limbic_Region hasn't checked the examples directory since the whole ?? :: --> ?? !! change | |||
| Khisanth | EH?! | 14:13 | |
| Khisanth goes to check summary | |||
| Limbic_Region | you mean you weren't aware of the the ?? :: to ?? !! change? | 14:14 | |
| that wasn't in this week's summary but the previous | |||
| which I believe was for 3 weeks | |||
| IIRC | |||
| Khisanth | hey autrijus is on perl.com :) | ||
| Limbic_Region | yeah - that article is a couple weeks old too | 14:15 | |
| they apparently didn't post a new article as typically done on Thursday evenings | |||
| Khisanth | I haven't checked perl.com in a while so it's new to me! | 14:18 | |
| odd are posts in google groups newest > oldest from top to bottom? | 14:20 | ||
| Limbic_Region checks more regularly now that he has gotten paid for writing an article published on perl.com | |||
| dunno - I let gmail do that for me | |||
| Limbic_Region wanders off to a doctor's appt | 14:32 | ||
| nothingmuch | any news from autrijus? | 16:04 | |
| i have a problem | 16:45 | ||
| this problem happens from time to time | |||
| if ($condition) { pre }; | |||
| unconditional middle; | |||
| if ($condition) { post } | 16:46 | ||
| i hate repeating conditional tests | |||
| i hate repeating unconditional middle | |||
| (even if it's just a single call) | |||
| e.g. if ($condition) { pre; $self->foo; post } else { $self->foo } | |||
| can anyone think of a solution? | 16:47 | ||
| higher order functions are ofcourse an option: | |||
| my $uncond = sub { $self->foo }; | |||
| optional_wrapper($condition, sub { pre }, $uncond, sub { post }); | 16:48 | ||
| this can be beautified with prototypes, but it's still rather clunky | |||
| method mk_symbol ($node) { | 17:03 | ||
| state %allocated will autotovivify { | 17:04 | ||
| my $type = $node.struct_equiv.type; | |||
| ods15 | nothingmuch: bah, there's not much you can do about "split" conditional | ||
| not much to do about it :/ | |||
| nothingmuch | join("_", $type, ++%.counters{$type}); | 17:05 | |
| } | |||
| ods15 | i hate it too | ||
| nothingmuch | $allocated{$node}; | ||
| } | |||
| ods15: there's not much. you can do right now | |||
| but conceptually the logic flow is intuitive: | |||
| pair up some code blocks | 17:06 | ||
| and attach them to the same conditional | |||
| ods15 | ? | ||
| nothingmuch | i'm asking for new syntax ideas | ||
| something prettier than: | |||
| my $cond = <test>; | |||
| if $cond { pre } | |||
| mid | |||
| if $cond { post } | |||
| ods15 | if the conditional is intense i sometimes use a condition variable with a nive name :) | ||
| nice* name | 17:07 | ||
| nothingmuch | that's not splitting it up | ||
| here is an idea: | |||
| label: if ($condition) { pre } | |||
| mid | |||
| label: { post } | |||
| where label is the same | 17:08 | ||
| it's much more "static" than making a new variable | |||
| ods15 | i dont like it | ||
| Aankhen`` | if ($condition) { pre; PAUSE { middle; }; post; } | ||
| Seems strange when I write it out. | |||
| nothingmuch | Aankhen``: what I don't like about that is cuddling | ||
| Aankhen`` | Basically, I'm thinking of "pausing" the condition. | ||
| nothingmuch | the nested block is under the if () { } | ||
| so it's unintuitive to read it | |||
| Aankhen`` | Yeah, I know, I don't like it either; just throwing out ideas./ | 17:09 | |
| nothingmuch | but I wanted something like that | ||
| hmm | |||
| Aankhen`` | s|/|| | ||
| nothingmuch | maybe just like if else: | ||
| ods15 | nothingmuch: find some other kind of parenthesis and reverse direction it | ||
| nothingmuch | if ($cond) { | ||
| } pause { | |||
| mid | |||
| } cont { | |||
| } | |||
| if ($condition) { | |||
| } always { | |||
| ods15 | anyway, i say give it up | ||
| nothingmuch | } conditional { | ||
| } | |||
| ods15: what do those comments help | |||
| Aankhen`` | Hmm. | ||
| nothingmuch | if you have critique, share it | 17:10 | |
| ods15 | this feature accomplishes nothing imo, it's not more readable | ||
| nothingmuch | but there's no need to pessimize pointlessly | ||
| Aankhen`` | if ($condition) { ... } but always({ ... }) | ||
| Ahh, that reads better than it functions. :-P | |||
| ods15 | arno, because you need it in the middle | ||
| nothingmuch | Aankhen``: i'm reminded of while (...) { } contineu { } | ||
| ods15 | heh | ||
| nothingmuch | s/eu/ue/ | ||
| ods15 | nothingmuch: well, the flaws are obvious :/ i'm thinking of solutions right now, and coming up empty | 17:11 | |
| Aankhen`` | Me too, but it seems a little complicated. | ||
| (the if, always, conditional) | |||
| nothingmuch | ods15: so please avoid pointless bashing | ||
| Aankhen`` | `if ($condition) { ... } pause { ... } resume { ... }` might make more sense there, BTW. | ||
| nothingmuch | hmm, i like that | ||
| Aankhen`` | Just a little lengthy... | 17:12 | |
| nothingmuch | i think we need to s/pause/$thesaurus.lookup("always").pick/; | ||
| Aankhen`` | Indeed. | ||
| ods15 | "default" heh no | 17:13 | |
| Aankhen`` | All of them are very lengthy... | ||
| nothingmuch | thesaurus.reference.com/search?q=unconditional | ||
| ods15 | i'm thinking switch statement :) | ||
| nothingmuch | ods15: we have that too, but it doesn't apply | ||
| lack of break in C can only move it downwards | |||
| unless you add a goto or something | |||
| ods15 | i wish switch supported this | ||
| Aankhen`` | Heh, "surely"... | 17:14 | |
| ods15 | switch { case a: a_code; case b: b_code; case c: c_code; default: common code; } | ||
| nothingmuch | i think maybe 'uncond' instead of always/pause | ||
| ods15 | as in, each runs for it's case, and one that runs for several cases :/ | ||
| lol, "dead" | |||
| Aankhen`` | ods15: given ($foo) { when 1 { ... }; when 2 { ... }; when 3 { ... }; common_code(); } | 17:15 | |
| That's the Perl 6 version, IIRC. | |||
| ods15 | Aankhen``: not wquit'e though | ||
| quite* | |||
| i want even more | |||
| nothingmuch | ods15: when in perl 6 is pretty cool | ||
| read in s04 it hink | |||
| ods15 | switch { case a: a_code; case b: b_code; case c: c_code; abc_code; break; e_code: d_code: not_abc; } | ||
| nothingmuch | it's actually much simpler than it looks | 17:16 | |
| ods15 | get what i meant | ||
| Aankhen`` | ods15: Yes; too lazy to figure it out in P6 right now though. | ||
| nothingmuch: "uncond".chars == "always".chars | |||
| ods15 | the 'common' code i can just put outside the switch if it was really common :) | ||
| nothingmuch | Aankhen``: so you want it shorter? | 17:17 | |
| Aankhen`` | nothingmuch: Yes. | ||
| nothingmuch | hmm | ||
| Aankhen`` | I keep thinking of "yet". | ||
| nothingmuch | errm | ||
| let's chuck this at p6l | |||
| Aankhen`` | if ($cond) { ... } yet { ... } resume { ... } | ||
| Mmm, TBH, it's not something which I'm dead set on. I can do without it. I'm just trying to give you suggestions. :-) | |||
| nothingmuch | fairy nuff | 17:18 | |
| Aankhen`` | Then again, if you do p6l it, I'll back you up: it should be fun. =) | ||
| The most natural -- though sadly lengthy -- syntax would be: if ($cond) { ... } regardless { ... } again { ... } | 17:20 | ||
| s/again/conditionally/ | |||
| nothingmuch | thesaurus.reference.com/search?q=regardless | ||
| Aankhen`` | Hehe... if ($cond) { ... } anyhow { ... } but_conditionally { ... } | 17:21 | |
| "but" is already taken, sadly. | |||
| It's the only candidate. The others are too lengthy. | 17:22 | ||
| nothingmuch | i don't like 'but' for this... it's too general | ||
| i don't mind long either... else and elsif are about as long as 'uncond' | |||
| Aankhen`` | I'm not suggesting we use it, just lamenting the unfortunate state of affairs. | ||
| nothingmuch | not to mention 'else if' which i really would prefer over 'elsif' | ||
| i find typing the extra chars easier than remembering an arbitrary contraction | 17:23 | ||
| Aankhen`` | Dude, I don't mind long stuff either, but if we propose this, I'm quite certain people will keep a beady eye on the length. | ||
| nothingmuch | phooey for them | ||
| we'll see what happens ;-) | |||
| Aankhen`` | Heh. | ||
| Then `uncond` seems to be a good choice. | 17:24 | ||
| if ($cond) { ... } uncond { ... } resume { ... } | |||
| nothingmuch | i don't like resume... here's why: | ||
| uncond always happens | |||
| if () { ... } happens 50% of the time, you would guess | 17:25 | ||
| so it seems to mee like resume is continuing the uncond for no appearant reason | |||
| Aankhen`` | Hmm, I see. | ||
| nothingmuch | recond sucks ;-) | 17:26 | |
| Aankhen`` | I was thinking of in terms of this: `uncond` "suspends the conditionality of the following statements", whereas `resume` resumes the "conditionality". | ||
| nothingmuch | is there a word for predicated maybe? | ||
| yes, that makes sense, but from an execution perspective, not so much a linguistic one, i think | |||
| Aankhen`` | Yeah, you're right. | ||
| nothingmuch | but let's use that for now | 17:27 | |
| Aankhen`` | What about `conditionally`, since length isn't a factor? | ||
| nothingmuch | that's too much | ||
| ;-) | |||
| Aankhen`` | Or, wait... just `cond`? | ||
| nothingmuch | yes, let's use that | ||
| Aankhen`` | if ($cond) { may_happen(); } uncond { always_happens(); } cond { may_happen_too(); } | 17:28 | |
| Yay. Only 8 hours to go for the first season of Beast Wars to finish downloading. | 17:32 | ||
| nothingmuch tries hard to finish the next big step in C compilation tonight | 17:33 | ||
| Aankhen`` | C compilation? | ||
| nothingmuch | Blondie compiles to C | 17:34 | |
| Aankhen`` | Blondie? | ||
| nothingmuch | ah | ||
| Aankhen`` | Sorry, I appear to be out of the loop. | ||
| nothingmuch | Blondie is an intermediate language AST | ||
| Aankhen`` | I see. | ||
| dduncan | is there a Dagwood module to go with it? | 17:35 | |
| Aankhen`` wanders off to play Condition Zero. | 17:37 | ||
| Oh great, powercut. BBL. | 17:39 | ||
| Aankhen`` hugs his UPS. | |||
| nothingmuch | that i'm playing around with | 17:40 | |
| which is supposed to be a preview of the Perl 6 compilation pipeline | |||
| so far it has a perl backend and a C backend that successfully share a prelude | |||
| and simply replace the parts of the prelude that is easiest for them to replace | |||
| bah, cable modem died | |||
| it has type inferrencing | |||
| which is optional for the perl runtime, but required for C compilation | |||
| (compilation goes down to bare metal types - no boxing whatsoever) | |||
| dduncan: que es dagwood? | 17:41 | ||
| gaal: ?! | 17:46 | ||
| gaal | aloha! | ||
| the army proves its stupidity yet again! | 17:47 | ||
| they canceled the mission i was called for, but somebody forgot to send out notices | |||
| nothingmuch | heh | ||
| gaal | so, that was a day wasted | 17:48 | |
| now you know where your tax shekels are going | |||
| ooh, c! | 17:49 | ||
| what be "prel", nm? | 17:50 | ||
| nothingmuch | builtin prelude replacement | ||
| perhaps it should be s/prel/builtin/ | 17:51 | ||
| gaal | "native"? | ||
| nothingmuch | svn.openfoundry.org/pugs/perl5/Blon...uiltins.pm | ||
| sub prelude { | |||
| gaal | anyway, i need a nice long bath | ||
| or like the brits say when speaking of Jane Austen's favorite town, baaaaaath | 17:52 | ||
| nothingmuch | heh | ||
| gaal | very nice to see you :-) | ||
| but, later | |||
| nothingmuch | oops | 17:57 | |
| ciao | |||
| dduncan | nothingmuch, there is a well known newspaper comic strip called 'Dagwood', which is about a couple whose names are 'Dagwood' and 'Blondie' | 18:21 | |
| it sounded like you were naming your module after the wife | 18:22 | ||
| nothingmuch | oh | ||
| nop | |||
| e | |||
| dduncan | so I wondered if there was one named after the husband too | ||
| nothingmuch | abraxxa in #catalyst brought it up | ||
| i asked for a name for a dumb intermediate language | |||
| i thought of calling it DIL | |||
| dduncan | how about Dunce? | ||
| nothingmuch | too late | 18:23 | |
| but that is acctually a pretty nice name | |||
| too bad I didn't ask you earlier ;-) | |||
| dduncan | now, I haven't RTFM yet, but what is Blondie to be used for ... or is it just a fun project? | 18:24 | |
| nothingmuch | it's an experiment | ||
| i'm trying out the compilation scheme I raised to p6l with a smaller language | |||
| i'm trying to write multiple backends that reuse as much code as possible | |||
| dduncan | that's all I need to know | ||
| nothingmuch | but without limiting the possibility of optimizing any backend given enough time | ||
| PerlJam | nothingmuch: do you know of the book entitled Blondie24 ? | 18:58 | |
| gaal | say, if I want to debug-print all Envs defined, can I? this probably is a nonsensical question from the pov of a pure language, but... | 19:28 | |
| Aankhen`` goes to sleep. | 19:35 | ||
| G'night. | 19:36 | ||
| svnbot6 | r7056 | putter++ | PIL-Run - Create Code's less often (more correctly). Minor other tweaks. | 19:51 | |
| kolibrie | gaal: that's an Haskell question? # about Envs | 20:02 | |
|
20:37
whiteg_ is now known as whiteg
|
|||
| gaal | kolibrie, yes: a pugs internals question, as i'm trying to debug a misplaced write to an env. | 21:22 | |
| svnbot6 | r7057 | putter++ | PIL-Run - Create Code's somewhat more often (more correctly;). | 23:04 | |
| geoffb waves | 23:35 | ||
| Hi everyone | |||
| geoffb has been buried in stabilizing his new system | |||
| What's been going on of late? STATUS and docs/journal are both about a week old . . . . | 23:36 | ||
| rafl, ping | 23:38 | ||
| rafl | geoffb: pong | ||
| geoffb | I'm finally taking the time to learn how to use packages.qa.debian.org, because I want to know how long until pugs is in testing . . . but I'm not sure how to tell when something like gmp (needed for ghc6) will go in. | 23:40 | |
| When a package will break a whole bunch of packages (I assume for version dependencies), but lots of packages depend on it, what happens? | |||
| Logjam? | |||
| And from the perspective of a user, what's most likely to get me 'apt-get build-dep pugs' within the next few days? Will just waiting do it, or do I need to a test/unstable hybrid? | 23:42 | ||
| rafl | geoffb: afaik they need to be recompiled for the latest gmp version. If that's done they go in all at once. | 23:43 | |
| geoffb figures it's about time he became a good Debian citizen after all these years . . . starting with testing packages I need, I guess. | |||
| rafl, so it's just an automated thing? Or do the maintainers of all of those packages need to individually change their dependencies and reupload? | 23:44 | ||
| rafl | geoffb: The maintainers need to upload a new version that get's recompiled against the right version. Or somethimes other people do an NMU (non-maintainer-upload), as it happened for ghc6's gmp transition. | 23:45 | |
| geoffb | rafl, OK, that sounds like the answer to my previous question is "Dependency forest is too thick -- probably need to go with a hybrid install" | 23:47 | |
| rafl | geoffb: Installing gmp/pugs from sid into etch isn't a big problem. gmp isn't in etch yet because there are some problems on alpha. | 23:48 | |
| Nothing that concerns you on i386, powerpc or whatever you're using. | |||
| geoffb | Oh, there really are alpha problems -- I had read the little thing that said "alpha gets blamed for everything because it's the first arch in the list", and I assumed that applied. | 23:49 | |
| i386, FWIW. | |||
| If I go with a hybrid setup, how do I avoid wanting to install one package that happens to have a lot of dependencies, and finding myself suddenly with hundreds of sid packages? | 23:51 | ||
| rafl | You could pin to the etch release or only install the packages you want from sid by hand via dpkg (as I do) | 23:57 | |
| (for those machines that don't run sid, most of my boxes are unstable) | |||