|
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. |
|||
| kolbsoft | hello | 00:02 | |
| is this channel active? | 00:04 | ||
| QtPlatypus | Mostly not | 00:08 | |
| stevan | autrijus: ping | 05:45 | |
| obra | stevan: you're on planetsix.perlfoundation.org now | 05:50 | |
| stevan | obra: I am? | 05:52 | |
| what part of me? | |||
| obra | autrijus said you had a journal relevant to perl6 ;) | 05:53 | |
| stevan | ah,.. | ||
| hmmm, this means I need to do some more journalling then :) | |||
| obra | :) | ||
| stevan | thanks :) | ||
| obra | If you know of any other willing victims, tell me :) | 05:55 | |
| stevan | geoffb wrote some stuff on Perl 6 in his OReilly blog,.. but I am not sure how willing he is,.. and how relevant it will always be | 05:56 | |
| other than that, most of the "journaling" takes place in the commit logs | 05:57 | ||
| obra | *nod* and part of the problem is that commits are too noisy to get aggregated directly | ||
| wolverian | Juerd++ # irssi on feather | 08:14 | |
| svnbot6 | r7251 | autrijus++ | * Be a bit more win32-friendly and suggest "perl smokeserv-client.pl" | 08:16 | |
| r7251 | autrijus++ | instead of "./util/smokeserv/smokeserv-client.pl" | |||
| r7252 | autrijus++ | * Heffalump pointed out that type synonyms can be overapplied, | |||
| r7252 | autrijus++ | so we don't need the "Eval" vs "EvalMonad" split. | |||
| wolverian | argh, why does solaris have to be so WEIRD | 08:33 | |
| Alias_ | hi hi | 08:44 | |
| A question: What does $foo mean in Perl 6. That is, is the twigil implicit? | 08:45 | ||
| autrijus | greetings | ||
| $foo carries no twigil; twigil is not mandatory. | |||
| Alias_ | So all this talk of twigils is only really "when you care"? | ||
| So mostly 1% stuff? | |||
| autrijus | in OO code, was was written as | 08:46 | |
| $self->{foo} | |||
| will now be written as $.foo | |||
| which is a common case | |||
| Alias_ | I meant more the other stuff... globals vs lexical vs compile-time etc etc... all the weird ones | ||
| for a simple scalar | |||
| (or whatever it was) | 08:47 | ||
| $?FOO etc? | |||
| gaal | ?eval $?PUGS_VERSION | ||
| evalbot_7252 | \'Perl6 User\'s Golfing System, version 6.2.9, August 3, 2005 (r7252)' | ||
| gaal | those are magicals, mostly. | ||
| ? means compile time | |||
| Alias_ | OK, so answer my question again :) | 08:48 | |
| gaal | * means (global) runtime, for example %*ENV | ||
| Alias_ | You CAN create and use your own right? | ||
| gaal | ?eval $*always = "yes"; class Other; $*always | ||
| evalbot_7252 | \'yes' | ||
| Alias_ | I'm presuming you can create and use a compile-time variable of you own and then it errors at run-time if you try to modify it... | 08:49 | |
| autrijus | see quickref :) | ||
| Alias_ | And that will be happening in a haskelly lots of magically optimising way? | ||
| currying etc | |||
| So you can do platform detection and alternative path handling or what have you at compile time, and it will be nice and fast at run-time? | 08:50 | ||
| autrijus | thing though is that compile time and runtime may on different machines | ||
| Alias_ | define vary | ||
| I would assume if you "compile" the program, it will no longer work on other types of platforms? | |||
| in the same was as you compile C? | 08:51 | ||
| Or does compile mean to compile to intermediate language | |||
| gaal | we have a virtual machine :) | ||
| Alias_ | gaal: Oh really? Does it implement Path::Spec->updir? | ||
| (or the functional equivalent) | |||
| or catdir etc? | 08:52 | ||
| or File::HomeDir? | |||
| kgftr|konobi | Class::Path++ | ||
| gaal | we have a virtual machine that doesn't have all the functionality the underlying OS might have | ||
| so if you need those things, indeed you'll have a dependency. | |||
| Alias_ | Right, so having a virtual machine is not relevant to platform-level compilation issues | ||
| except at the most basic level | |||
| gaal | if you want them resolved at compile time, which you might in fact not want exactly because of these issues? | 08:53 | |
| Alias_ | gaal: Well, it's all going to depend what compile means | 08:54 | |
| gaal | i doubt optimization matters much if you're doing IO | ||
| (i mean that level of optimization) | |||
| Alias_ | A lot of the code in platform-specific places is a lot slower that it could be because it's got EBCIC and mac and whatever special cases all though it | ||
| I'm wondering if the explicit compile-ness and haskelisation of things is going to mean that stuff finally gets compiled out at compile-time | |||
| It's also memory... | 08:55 | ||
| all that code that hangs around because of a condition that will never be true | 08:56 | ||
| gaal | autrijus: feature suggestion for the openfoundry web interface: when viewing a revision, a link to the diff with the previous revision. who do i suggest this to? :) | 08:57 | |
| Alias_: you can put what you like in BEGIN and it'll be resolved then.. but of course that's a payoff against compatibility. | |||
| Alias_ | True, but so far we don't actually DEFINE BEGIN | 08:58 | |
| gaal | we don't? | ||
| Alias_ | I had hoped with all this extra focus, Perl 6 would somehow we defining it better | ||
| autrijus | gaal: it's SVK::Web | ||
| so, patch to clkao on cpan | |||
| gaal | autrijus: thanks | ||
| Alias_ | In Perl 5, it means for this machine | ||
| gaal: When is it defined as happening for Perl 6 | 08:59 | ||
| What types of optimisations should I or should I not have in it? | |||
| gaal | Alias_: on p5 it's "for this machine" because there's no separate compilation | ||
| Alias_ | EXACTLY! | ||
| And for Perl ^? | |||
| perl 6? How does it deal with that | 09:00 | ||
| wolverian | don't the AES specify this? | ||
| Alias_ | Does it mean I have to make BEGIN have no platform stuff any more? | ||
| gaal | "this machine and others sufficiently like it that you won't have platform issues, and we hope you know what you're doing", i think. | ||
| Alias_ | Is Perl 6 going to thus be less optimised | ||
| define "sufficiently like it" | |||
| is it specifiable? is it testable? | 09:01 | ||
| gaal | i don't think it's sufficiently defined, because parrot hasn't been fully specced yet. practicallty speaking, compatibility might look like it does in p5 | ||
| Alias_ | I doubt that very very much | 09:02 | |
| gaal | with the bonus of being able to stipulate parrot. | ||
| Alias_ | I already can't assume which other modules are loaded it would appear | ||
| So C< if ( loaded(goodmodule) ) { goodmodule->doitright } else { cludgyway() } > is out in Perl 6 | 09:03 | ||
| s/good/optional/ | |||
| gaal | i don't understand | ||
| Alias_ | You can't do anything about %INC or @INC or %ENV | ||
| broquaint | Sure you can. | 09:04 | |
| Alias_ | Because on different machines, that might not be true | ||
| broquaint | It'll be fine. | ||
| Alias_ | Using $ENV{HOME} in a BEGIN will be fine? | ||
| broquaint | Sure, why not? | ||
| Alias_ | because $ENV{HOME} will be different on a different machine | ||
| hell, it will be different on the same machine | 09:05 | ||
| broquaint | Assuming you've compiled the compile-time section. | ||
| Which you shouldn't do if you're doing things like that. | |||
| Alias_ | Well, if it's not true, then you can't ever compile | ||
| broquaint | Kinda kills the purpose of optimization, huh? | ||
| Alias_ | Because you can't trust everyone elses code | ||
| yes | 09:06 | ||
| broquaint | How do magical languages like C++ and so forth do it? | ||
| Alias_ | Once you compile them, you don't move them from the same environment | ||
| IFDEF etc | |||
| broquaint | Some kind of spooky maaaggiiiiic! | ||
| Alias_ | It's well defined what you can optimise at IFDEF time and what you can't | ||
| gaal | what did you mean by "can't assume which other modules are loaded"? | ||
| broquaint | So the distribution of programs over the internet is entirely in my head? | 09:07 | |
| Alias_ | broquaint: It's well defined what you CAN optimize at IFDEF time and what you CAN'T | ||
| And what "compile-time" means | |||
| broquaint | Sure, so you don't do things in BEGIN that you shouldn't, just like C/C++/etc developers don't do things in #ifdefs they shouldn't. | 09:08 | |
| It's no big deal. | |||
| Alias_ | sure. Now define "shouldn't" | ||
| or define what those $things are | |||
| "You'll know when they break" being NOT an answer I want | |||
| broquaint | I don't need to. They're entirely arbitrary. But we can't worry about what silly things people *might* do. | ||
| gaal | Alias_: is the kind of answer to that question that Java provides a good one for you? | ||
| Alias_ | broquaint: define silly | 09:09 | |
| qwr | #ifdef is purely preprocessing the code before compiling | ||
| Alias_ | I have ZERO guidelines as to what I can do and can't do | ||
| broquaint | Yes. | ||
| Alias_ | (so far as I can tell) | ||
| broquaint | Correct. | ||
| Alias_ | So lacking anything I CAN do, the answer is do nothing | 09:10 | |
| wiping out the usefulness to me of compile-time optimisation | |||
| broquaint | You can do anything, whether you should or not is up to you. | ||
| Alias_ | So we should remove BEGIN | ||
| broquaint | It doesn't wipe it out, does it? Because it works in other compiled languages. | ||
| gaal | .oO(Skeptics have been known to breath.) |
||
| autrijus | Alias_: this is really not at all different from perl5 with perlcc -- although granted, nobody uses perlcc for real | ||
| Alias_ | broquaint: They get to assume seperated compile-run, and so they tell you what you can and can't do | 09:11 | |
| Name anything I can reliably do in BEGIN now... | |||
| broquaint | Anything that won't fit inside a monad. | ||
| autrijus | Alias_: sure, like, defining constants. | ||
| including subroutines and classes :) | |||
| Alias_ | use constant ON_WIN32 => ...; | ||
| well, except those | |||
| you mean dumb constants of course, but anyways | 09:12 | ||
| autrijus | if you mean INIT, write INIT :) | ||
| it's that simple. | |||
| broquaint | I would've thought compile-time could be compile-once (for optimizing) and compile-everywhere-once (for dynamical-type optimization). | ||
| Alias_ | So can I do haskellisation at INIT-time? | ||
| currying etc... | |||
| get rid of code for other platforms? | 09:13 | ||
| autrijus | sure! | ||
| Alias_ | And module existance only matters at INIT time? | ||
| broquaint writes some perl6 to get rid of kernel32.dll | |||
| autrijus | Alias_: at INIT time, the interfaces are linked and symbol table populated, but as this is a dynamic language, you can still tweak all bindings to your heart's content. | 09:14 | |
| Alias_ | err... symbol table populate? | ||
| as in modules loaded? | |||
| broquaint | What's the default mainspace? Is it still main::? | ||
| autrijus | broquaint: "default"? the main program is Main, yes. | ||
| Alias_: "use" modules are loaded, yes. | 09:15 | ||
| broquaint | Thanks, autrijus :) | ||
| Alias_ | how on earth does that work... | ||
| That would mean you can't compile a module once and use it with other programs? | |||
| let me put it better... | 09:16 | ||
| if ( on_win32 ) { sub foo { use Win32::Module; ... } } else { sub foo { ... } } | |||
| How does that happen | |||
| broquaint | That looks just like ... like ... like ... perl5! | 09:17 | |
| Alias_ | that's only pseudocode | ||
| joao | hello | ||
| broquaint | I'm still not seeing the problem here. | ||
| Alias_ | now on unix, Win32:: won't be installed | ||
| broquaint | Hello, joao. | ||
| Alias_ | So are there init-time variables? | 09:18 | |
| autrijus | Alias_: you want dynamic, not static, loading for that. | ||
| Alias_ | but all the modules are loaded already you said | ||
| autrijus | all the "use" modules. | ||
| static ones. | |||
| Alias_ points to the use module | |||
| granted, at the moment to implement this I use evals | 09:19 | ||
| autrijus | I don't think it works in perl5 | ||
| so I'm not sure why it should work in perl6. | |||
| Alias_ | sure it does | ||
| broquaint | Or hopefully require/use will get smarter. | ||
| Alias_ | It works just fine in perl 5 | ||
| autrijus | perl -e "if (0) { use ADS }" | ||
| Can't locate ADS.pm in @INC... | |||
| broquaint | It oughtn't work just fine in perl5. | 09:20 | |
| autrijus | please define the 'just fine' here. | ||
| Alias_ | You can turn that pseudo-code into Perl 5 | ||
| joao is definitely sleeping: "rm -rf abc *" IS NOT "rm -rf abc*" | |||
| gaal | ow ow ow | ||
| autrijus | how? | ||
| Alias_ | if (0) { eval "use Win32::Module; ..." } | ||
| autrijus | er that is valid perl6, for sure. | 09:21 | |
| it even works in pugs. | |||
| Alias_ | I was hoping for something less cludgy | ||
| autrijus | you can also use INIT { if (on_win32) { require Win32::Module } else { require Unix::Module } } | ||
| Alias_ | well, what I wanted more was something like INIT { if (on_unix) { sub path($) { $_[0] } } else { sub path($) { File::Spec->cat( File::Spec::Unix->split($_[0]) ) } } | 09:22 | |
| autrijus | you can indeed write that. | ||
| Alias_ | err... | ||
| In Perl 5 the prototypes are missing at compile time, and thus things die badly | 09:23 | ||
| In Perl 6... | |||
| broquaint | Welcome to the wonderful new world of Perl 6! | ||
| autrijus | Alias_: okay. so in sum | ||
| you'd like the interface to persist | 09:24 | ||
| and checked at compile time | |||
| but the implementation code needs to be swapped out at INIT time. | |||
| we can do that. | |||
| Alias_ | but have platform optimisation happen at INIT time | ||
| yes | |||
| It's a big problem now, and nobody realises it | |||
| autrijus | basically you can write forward decl | ||
| Alias_ | Chewing up a non-trivial amount of CPU and memory | 09:25 | |
| autrijus | sub path (Str $path) { ... } | ||
| the "..." is literal | |||
| Alias_ | right | ||
| autrijus | and then at INIT | ||
| load one of the many backends and swap &path | |||
| into something concrete. | |||
| so the compiler will check interface for $path just fine | |||
| I mean &path | |||
| and at runtime, if &path is not swapped in | 09:26 | ||
| then it will die | |||
| ?eval sub path { ... }; path() | |||
| evalbot_7252 | *** ... - not yet implemented at <eval> line 1, column 12-16 | ||
| Alias_ | at call-time or end-of-init time | ||
| autrijus | at call time, as currently specified. | ||
| as you can swap in implementation at runtime | |||
| not endofinit time | |||
| nothingmuch | morning | 09:27 | |
| Alias_ | ok | ||
| but you'd have to do it at module level though | |||
| every platform factor is going to mean different modules? | 09:28 | ||
| say I just want a single line in a loop somewhere... | |||
| autrijus | if you want to compile into platform independence, yes. | ||
| Alias_ | next if on_mac; | ||
| there's lots of that stuff around and about | 09:29 | ||
| nothingmuch | hmm? | ||
| why should that die? | |||
| Alias_ | So the answer then if "only to the degree that Perl 5 can" | ||
| is | |||
| nothingmuch | Windows can implement that as { false } | ||
| Alias_ | nothingmuch: That line should be just optimized out at init-time | 09:30 | |
| nothingmuch | err, what does it matter? | ||
| the moment we have a constant it can be constant folded | |||
| it doesn't matter when | |||
| the linker ought to invoke optimizers once there is enough info | 09:31 | ||
| Alias_ | You can define a constant at INIT-time that is refered to in code at compile-time? | ||
| nothingmuch | yes... the moment it's defined it can be used | ||
| Alias_ | define used | ||
| nothingmuch | but if your runtime is linker oriented - the INIT block will emit a compiled linkable unit | ||
| that exports a symbol | 09:32 | ||
| which binds to the unresolved symbol in the "main" code | |||
| Alias_ | you just went into language-implementor language... which I don't know | ||
| nothingmuch | and after this link operation the call chain will be reoptimized | ||
| well, these are language implementor issues =) | |||
| think of the output of every .pm file as a library | |||
| BEGIN, INIT, etc also emit tiny libraries | 09:33 | ||
| that are just compiled elsewhere | |||
| as does eval | |||
| Alias_ | Not really. I'm asking if I can optimise platform-specific things out in a more sophisticated way than at the module level | ||
| I just want to know if it can be done, and what Perl 6 code I'd have to write | |||
| nothingmuch | you would just have to use constants | ||
| and constant folding will get around to it | 09:34 | ||
| Alias_ | constants that are defined at INIT time? | ||
| but used in code normally | |||
| nothingmuch | or you would have to swap in complete functions for every runtime | ||
| Alias_ | ? | ||
| nothingmuch | yes, that too | ||
| since INIT time will introduce new symbols those symbols will be used to resolve unresolved symbols in the main code. the moment they are resolved they can be optimized | |||
| Alias_ | so... INIT { constant UNIX = (test for unix) ? 1 : 0 } sub path { if ( UNIX ) { simple } else { complex } }; will work? | 09:35 | |
| nothingmuch | yes, but it's silly | ||
| just say sub path { } | |||
| Alias_ | no it isn't | ||
| nothingmuch | and define a path for UNIX | ||
| and a path for Windows | |||
| and a path for ... | |||
| there will be hooks for this kind of behavior | |||
| because (AFAICT) that's how we are going to implement any level of portability (e.g. parrot vs javascript) | 09:36 | ||
| Alias_ | now imagine I have a do_this { 17 statements here; if ( Unix ) { 1 extra }; 3 statements; unless ( Max ) { ... } ; etc } | ||
| nothingmuch | for that it isn't silly | ||
| Alias_ | this sort of stuff exists all over the place today | ||
| It's very normal | |||
| It means not having to do 38 different versions with nearly identical code | |||
| nothingmuch | right, all i'm saying is that we may have better tools in the future | 09:37 | |
| right | |||
| the issue is how identical is the code | |||
| if it's not, don't use if | |||
| Alias_ | So will Perl 6 allow that level of thing to be optimised out | ||
| nothingmuch | if it is, use if | ||
| yes | |||
| Alias_ | and that if can be compiled out at INIT time | ||
| ? | |||
| nothingmuch | but keep in mind that sometimes someone on unix needs to use File::Spec::Win32 | ||
| yes | |||
| Alias_ | for code that already exists | ||
| nothingmuch | yes | ||
| not now | 09:38 | ||
| probably not even soon | |||
| Alias_ | Before 1.0? | ||
| nothingmuch | but that's what i'm trying to learn how to do in Blondie | ||
| i don't know when 1.0 will arrive | |||
| Alias_ | So it's vapourware? | ||
| (that optimisation) | |||
| nothingmuch | you can think of it as vaporware | ||
| i'm working on the beginings of enabling these kinds of things by prototyping a simler compiler framework | 09:39 | ||
| Alias_ | Well, "yes it will do it, eventually, when we work out how, because we don't know how yet" is vapourware | ||
| nothingmuch | once we have learned from that thing, we can implement it | ||
| so yes, it's vaporware | |||
| but it's under early development | |||
| and we do know how | |||
| Alias_ | So when I say "Will Perl 6 allow this" the answer is "we'd like it to" | ||
| nothingmuch | or at least i think we do | 09:40 | |
| no | |||
| because the answer might be "it damn well do it, or it will suck" | |||
| in which case that is just optimized into "yes" | |||
| broquaint | There will have to be some level of approximation if Perl5->Perl6 is going to work. | ||
| Alias_ | so "maybe"? | ||
| Because as of now it doesn't seem to be a simple "yes" | |||
| nothingmuch | Alias_: err. whatever | 09:41 | |
| Alias_ | sigh | ||
| nothingmuch | if you're not going to help out at least don't judge | ||
| sigh yourself | |||
| i gave you all the information i can | |||
| you can interpret it without trying to humiliate me | |||
| Alias_ | "Will you pay me back this money if I lend it to you". "yes. well, it's a more complicated thing that will possibly optimise out to 'yes'" | ||
| I just want an unqualified straight answer | 09:42 | ||
| nothingmuch | broquaint: as for the perl 5 runtime - constant folding can be a benefit, but most optimizations probably won't be relevant, unless it's compiled to C/XS | ||
| Alias_: you never lent me any money | |||
| i owe you nothing | |||
| i'm being friendly | |||
| and i get antagonism | |||
| what do you expect? | |||
| Alias_ | nothingmuch: Because you could never say if you'd pay it back :) | ||
| "yes", "no" or "maybe" or "we'd like to" or "probably not" | |||
| nothingmuch | you asked "will" | 09:43 | |
| not "does" | |||
| autrijus | Alias_: I think dead code elimination during INIT time is viable, but likely to be runtime dependent. parrot does have facility for it | ||
| nothingmuch | "does" is no | ||
| will is yes | |||
| because we won't let it not work, and it's a simple thing to do as long as things are organized enough | |||
| Alias_ | probably not even soon | ||
| i don't know when 1.0 will arrive | |||
| nothingmuch | will predicates no time frame | ||
| Alias_ | I probably implied "possibly not before release" out of that | ||
| nothingmuch | 1.0 will probably come after simp[le optimizations | ||
| and this is a simple optimization | 09:44 | ||
| dead code elmineation at link time is a basic idea | |||
| it applies to code almost everywhere | |||
| the reason perl 5 doesn't have it is that all it's linkage is adhoc (*{ $sym } = ... ) | |||
| Alias_ | So the answer is a clear "yes" | ||
| nothingmuch | yes | ||
| Alias_ | or rather, "yes, before 1.0" | 09:45 | |
| ok | |||
| nothingmuch | i don't get to decide when 1.0 comes, but it better be fast enough or everyone will think perl 6 sucks | ||
| in fact, by 1.0 i hope even the optimizer is optimized. | |||
| Alias_ | That was unnecesary enginerr ass-covering :) | 09:46 | |
| nothingmuch | what was? | ||
| the whole conversation? | |||
| Alias_ | your two additional lines of conditions | ||
| nothingmuch | the 'yes' was also ass covering | 09:47 | |
| Alias_ | So give a confirmed 'yes' and then turn it into a 'maybe' | ||
| nothingmuch | i might get hit by a truck, and then the linker won't turn out the way I want to | ||
| Alias_ | no you won't | ||
| nothingmuch | and then it might not work | ||
| i said 'yes' | |||
| Alias_ | The odds you will be are statistically nonexistant | ||
| nothingmuch | not 'yes, before 1.0' | ||
| when you ammended that i said i have no clue what 1.0 even is | |||
| Alias_ | You don't? | 09:48 | |
| nothingmuch | but it sounds important, and for it to be good it should have those | ||
| Alias_ | It's the first production release of an application | ||
| As in, when Perl 6.000 | |||
| final, done | |||
| nothingmuch | so by that we disallow perl 6.5? | ||
| no otpimizations can ever make it to 6.5 because they must be done by 6.0? | |||
| Alias_ | Are you telling me you've never shipped a module? | 09:49 | |
| nothingmuch | no | ||
| Alias_ | wow... sorry | ||
| nothingmuch | no as in i'm not telling you that | ||
| Alias_ | I thought I'd seen things you'd made before | ||
| nothingmuch | i have | ||
| Alias_ | Then you understand 1.0 | ||
| this conversation is one big ball of misunderstandings | |||
| nothingmuch | the issue is that a community driven language that is so wide will have 1.0ish spread around around a year | ||
| heh | |||
| good riddece | 09:50 | ||
| riddance | |||
| autrijus purrs. | |||
| nothingmuch will make sure that all his optimizations are conditional | |||
| if ($*ENV{LOGNAME} ne "adamk") { optimize real well } | 09:51 | ||
| autrijus | oh btw. | ||
| the demagicalizing thread on p6l fizzled, right? | |||
| nothingmuch | i haven't noticed it | 09:52 | |
| autrijus | magical pairs is responsible for lotsa test failures :-/ | ||
| nothingmuch | hmm | ||
| fry them? | |||
| i think luqui's proposal was pretty well accepted | |||
| autrijus | url to his proposal? | 09:53 | |
| nothingmuch | let me dig | ||
| also see tuple types in theory.pod | |||
| since he brought it up i've wanted slurpy scalar about 50 times | |||
| autrijus | yuppers. | ||
| nothingmuch | it would be very nice to have | ||
| *searching* | |||
| okay, in theory.pod: | 09:54 | ||
| foo($x, (foo => "bar")); # positionals | |||
| foo($x, foo => "bar"); # positional and named | 09:55 | ||
| my $x = foo => $bar; | |||
| autrijus | ooh meaningful parens. | ||
| nothingmuch | foo($x); # positional | ||
| (they're very intuitive, aren't they? | |||
| to make $x a named you have to .... | |||
| i think you should flatten it: | 09:56 | ||
| foo(*$x); | |||
| where a pair is really a tuple with only one named | |||
| makes sense? | |||
| autrijus | er, yes, because we went thru that during yapcna hackathon. | 09:57 | |
| larry kept saying he want a way to mark named zones. | |||
| nothingmuch | hmm? | ||
| autrijus | instead of that proposal | ||
| nothingmuch | tuples existed since then? | ||
| autrijus | but that never materializes, so I think what we have is second best. | ||
| nothingmuch | hmm | 09:58 | |
| i see a post that discusses only "I suspect a lot of people would still prefer to write named args with =>" | |||
| this is from aug 19, though | 09:59 | ||
| autrijus | aye. | ||
| oh btw. you have some cycles? | |||
| nothingmuch | cycles? brain or CPUD? | ||
| autrijus | I'd like to ditch t/rules/rules.t | ||
| nothingmuch | split it? or throw it away? | 10:00 | |
| autrijus | by ditch Imean to turn it into somethign spec based | ||
| nothingmuch | ah | ||
| autrijus | and then transfer /en masse/ to parrot folks. | ||
| spec based means some delimited format | |||
| nothingmuch | yes | ||
| hmm | |||
| to what extent does PGE know about the names of perl 6 special vars? | |||
| autrijus | nothingmuch: it knows a data structure of each named and positional matches | 10:01 | |
| nothingmuch: the original stuff is spec based | 10:02 | ||
| see the comment lines | |||
| nothingmuch | yes, I know | ||
| svnbot6 | r7253 | autrijus++ | * Massive TODOization. | ||
| autrijus | so probably just translate it back into that format | ||
| and let parrot harness it | |||
| nothingmuch | i'm thinking it's slightly more difficult | ||
| since it was hand edited by then | |||
| autrijus | indeed? I don't know... throw a regex at it and see what slips | ||
| autrijus is still relenging the tests | 10:03 | ||
| nothingmuch | i think i will svk log a bit | 10:04 | |
| then figure out if we're better off translating from othe original or from this one | |||
| it's seems very well formed though | |||
| autrijus | nod. | ||
| broquaint | Quick q. - are the Pugs internals documented and if so, how do I get at those docs? | 10:07 | |
| nothingmuch | broquaint: haddock | ||
| and not really, sadly =( | |||
| broquaint | Dang. I was looking to make Object.new(*%args) JFW, but wasn't sure where to start, and much of Haskell makes my brain want to be somewhere else. | 10:08 | |
| nothingmuch | broquaint: i guess i can help a little, and autrijus is always willing too | 10:09 | |
| and he can actually help a lot ;-) | 10:10 | ||
| broquaint | Nah, it's ok, I did to hack in bits and bobs. Maybe I'll just write my own perl6 interpreter to get up to speed ;) | 10:14 | |
| s/did/tend/ | 10:15 | ||
| nothingmuch | =) | ||
| you can try what i did | |||
| it helped me a lot | |||
| i learned forth and haskell together | |||
| it's documented too: feather.perl6.nl/~nothingmuch/harrorth | 10:16 | ||
| (the learning process) | |||
| broquaint | Hack a new language, eh? Sounds good to me. | 10:17 | |
| Maybe it's time Haskell was implemented in Perl6 ... | 10:18 | ||
| nothingmuch | hmm | 10:19 | |
| svn.openfoundry.org/pugs/perl5/Blondie/milner.pl | |||
| hola joao | 10:27 | ||
| joao | nothingmuch, hi, my laptop ran out of battery :P | ||
| nothingmuch | eep | ||
| joao | and yesterday he kissed the floor... fortunately, everything seems to work just fine ;) | 10:28 | |
| nothingmuch | eep! | 10:29 | |
| joao | nothingmuch, anyway, I'll try to do something like you did with harrorth :-) | 10:30 | |
| nothingmuch | mui bien | ||
| joao | "muito bem" is better :) | ||
| nothingmuch | pt? | ||
| joao nods | 10:31 | ||
| nothingmuch | muito bem | ||
| nothingmuch will try to remember | |||
| joao | ;) | ||
| nothingmuch | joao++ | ||
| joao | pt and sp are similar languages | ||
| nothingmuch | pt sounds cooler though | ||
| less rigid and throatal | |||
| joao | I don't know about the rigid part :) | 10:32 | |
| nothingmuch | rigid not in any grammatical sense | 10:33 | |
| that much i don't know | |||
| pt vs sp on tv always sounded more round, soft and pleasant | |||
| joao | Probably because they speak louder, faster and sometimes almost singing :-) | 10:34 | |
| nothingmuch | autrijus: i think i'll try to convert the current rules.t | 10:35 | |
| it seems like there is some rules | |||
| err... some change | |||
| joao | Oh well, work is calling again | 10:36 | |
| bbl | |||
| nothingmuch | ciao | ||
| autrijus | nothingmuch++ | 10:40 | |
| oh btw, is $/ deprecated? | 10:41 | ||
| for the whole match, I mean, in favour of $<> | |||
| nothingmuch | i dunno | 10:43 | |
| isn't it the match object | |||
| ~$/ eq $<> | 10:44 | ||
| ? | |||
| breakfast time | |||
| see you soon | |||
| autrijus | cool | 10:48 | |
| svnbot6 | r7254 | autrijus++ | * remove warning from using rx:i//. | 11:05 | |
| r7254 | autrijus++ | * do not report rx warnings with a line number inside Prelude.pm | |||
| r7254 | autrijus++ | as it is not helpful. | |||
| r7255 | autrijus++ | * For Parrot 0.3.0, we need to inline PGE::Hs into run_pge.pir | 11:47 | ||
| r7255 | autrijus++ | for rules to work again. | |||
| r7256 | autrijus++ | * disable the arcfour test as it seems not yet implemented. | 11:52 | ||
| betaplus | hi! is this the right place to ask -- cia.navi.cx/stats/project/perl6 didn't update for quite some time, but the real svn repository shows progres...? | 12:10 | |
| autrijus | hm, sec | 12:11 | |
| QtPlatypus | That is way out of date. We are up to 7256 | 12:12 | |
| autrijus | fixing. | 12:13 | |
| betaplus | ooh cool! ++ | 12:14 | |
| svnbot6 | r7257 | autrijus++ | * do not export operators from fp.pm; instead multify them. | 12:17 | |
| r7258 | autrijus++ | * repair times.t to use proper french quoting. | |||
| Limbic_Region | autrijus - I know you are incredibly busy with an incredible amount of stuff - but do you have a 1 or 2 line summary of your progress of porting the MM to Haskell? | ||
| QtPlatypus | Multify? | 12:18 | |
| autrijus | "turned into multi sub" | ||
| Limbic_Region: sure - it's "didn't do anything that works in any shape yet; pending releng and some time to Q&A with stevan" | 12:19 | ||
| Limbic_Region | ok | ||
| What I am most interested in as casual observer is how natural the port is versus how much hmmm - this doesn't feel right comes up | 12:20 | ||
| I am a firm believer that the more something is fully grok'd the simpler it becomes | |||
| autrijus | aye | ||
| that's also related to container model | 12:21 | ||
| which also needs porting over | |||
| Limbic_Region | right | ||
| autrijus | and I've been thinking about how to do this transplant without affecting too much of Eval.hs | ||
| easiest is perhaps to treat the current PIL interface as a black box | 12:22 | ||
| svnbot6 | r7259 | nothingmuch++ | r8827@syeeda: nothingmuch | 2005-10-04 14:19:56 +0200 | ||
| r7259 | nothingmuch++ | milner.pl: | |||
| r7259 | nothingmuch++ | * fix type checking of higher order functions wrt variable instantiation | |||
| r7259 | nothingmuch++ | * close STDERR | |||
| r7259 | nothingmuch++ | * more tests | |||
| autrijus | i.e. do another backend runcore that does not participate in parsing yet | ||
| Limbic_Region | well, as long as that doesn't ultimately end up painting you into a corner | ||
| autrijus | I've been in many corners the past couple days :) | ||
| Limbic_Region | or to use a p5 analogy - end up making Pugs development a game of Jenga | ||
| autrijus | right. | ||
| modularity is of utmost importance. | 12:23 | ||
| but with parrot 0.3.0 and ghc 6.4.1 out | |||
| releasing a pugs that works with them | |||
| is perhaps a greater priority | |||
| so I'm trying to get that done first today | |||
| Limbic_Region | well, yes - but more important is a sound API design that has forethought for growth | ||
| I guess those are two sides of the same coin | 12:24 | ||
| autrijus | er, well, I'm more of the refactor-what-works-into-api school | ||
| bduf didn't work very well for me :) | |||
| Limbic_Region | ok - we are saying the same thing pretty much | ||
| autrijus | *nod* | 12:25 | |
| venehement agreement good. | |||
| Limbic_Region | the design should allow for change without terribly impacting everyone else | ||
| but the design should indeed change whenever appropriate | |||
| autrijus | nod. | ||
| Limbic_Region | sometimes terribly impacts are unavoidable so you want to get that done and over with before releasing to the world | ||
| s/releasing to the world/declaring stability/ | 12:26 | ||
| autrijus | nothingmuch: please delete t/rules/rules.t when you are done converting -- I'm marking it as not-to-be-run now | ||
| nothingmuch | autrijus: sorry, was on phone for a long while | 12:27 | |
| svnbot6 | r7260 | autrijus++ | * skip rules test as it's moving to parrotland soon, per consensus | ||
| r7260 | autrijus++ | at parrotsketch.. | |||
| r7259 | nothingmuch++ | r8827@syeeda: nothingmuch | 2005-10-04 14:19:56 +0200 | |||
| r7259 | nothingmuch++ | milner.pl: | |||
| r7259 | nothingmuch++ | * fix type checking of higher order functions wrt variable instantiation | |||
| nothingmuch | then i found a bug in the inferrencer | ||
| svnbot6 | r7259 | nothingmuch++ | * close STDERR | ||
| r7259 | nothingmuch++ | * more tests | |||
| nothingmuch | so i'm finishing now, and i'll be on it 2 mins | ||
| autrijus | k | ||
| nothingmuch | wow, AGs rock | 12:30 | |
| i'm adding DWIMness to the pretty printer and it's working out very well | |||
| betaplus | ok bye and thank you autrijus for fixing CIA :) | 12:34 | |
| autrijus | np :) | 12:36 | |
| nothingmuch | moose! | 12:38 | |
| svnbot6 | r7261 | autrijus++ | * marking lexical_pragmas as TODO, that is, not for this release by default. | ||
| nothingmuch | okay, back to rules.t | 12:39 | |
| stevan | autrijus: ping | 12:44 | |
| svnbot6 | r7262 | nothingmuch++ | better pretty printing, and a fix for the wide char in print warning | ||
| nothingmuch | hey stevan | ||
| stevan | hey nothingmuch | ||
| autrijus | stevan: pong! | 12:45 | |
| stevan | autrijus: if you would like to do a quick MM q&a right now we can,.. | ||
| autrijus | stevan: okay, how quick? :) | ||
| stevan | I got about 20-30 min tops | 12:46 | |
| autrijus | okay | 12:48 | |
| why is the class part of opaque instance a scalar ref? | 12:49 | ||
| svnbot6 | r7263 | autrijus++ | * In Set::Symbols, do not override normal operators, but only | ||
| r7263 | autrijus++ | apply the operators to Set objects. | |||
| autrijus | instead of a simple ref | ||
| stevan | IIRC to make the initial Class is a Class easier | ||
| however, that is probably not needed if it is a problem | 12:50 | ||
| autrijus | you mentioned that singleton methods may make the for=>instance and for=>class easier and/or different. | ||
| what do you mean? | |||
| stevan | in Ruby class methods are just singleton methods on the Class instance | ||
| if we follow that path | 12:51 | ||
| then we can eliminate the class/instance method code | |||
| autrijus | then the "the DBI class is an undef for a DBI object" foo can go away | ||
| stevan | which never felt right anyway | ||
| yes, that is likely | 12:52 | ||
| it looks to me as if it will unify some things | |||
| simplify too | |||
| which is always a good thing | |||
| autrijus | yes, I think that's the way to go. | ||
| so the way in p5 is to invent anonclass to bless into? | 12:53 | ||
| stevan | I am not sure whether to force all objects to be like that | ||
| or to do it "on demand" | |||
| this is what I was thinking about yesterday | |||
| yes, look at t/36_... er,.. singleton_method or something | |||
| it subclasses class | |||
| autrijus | we can surely reclass an obj's .meta at runtime? | 12:54 | |
| stevan | I think it is not a recommended thing | ||
| but it should be possible | |||
| nothingmuch | seen luqui | 12:55 | |
| jabbot | nothingmuch: luqui was seen 1 days 16 minutes 56 seconds ago | ||
| autrijus | and if so, we can then conjure up anonclass when there is a need for it. | ||
| stevan | if you do it, we cannot guarantee the results | ||
| however if we do it,. we can :) | |||
| autrijus | lol | ||
| stevan | yes, that is basically how it works | ||
| autrijus | okay. is for=>instance and for=>class going away then? | 12:56 | |
| stevan | its gets a little messy deciding where to install new methods (using add_method) vs. singleton methods (using add_singleton_method) | ||
| but thats just details | |||
| autrijus: yes, they will go away | |||
| autrijus | good. | ||
| stevan | yeah they smelled bad :) | ||
| autrijus | I stopped there :) | ||
| and thought something along the lines of, it can't be right :) | 12:57 | ||
| stevan | if you want,.. you can ignore the class method thing all together and just build it with instance methods | ||
| autrijus | yup | ||
| stevan | there are not class methods in the core MM | ||
| autrijus | I'm going to do just that. | ||
| stevan | cool | ||
| autrijus | hi Qiang | ||
| stevan | I should have the singleton methods integrated by the end of the week at the latest | ||
| $work is a little busy, so my tuits are limited | 12:58 | ||
| autrijus | sure, no worries | 13:00 | |
| stevan | how is it going otherwise? | ||
| did you have issues with other parts of chaos? | |||
| nothingmuch | autrijus: ping me when you're done with stevan, i have a refactoring plan for you | ||
| autrijus | nothingmuch: I can multiplex | ||
| stevan: as you know, there's no globals in haskell :) | 13:01 | ||
| nothingmuch | i don't want to take out of stevan's limited time | ||
| autrijus | stevan: so I'm trying to see which environments are absolutely needed for me to keep around | ||
| nothingmuch | and I can do some dirty work before it | ||
| stevan | autrijus: well you need $?SELF, $?CLASS, $?ROLE and $?PACKAGE | ||
| but other than that,.. you should be okay | 13:02 | ||
| autrijus | stevan: and naturally it goes back to mutability. the $::* | ||
| er, jinx | |||
| right. | |||
| $::SELF etc I mean. | |||
| stevan | the $::DISPATCHER is actually optional | ||
| you can implement next_METHOD CLOS-style and redefine it for each method call | |||
| it tended to be more expensive since you get if whether you use it or not,.. but it always felt the cleanest | 13:03 | ||
| autrijus | okay, I'd need to think about it | ||
| nothingmuch | stevan: remember static analysis | ||
| i think we should go to predictable cleanliness | |||
| it's easier to optimize that then to make an optimized impl and keep that clean | |||
| stevan | autrijus: keep in mind that chaos.pl and gnosis.pl are not concrete, they can be modified to fit the runtime | 13:04 | |
| autrijus | stevan: so, in chaos, all bless() is just tagging | ||
| stevan | everything after that is the MM | ||
| autrijus: yes, just tagging really | |||
| autrijus | the only method that is used is ->isa | ||
| stevan | and IIRC I only use that in gnosis.pl | ||
| autrijus | chaos too | 13:05 | |
| stevan | which actually can go away once the singleton methods are in place | ||
| yes, chaos too | |||
| autrijus | cool. | ||
| so the idea is I forget about class meths | |||
| stevan | but once singlton methods are in place,.. class methods are installed that way | ||
| autrijus | and support metamorph.pl API | ||
| and everything else should fall from there | |||
| stevan | and private methods can be detected by the : or _ at the begining | ||
| autrijus | s/API/usage/ | ||
| stevan | yes | 13:06 | |
| autrijus | eggcellent. I think that's it for now :) | ||
| stevan | up to metamorph (chaos, and gnosis) is the implementation specific stuff | ||
| metamorph and beyond should be followed fairly strictly | |||
| very nice :) | 13:07 | ||
| I can't wait | |||
| BTW - I started hacking a p6 version of metamorph | |||
| mostly to sort of test out the p6 part of the MOP | |||
| actually nothingmuch, that is something you might be interested in messing with | 13:08 | ||
| nothingmuch | huh hmm? | ||
| stevan | nothingmuch: see lib6 in the MM2.0 directory | 13:09 | |
| nothingmuch | ermm.... soon | ||
| stevan | and hack some P6 MOP for me | ||
| ok | 13:10 | ||
| nothingmuch | i have something i need to do, and if i keep getting distracted with fun stuff it will never be done | ||
| compiling rules is slow... | |||
| is parrot invoked once for each rule? | |||
| autrijus | no, we keep persistnt connection | ||
| stevan | ok,.. I have to run now,.. off to $work | ||
| adios all | |||
| autrijus | stevan: thank and good luck! | ||
| stevan | & | ||
| :) | 13:11 | ||
| no death march,.. just driving in traffic,.. so its not too bad,.,. lots of time to think | |||
| nothingmuch | ciao Steve_p | ||
| eep | |||
| autrijus: okay, here's the plan | 13:12 | ||
| use Test::Base | |||
| i hope parrot land won't mind | |||
| we have: | |||
| autrijus | prolly won't if you bundle it | ||
| nothingmuch | ---input: foo | ||
| ---pattern: bar | |||
| those are always string constants | |||
| then we have other fields | |||
| like | |||
| ---whole_match: string constant # will translate to $<> | |||
| --- match_var: 1 | 13:13 | ||
| --- match: "constant | |||
| this is $1 | |||
| that way it's very portable | |||
| and not too hard to hack on the T::B side (just a few simple filters) | |||
| then to run these against perl 6 we need to port Test::Base (prolly not too hard) | |||
| and port the filters (not hard at all) | |||
| and in parrot land we will write the filters to use the perl 5 glue they use | 13:14 | ||
| makes sense? | |||
| splitting rules.t into batches of 150 | 13:15 | ||
| autrijus | makes sense. | ||
| nothingmuch++ # sound plan. | |||
| nothingmuch | i hope it's not too much trouble | 13:16 | |
| i'll make a human assisted translation script | |||
| if it can parse something and knows exactly what it is it generates simple rules | |||
| autrijus | nothingmuch++ nothingmuch++ | ||
| nothingmuch | otherwise it asks for help | ||
| autrijus | k | ||
| nothingmuch | then we can split the work effort across the 150-test chunks, so that I fatigue doesn't cause bad translation | ||
| hiya ingy | 13:17 | ||
| autrijus: are some tests in rules.t known to segfault? | |||
| ingy | nothingmuch: hi there | ||
| autrijus | nothingmuch: none of them, if you up to the latest pugs | ||
| nothingmuch | oh right, i haven't compiled pugs yet... only parrot | 13:18 | |
|
13:18
theorbtw1 is now known as theorbtwo
|
|||
| nothingmuch | hola theorbtwo | 13:18 | |
| autrijus | nothingmuch: r7288 fixes the segfault against 0.3.0 afaict | ||
| but you don't really need to run it for real :) | |||
| for translation, I mean. | |||
| nothingmuch | i'm still chunking | ||
| Limbic_Region | theorbtwo - how did you do in the contest? | 13:19 | |
| svnbot6 | r7264 | autrijus++ | * protect signature_matching with try{} throughout | 13:22 | |
| theorbtwo | Nothing mailed about results yet. | 13:30 | |
| OTOH, my access log shows that they did look at least a bit -- though they didn't create an account. | 13:31 | ||
| Limbic_Region | so did you end up modifying the vector engine at all? | ||
| theorbtwo | No major modifications thus far. | 13:32 | |
| I think I'd like to modify it, but I'm not sure how to do so without using N*M time. | |||
| Limbic_Region | I am not sure how rating TV shows compares to finding search strings in documents but ... | ||
| that engine was severly lacking in features that I would want | |||
| nothingmuch | pugs: internal error: scavenge_stack: weird activation record found on stack: 469 | ||
| Please report this as a bug to [email@hidden.address] | |||
| or www.sourceforge.net/projects/ghc/ | |||
| should i upgrade ghc? | 13:33 | ||
| Limbic_Region | word ordering, proximity matching, weighting, etc | ||
| theorbtwo | The idea is that we figure out what your ideal show is, and compare each show to that one to rate it. | ||
| nothingmuch | autrijus: punting for a few mins | 13:34 | |
| gotta fix a flat tire in our car | 13:35 | ||
| autrijus | k | 13:36 | |
| nothingmuch | dad said: wait | ||
| pasteling | "nothingmuch" at 82.81.247.180 pasted "can't compile pugs" (6 lines, 269B) at sial.org/pbot/13451 | ||
| autrijus | nothingmuch: you sure you don't have local changes? | 13:39 | |
| because that line is line 281 here. | |||
| Qiang | hi, autrijus | 13:42 | |
| nothingmuch patiently waits for compilation to finish | 13:48 | ||
| what is $0 in perl 6 again? | 13:51 | ||
| kolibrie | $0 is the first match | 13:53 | |
| Limbic_Region | kolibrie right | 13:54 | |
| nothingmuch | so $1 in perl 5? | ||
| kolibrie | yes | ||
| Limbic_Region | and nothingmuch wants to know what p5's $0 is in p6 | ||
| nothingmuch | not whole match or any special case like that? | ||
| no | |||
| Limbic_Region | err - nevermind me | ||
| nothingmuch | $0 in p6 is $?PROGRAM_NAME, i guess =) | ||
| kolibrie | I guess | 13:55 | |
| svnbot6 | r7265 | autrijus++ | * First step toward named argument rationalization -- | 13:58 | |
| r7265 | autrijus++ | Primitive won't accept any nameds, so pairs are passed in verbatim. | |||
| r7266 | autrijus++ | * fix adverbial_modifiers.t to use lexical subs to avoid name clash. | |||
| kolibrie | autrijus: I'd like a pugs shirt, but with names on the back, or something | 14:00 | |
| anyway, meeting & | |||
| nothingmuch | is there an array of $1 $2 $3 ... in perl 5? | 14:01 | |
| autrijus | with names on the back? | ||
| kolibrie: and are you coming to euro oscon? | |||
| or npw | |||
| nothingmuch: no, you need to use substr($var, $-[1], $+[1] - $-[1] | 14:02 | ||
| nothingmuch | phooey | ||
| do i know how many matches there were | |||
| heck, i could just ahrd code $1 .. $max | |||
| they can be undef | |||
| autrijus | $#- | 14:03 | |
| or $#+, same thing | |||
| nothingmuch | how do i make an any(@patterns) without losing qr ness (join("|", @patterns) makes a string) | ||
| yeah, you're right | |||
| but it's too much headache, not enough benefit | |||
| autrijus | er, why you worry about losing qrness. | ||
| join '|' is perfectly fine. | |||
| nothingmuch | can i safely qr a stringified qr? | 14:04 | |
| because the old qrs contain many meta chars | |||
| autrijus | I think so, yes | ||
| Limbic_Region | TIAS | 14:08 | |
| nothingmuch | regexes are too hard to debug | 14:14 | |
| pasteling | "nothingmuch" at 82.81.247.180 pasted "sad" (9 lines, 854B) at sial.org/pbot/13453 | 14:15 | |
| nothingmuch | ofcourse, this was a pretty combination of $RE{quoted}{-keep} and what not before | ||
| kolibrie | autrijus: not coming to euro oscon :( | 14:22 | |
| skew | autrijus: Do you have slides or notes from your oscon talk online somewhere? | ||
| I'm going to be teaching Haskell at work, and I'm wondering how you fit so much stuff into 45 minutes without expecting any previous experience | 14:33 | ||
| PerlJam | skew: What will you be doing at work with Haskell (besides teaching :) | 14:37 | |
| ? | |||
| skew | writing code generators at least | ||
| maybe some network + concurrency stuff | |||
| PerlJam | cool | 14:38 | |
| nothingmuch flexes his brain | 14:44 | ||
| svnbot6 | r7267 | iblech++ | ChangeLog: Changelogged r6963:r7266. The list is still unsorted, though. | 14:58 | |
| autrijus | skew: I'll hack both slides and notes together over the next 2 weeks | 15:00 | |
| ooh iblech++ | |||
| nothingmuch | moose | 15:01 | |
| the converter is coming along nicely | |||
| autrijus | nice moose | 15:02 | |
| nothingmuch | it's the scariest code i've written in a while | ||
| autrijus is about to have dinner | |||
| kolibrie | nothingmuch: what exactly are you converting? | ||
| nothingmuch | rules.t | ||
| kolibrie | into? | 15:03 | |
| nothingmuch | to $any_color_you_like | ||
| right now - parrot & Test::Base | |||
| basically, i'm parsing it | |||
| so far | |||
| skew | do you think you can cover all the stuff from the abstract? | 15:04 | |
| autrijus | skew: why, yes, given takahashi. | 15:05 | |
| I'm not giving a tutorial; I'm merely showing what is possible. | |||
| kolibrie | I am slowly beginning to understand lexing, parsing, interpretting, as I work through HOP chapter 8 | ||
| autrijus | so: code fragments, not real programs; ideas, not implementations | ||
| skew | ah, that's a bit different | 15:06 | |
| autrijus | I only got 45min :) | ||
| gaal | autrijus: re:arcfour, it actually is implemented but there seems to be a bug in 'is'. | ||
| autrijus | gaal: oh. | 15:07 | |
| nothingmuch: oh, btw, ANF. | |||
| nothingmuch | ? | ||
| autrijus | perlcabal.org/~autrijus/lab.tar.gz | ||
| ANF SSA converter. | |||
| including parser and runcore for both ANF and SSA | |||
| pretty printer too iirc. | |||
| have fun :) | |||
| nothingmuch | i'll try ;-) | ||
| gaal | autrijus: class Cipher::Arcfour is Cipher::Stream, which defines the "missing" method; the method is "..." only in the base class. | 15:08 | |
| pointing this out since it may be the kind of OO bug you want to know of before a release ;-) | |||
| autrijus | gaal: ah okay... I wonder why is is broken | ||
| yes I do, and I do, thanks! | |||
| autrijus ponders what is the bug | |||
| nothingmuch | moose | 15:16 | |
| about 60% of tests are parsed | |||
| gaal | wapiti | ||
| nothingmuch | spooky | ||
| pasteling | "nothingmuch" at 82.81.247.180 pasted "the script so far" (97 lines, 2.4K) at sial.org/pbot/13454 | ||
| geoffb | <rez> | 15:18 | |
| I'm gone a day and a half, and everybody gets bloody talkative | |||
| sheesh | |||
| Well, before I backlog, from the highlighted message: | 15:19 | ||
| stevan, obra: I'll be blogging weekly on O'Reilly. The topic will vary, but will often relate to Perl and especially Perl 6, because, well, that's what I like. | 15:20 | ||
| nothingmuch | someone please explain is(("ab" ~~ /(a+|b)*/ && $0[-1]), "b", 're_tests 218/1 (#262)'); | ||
| geoffb | Which reminds me, I need to turn my notes for this week into an actual post. Tomorrow, I think. | ||
| nothingmuch | geoffb++; # /me wants to see what's next | ||
| geoffb | "-Ofun: The Most Important Optimization" | 15:21 | |
| autrijus | geoffb++ | 15:22 | |
| geoffb | I'm thinking of doing "After -Ofun: Thoughts on Optimization" next, and then . . . well, topics welcome | ||
| autrijus | nothingmuch: it's testing that the captured stuff is 'b' instead of 'a' | 15:23 | |
| nothingmuch: the &&$0[-1] part is saying that the match shall succeed and we are testing the last captured block | |||
| nothingmuch | i thought $0 is just a string? | ||
| is it really meaning $/ ? | |||
| or is $/ really $0 ? | 15:24 | ||
| and wtf is $<> if $0 and $/ are both whole match? | |||
| I WANT MY MOMMY! | |||
| autrijus | $0 is the first capture group | ||
| $0[-1] means the last subgroup in it | |||
| pasteling | "nothingmuch" at 82.81.247.180 pasted "ungrokked lines" (23 lines, 748B) at sial.org/pbot/13455 | ||
| autrijus | I contend $0[-1] really means $/[-1] | ||
| pasteling | "nothingmuch" at 82.81.247.180 pasted "full output" (2048 lines, 169K) at sial.org/pbot/13456 | ||
| nothingmuch | hmm | 15:25 | |
| right, it's subgroup | |||
| hmmm | |||
| is(("abbbcd" ~~ /(<[abc]>)*d/ && $0[-1]), "c", 're_tests 240/1 (#296)'); | |||
| oh wait, that's a brain parse error | |||
| we can use $/[-1] for now | 15:26 | ||
| geoffb | & breakfast, then massive backlogging | ||
| autrijus | gaal: enjoy :) | ||
| er | |||
| geoffb: enjoy :) | |||
| geoffb | :-) | ||
| gaal | ah, the wily <Tab> :) | ||
| nothingmuch | okay, we grok it all | 15:28 | |
| let me CI the script | |||
| where to? | |||
| hmm... i need to go now | |||
| gaal | util/? | ||
| nothingmuch | if anyone wants to pick up where i stopped - they're more then welcome, but i'll have to finish later | ||
| gaal: it's a one time script | |||
| we are converting rules.t and then then quitting | 15:29 | ||
| gaal | bar/? | ||
| nothingmuch | fair enough | ||
| gaal was joking, but util/bar/ might be good | |||
| autrijus | please just util ;) | 15:30 | |
| nothingmuch | too late | ||
| ../throw_away | |||
| hola leo__ | |||
| your new PGE tests are %25 ready | |||
| leo__ | hiho all | 15:31 | |
| autrijus | hi leo :) | 15:32 | |
| leo__ | hi here too :-) | ||
| nothingmuch wonders if you can speed up svk push | 15:33 | ||
| autrijus | push -l ? | 15:34 | |
| put it into background? ;) | |||
| nothingmuch | ah | ||
| won't -l make the commit log fuzzy? | |||
| it's not blocking my work | 15:35 | ||
| autrijus | it would. | ||
| nothingmuch | svn.openfoundry.org/pugs/throw_away/ | ||
| a good commit log is worth a few seconds | |||
| the script is pretty crazy... sorry ;-) | |||
| anyway, it emits line per line | |||
| with lines that it grokked printed as '$human_readable; # $orig' and lines it didn't as "###FIXME### $orig' | 15:36 | ||
| i'm guessing that $human_readable should dump to a Test::Base format | |||
| but I don't have time right now | |||
| svnbot6 | r7268 | nothingmuch++ | minor refactoring of type pretty printer's AG | ||
| r7269 | nothingmuch++ | conversion tool for rules, and split up rules.t | |||
| r7270 | autrijus++ | * add throw_away to MANIFEST.SKIP so we don't acceidetally | |||
| r7270 | autrijus++ | release it -- preferably nuke it before release. | |||
| nothingmuch | i'll finish this later if no one picks up | 15:37 | |
| autrijus | cool, nothingmuch++ | ||
| nothingmuch | anyway, ciao | 15:38 | |
| kolibrie | see you, nothingmuch | ||
| nothingmuch | hmmm | ||
| someone please remind me to do the laundry when I get back | |||
| autrijus | nothingmuch: remember to do the lunadry when you get back | ||
| er, laundry. creative dyslexia | 15:39 | ||
| nothingmuch | echo "$autrijus.repeat" | at now + several_hours | ||
| autrijus | at: you do not have permission to use this program | ||
| nothingmuch | ciao | 15:40 | |
| kolibrie | hmm, just updated my parrot svn, and now parrot won't compile | 15:45 | |
| leo__ | make realclean | 15:46 | |
| kolibrie | did that | ||
| twice, actually | |||
| leo__ | then I need more info | ||
| kolibrie | svn updated to r9331 | 15:47 | |
| imcc/main.c: In function ādo_pre_processā: | |||
| imcc/main.c:400: error: āENDā undeclared (first use in this function) | |||
| imcc/main.c:400: error: (Each undeclared identifier is reported only once | |||
| imcc/main.c:400: error: for each function it appears in.) | |||
| imcc/main.c:414: error: āSAVEALLā undeclared (first use in this function) | |||
| imcc/main.c:415: error: āRESTOREALLā undeclared (first use in this function) | |||
| PerlJam | same here. (fwiw) | 15:48 | |
| leo__ | ah I see 1 minute | ||
| PerlJam | looks like imcc.y is missing a few tokens | 15:49 | |
| leo__ | no, main.c has(d) too much :) | ||
| r9332 | |||
| sorry | 15:50 | ||
| kolibrie | leo__: thanks :) | ||
| PerlJam | ah, muy bueno | ||
| gaal | is the smoke server down for submitting smokes for you folks too? | 16:14 | |
| svnbot6 | r7271 | gaal++ | suggest smoke upload with system directory separator | 16:25 | |
| gaal | is anyone using %*ENV<PUGS_SMOKE_UPLOAD> in practice? I want to break it and go through config.yml | 16:28 | |
|
16:28
brentdax_ is now known as brentdax
|
|||
| gaal | and while i'm at it add an option to automatically upload successful smokes to the public smokeserver | 16:28 | |
| nothingmuch | autrijus: ping | 16:44 | |
| autrijus | nothingmuch: pong | 16:48 | |
| gaal: not me | |||
| nothingmuch | taken to /msg | ||
| autrijus | nothingmuch: I think you want to identify yourself. | 16:49 | |
| thank you freenode. | |||
| nothingmuch | odd, i have the script | ||
| did you get it now? | 16:51 | ||
| autrijus | aye | 16:54 | |
| down to <4000 failures | 16:55 | ||
| er | |||
| I mean <400. | |||
| still a long way to go | |||
| svnbot6 | r7272 | iblech++ | * New t/builtins/io/say_and_print.t: Tests for &say and &print (triggered | 17:07 | |
| r7272 | iblech++ | by PIL2JS dieing on "str".say). | |||
| r7272 | iblech++ | * PIL2JS: | |||
| r7272 | iblech++ | * Prelude::JS::IO: Support the method form of &say and &print. | |||
| r7272 | iblech++ | * PIL::Subs: method foo (Bar @array:) {...} should not add a method | |||
| r7272 | iblech++ | to Bar, but to Array. Fixed. | |||
| r7273 | iblech++ | * t/statements/io_leaking_into_runtime.t: | 17:43 | ||
| r7273 | iblech++ | my $fh = BEGIN { my $f = open(...); ({$f}) } should not work, as a | |||
| r7273 | iblech++ | compile-time filehandle would leak into runtime. force_todo'ed. | |||
| r7273 | iblech++ | (Also noted that open("...", :w) does not work currently (FYI, &open did work | |||
| r7273 | iblech++ | in r7105). | |||
| r7273 | iblech++ | * t/data_types/anon_block.t: | |||
| r7273 | iblech++ | {...}; # should auto-execute | |||
| r7273 | iblech++ | ({...}); # should not auto-execute (:todo<bug>'ed) | |||
| Limbic_Region | code that had previously been working for months is currently b0rk | 17:45 | |
| unfortunately I have not tested it in a week or two | 17:46 | ||
| so I don't know when the problem was introduced | |||
| Limbic_Region tries to see if he can create a smaller test case | |||
| grrrrr | 17:49 | ||
| I hate when making a smaller test case makes the problem disapear | 17:50 | ||
| heisenbugs-- | |||
| weird | 17:56 | ||
| found the bug | |||
| ?? :: vs ?? !! | 17:57 | ||
| Limbic_Region can't believe it has been that long since I tested this code though - perhaps I had the wrong version of pugs and the wrong version of the code | 17:58 | ||
| gaal | are you sure you have PERL6LIB set correctly? | ||
| Limbic_Region | gaal - yes | ||
| geoffb | Hah! Finally caught up with backlog. Only took 2 hours . . . . | 18:02 | |
| autrijus | :D | 18:03 | |
| gaal: I found the cipher bug. fixing | |||
| thanks for bringing it to my attention :) | |||
| gaal | autrijus: oo! | 18:04 | |
| autrijus | minimal test case | 18:07 | |
| ?eval class A is B { method f {1} }; class B { method f {...} method g { ./f } }; say A.g | |||
| evalbot_7273 | Error: *** ... - not yet implemented at <eval> line 1, column 52-55 | ||
| autrijus | curiously | 18:10 | |
| ?eval class A is B { method f {1} }; class B { method f {...} method g { ./f } }; say A.new.g | 18:11 | ||
| evalbot_7273 | 1 bool::true | ||
| autrijus | that means class objects did not survive redispatch. | ||
| even more reason for singleton-based metmaodels. | |||
| svnbot6 | r7274 | gaal++ | use canonpath instead of catpath | 18:14 | |
| gaal | I don't understand that last comment, (what are singleton-based metmaodels and) why isn't this "simply" a bug in the current implementation? | ||
| autrijus | gaal: okay. current MM1, MM2 and MM0(pugs runcore) distinguish between class meths and instance meths | 18:15 | |
| which means the dispatcher has to special-case in quite a few places | |||
| and also leads to strange musings like "class Int is the undefined instance of itself" | 18:16 | ||
| gaal | I'm not familiar with the metamodel (am ordering the Art book today in fact, to fix that!)... Just wondering how a singleton might help | 18:17 | |
| autrijus | gaal: I'm leaning toward having class objects like ::A simply be instance of type Class that happen to have various singleton methods installed into them | ||
| so _all_ method calls are instance methods | |||
| and the dispatcher won't need a duplicate copy of logic (which is what went wrong here) | 18:18 | ||
| gaal | okay, I think I see :) | ||
| PerlJam | autrijus: And don't you have to do something like that anyway to support the creation of anonymous classes that are created by tacking on "but" or "does" things? | 18:20 | |
| svnbot6 | r7275 | iblech++ | * t/subroutines/lvalue_subroutines.t: unEVAL | ||
| r7275 | iblech++ | * PIL2JS: | |||
| r7275 | iblech++ | * README: Misc. fixes. | |||
| r7275 | iblech++ | * New Prelude::JS::Proxy: Proxy class! (But not yet user-visible as the | |||
| r7275 | iblech++ | MetaModel lacks class methods) | |||
| r7275 | iblech++ | my $x := PIL2JS::Internals::new_proxy( | |||
| r7275 | iblech++ | FETCH => {...}, | |||
| r7275 | iblech++ | STORE => -> $new {...}, | |||
| r7275 | iblech++ | ); | |||
| r7275 | iblech++ | say $x; $x = ...; # works | |||
| r7275 | iblech++ | * ChangeLog: Minor update to PIL2JS section; also note that I forgot to mention | |||
| r7275 | iblech++ | that my r7267 (log message "Changelogged r6963:r7266") only refers to PIL2JS, | |||
| r7275 | iblech++ | sorry... | |||
| autrijus | PerlJam: aye, yes. unification good. | ||
| gaal: anyway. the bug here is that the dispatcher for ./f sees the invoker is of type "Class", so it neglected to dispatch things for it | 18:23 | ||
| gaal | ack | ||
| autrijus | eg: | 18:24 | |
| ?eval class A is B { method f {1} }; class B { method g { ./f } }; say A.g | |||
| evalbot_7275 | Error: No compatible subroutine found: "&f" | ||
| leo__ | autrijus: parrot always dispatches on obj.class - works fine | ||
| autrijus | leo__: so a class's .class is itself? | 18:25 | |
| leo__ | you can consider it as .get_class | ||
| autrijus | nod. | ||
| leo__ | the class is itself a singleton, yes | 18:28 | |
| so that klas.get_klass == klas | 18:29 | ||
| so that klas.get_class == klas | |||
| gaal is reminded of GObject... | 18:30 | ||
| svnbot6 | r7276 | autrijus++ | * add the (currently failing) test for Cipher::Arcfour's bug. | ||
| gaal | they have the style of using "klass" as a varible referring to the class too. | 18:31 | |
| autrijus | leo__: right, I think singleton is the way to go | ||
| leo__ | I saw that a lot in python code | ||
| autrijus | ruby too iirc. | ||
| Aankhen`` goes to sleep. | 18:48 | ||
| G'night. | |||
| Limbic_Region | autrijus - do you have an ETA for 6.2.10 ? | 18:51 | |
| autrijus | Limbic_Region: yes, asap ;) | 18:53 | |
| depends how much help I get for changelogging etc | 18:54 | ||
| Limbic_Region | and that entails targeting the latest merged parrot (with new calling conventions) correct? | ||
| autrijus | yes. | ||
| Limbic_Region | so after that, porting the MM to the Haskell and Parrot backends? | 18:55 | |
| autrijus | leo__: btw, "invoke" is gone? | ||
| leo__ | autrijus: no, just that invoke with implict arguments | 18:56 | |
| autrijus | Limbic_Region: no, port MM and containers to haskell, get 6.28.0 released, _then_ parrot | ||
| leo__ | invoke foo # works fine | ||
| autrijus | Limbic_Region: I think it's better for parrot if we can figure out exactly what we demand from it :) | ||
| leo__: what about invoke $P0 ? | |||
| leo__: see perlcabal.org/~autrijus/foo.pir | 18:57 | ||
| line 77 | |||
| leo__ | that's now invokecc $P0 | ||
| or invoke $P0, $P1 | 18:58 | ||
| autrijus | but I don't want to return :) | ||
| leo__ | the latter takes the continuation too as arg | ||
| Limbic_Region | autrijus - has @larry looked at the MM? I ask only because it seems to me that AES12 leaves a bit to be desired and I assumed stevan made educated guesses | ||
| autrijus | Limbic_Region: yes, he conversed extensively with $Larry | 18:59 | |
| see S12.5 | |||
| ./perl5/Perl6-MetaModel2.0/docs/S12.5.pod | |||
| which is not yet very polished | |||
| but I think the idea is that the MOP will be documented there. | |||
| gaal | autrijus, i'd :todo tests but i don't know what's fixable (or even a showstopper :) | ||
| Limbic_Region | ok - so 6.28.0 is realistic - wow | ||
| autrijus | gaal: you do actually :) | ||
| Limbic_Region | woooooooohooooooo | ||
| autrijus | gaal: please blindly :todo ahead and tell me anything that you don't feel comfortable | 19:00 | |
| gaal | hee :) | ||
| ok | |||
| autrijus | gaal++ | ||
| gaal | starting from the end. | ||
| (lexically) | |||
| autrijus | that's my usual order too :) | 19:01 | |
| leo__ | autrijus: see also groups.google.com/group/perl.perl6....430a077b30 | ||
| autrijus | leo__: all very sensible, already fixed, thanks! | ||
| leo__ | thx for the sensible | 19:02 | |
| anyway, you can now just use PIR short syntax: | |||
| (a,b) = foo(c,d,e) | 19:03 | ||
| or | |||
| (a,b) = obj.foo(c,d,e) | |||
| autrijus | 'kay | ||
| leo__ | this emits the argument passing opcodes already used in pugs | ||
| Limbic_Region | leo__ have you figured out how to provide for chip's named arguments sensibly or is that still a wish-list item? | 19:04 | |
| svnbot6 | r7277 | autrijus++ | * adjust "invoke" into "invokecc" as per Parrot's new callconv. | ||
| r7277 | autrijus++ | (more parrotBrokenXXX fixes later) | |||
| leo__ | when it's python compatible, we will implement it | ||
| the big problem wa the magic Pair | 19:05 | ||
| chip has the design almost finished AFAIK | |||
| autrijus | named, lexpad, and kill-the-alligator-please varref | ||
| is the three immediate things we'd need; everything else can be emulated :) | 19:06 | ||
| s/varref/varreg/ | |||
| leo__ | the varreg is what exactly? | ||
| Limbic_Region | flexible parameters are a PITA - named, positional, optional, default values, slurpy or not, etc | ||
| autrijus | variable sized register frames. | ||
| Limbic_Region: "easy things are easy; hard things should be slow" :D | 19:07 | ||
| leo__ | ah ok, working on that | ||
| but first and needed is cleanup | |||
| autrijus | but in all seriousness, not slower than it should be. | ||
| leo__ | e.g. pushtopp or such | ||
| autrijus | k | ||
| leo__ | Limbic_Region: all but names works | 19:08 | |
| default is optional + compiler code to provide the value | |||
| you might grep for :slurpy, :optional, and :opt_flag in t/op/calling.t | 19:09 | ||
| svnbot6 | r7278 | autrijus++ | * INSTALL: We now really want Parrot 0.3.0. | ||
| r7278 | autrijus++ | * Also mention the good folks at PxPerl. | |||
| r7279 | autrijus++ | * Restore Cipher::Arcfour to its former tested glory as it's | |||
| r7279 | autrijus++ | not its fault. | |||
| geoffb | Autrijus, before 6.2.10, would you mind giving STATUS a buffing? I would do it myself, but I'm buried in $work today . . . and it seems good to have that file up to date with each release. | 19:11 | |
| autrijus | geoffb: k | 19:12 | |
| autrijus eagerly looks forward to the -Ofun article | |||
| geoffb | :-) Tomorrow. | ||
| autrijus | woot. | ||
| geoffb | Or at least, that's the plan. | ||
| geoffb finds it very hard to convince himself to prioritize $work over Perl 6 . . . but sadly, must be done to pay bills | 19:13 | ||
| dduncan | is there an ETA for the next Pugs release? | 19:14 | |
| Juerd | pugs was broken on feather | 19:15 | |
| svnbot6 | r7280 | autrijus++ | * $?SELF.method inside class methods are now redispatched with the | ||
| r7280 | autrijus++ | correct invoker type, so inheritance works (see t/oo/class/inheritance.t) | |||
| r7280 | autrijus++ | -- this has the potential of breaking existing tests... | |||
| Juerd | This has been for months | ||
| I'm a bit disappointed that I hadn't heard about that yet | |||
| (It was old because svk wanted user input) | |||
| Limbic_Region | Juerd - just replied to your zip question with my opinion | ||
| gaal | for $arrayref -> { ... } # iterate or only enter block once? | 19:17 | |
| in pugs it iterates. | |||
| what should it do? | |||
| dduncan | each array elem goes into $_, I think | ||
| since no explicit arg specified | |||
| fglock__ | gaal: Array does auto-dereferencing | ||
| gaal | okay, so t/statemets/for_with_only_one_item.t is wrong. fixing. | ||
| fglock__ | for \$arrayref -> { ... } enters once | 19:18 | |
| gaal | waitno, the p6-l thread stipulates it shoudl only enter once. | 19:19 | |
| Juerd | gaal: It should NOT deref | 19:20 | |
| autrijus | it should not deref. | ||
| Juerd | An object|reference should never derefence in list context | ||
| autrijus | what Juerd said. | ||
| it wasn't clear, but it's clear now :) | |||
| that also means | |||
| $arrayref.map{} | |||
| and | |||
| map{}$arrayref | |||
| do rather different things. | |||
| (I meant .map:{} of course) | 19:21 | ||
| fglock__ | ok | ||
| gaal | (thanks) | 19:25 | |
| svnbot6 | r7281 | autrijus++ | * another invoke -> invokecc fix; that puts sanity tests | ||
| r7281 | autrijus++ | passing again for Parrot 0.3.0. leo++ | |||
| r7282 | gaal++ | remove debug print | |||
| Limbic_Region | autrijus - how far after 6.28 will 6.283 be? pmichaud got PGE whipped into shape or is there still a lot of work to do? | ||
| autrijus | er, uhm, compilers/pge/ has got no commits since July | 19:26 | |
| neither has the punie compiler | 19:27 | ||
| so I don't really know about them... | |||
| Limbic_Region | ok | 19:28 | |
| autrijus | we'll worry about it when we get to it :) | ||
| meppl | speaking "perl6" in german sounds like "perlsex" (perlsechs) | 19:29 | |
| Ikarus | LOL | ||
| meppl: and that isn't accurate ? | |||
| meppl | germans put up that the number "6"(sechs) sounds like "sex"... | 19:32 | |
| nobody laughs about that | |||
| Limbic_Region | only sex in germany doesn't sound like sex in english | ||
| eric256 is entertained by the mailing list...hehe for options, and for people liking mostly different options | |||
| did i get the right room? L~R's talking about sex in different countries | languages . lol | 19:33 | ||
| s/for/four/ | 19:35 | ||
| Limbic_Region | eric256 - perhaps you weren't aware of one of Pugs mottos | ||
| . o O ( optimized for FUN ) | |||
| eric256 | lol. yea | ||
| autrijus | sex in german sounds like bad in german. | ||
| Limbic_Region | autrijus - which certainly begs the question "is sex like pizza when you are in germany"? | 19:37 | |
| because even when it is bad - it is still good | |||
| ok, back to OT | 19:38 | ||
| err On Topic even | |||
| joao | good night | ||
| or should I say, good evening | |||
| :-) | |||
| autrijus | Limbic_Region++ # back to OT | ||
| good localtime, joao. | 19:39 | ||
| joao smiles | |||
| (GMT+0, 20:39) | |||
| autrijus | +2 here. | 19:40 | |
| gaal | autrijus, oh, DST is finished where you are? we aren't in the same TZ after all :) | 19:41 | |
| autrijus | :) | ||
| geoffb | Auuuggghh, timezones! | ||
| geoffb gets flashbacks from writing calendaring software | 19:42 | ||
| DateTime.pm++ # Saving me | |||
| fglock__ gave up keeping DateTime::Set pass the timezones tests | |||
| svnbot6 | r7283 | gaal++ | test TODOifications (still more left) | ||
| geoffb | It is amazingly hard to explain to people, BTW, that A) timezones are not trivial to deal with, especially in the face of cross-TZ date math, and B) No, we don't have a big database with every GPS location to correct TZ. | 19:44 | |
| gaal | t/operators/binding/hashes.t is very Skippy | 19:45 | |
| PerlJam | geoffb: screw timezones and do everything in UTC. :) | ||
| geoffb | And C) even if we did, converting everyone's hand-typed local-formatted snail mail address to GPS coords would not be trivial | ||
| gaal | but the first test, the only one which isn't skipped, still fails | ||
| is that reasonable? | |||
| geoffb | PerlJam, internally I did. Now if I could get users to think in UTC, it would have been much easier! | ||
| PerlJam | geoffb: and forget cross-TZ math, what about timezones where the offset from UTC varies with time? | 19:46 | |
| eric256 | geoffb actualy its not too bad..at least not in pure US addresses.. government releases the TIGER data which lets you do address to long/lat in a fairly reasonable manner...still agree with you though | ||
| PerlJam | (i mean more than the usual DST variability) | ||
| gaal | in .il the TZ situation probably wins the ludicrousity challenge | 19:47 | |
| geoffb | PerlJam, hence my reason for converting in and out of UTC. And I assume you mean "historical changes to timezones" | ||
| eric256 | just make your customers adopt swatch beats, then they wont know when to expect it and wont know its comeing for the wrong time ;-) | ||
| gaal | it's set by politics and typically only scheduled a couple of years in advanced | ||
| geoffb | eric256, yeah, except at least half the userbase was spread across like 30 countries | ||
| eric256, heh | 19:48 | ||
| gaal | a few years ago there *almost* was a non-continuous DST. | ||
| geoffb | gaal, ouch! | ||
| eric256 | hehe mon-fri we are going to observer DST, on the weekends just set your clock to whatever you feel like ;) | ||
| PerlJam | geoffb: Well, if it's not now and not in the future, it's all historical :-) but yeah, timezones where there's a 15 minute offset for a little while, then a 30 minute offset, but only for years before X and then a 1 hour offset (but only for years between Y and Z) etc. | 19:49 | |
| gaal | so, can someone look at t/operators/binding/hashes.t ? | ||
| geoffb | nodnod | ||
| gaal | and ..../arrays.t while yer at it | ||
| gaal <3 vim's :E | 19:50 | ||
| eric256 just got an email "You are prequalified to reciev a deploma"....hmmmm lol | |||
| autrijus | gaal: the current runcore only allows binding for simple vars | 19:52 | |
| gaal: I think I can kluge in support for element binding, but the fact is the current container model is not at all what we decided upon | |||
| gaal | autrijus: which is why the *rest* of the tests are skipped, no? | 19:53 | |
| autrijus | so I think element binding shall wait till a proper port container model which will go with MM2-hs | ||
| gaal: er right, but shouldn't the first one be todo feature as well? | |||
| gaal | ahhhh, they're skipped because they crash? ack ack ack | ||
| fixing. | |||
| well, todoing :) | 19:54 | ||
| autrijus | cool :) | ||
| names <- forM vars $ \var -> case unwrap var of | |||
| Var name -> return name | |||
| _ -> retError "Cannot bind this as lhs" var | |||
| is the relevant part in Eval. | |||
| so as you can see, only Var forms are bound. | |||
| eric256 | is there a "haskel for poeple who can't even look at haskel without getting a headache" page? | 19:55 | |
| gaal | how does a subscripted element look there? | ||
| s/does/would/ | |||
| eric256: i think the hawiki has a few short practical examples, sec | 19:56 | ||
| haskell.org/hawiki/HaskellNewbie and the area | 19:57 | ||
| PerlJam | eric256: what about haskell gives you a headache? | ||
| integral | some bits of pugs aren't exactly the prettiest haskell, like the big multi-page functions :) | 19:58 | |
| autrijus | integral: they are going away :) | ||
| some of them, at least. | |||
| integral | yay! ;) | ||
| wolverian | wow, I can almost read haskell now. having a friend to learn with rocks :) | ||
| PerlJam | pugs is hardly typical of your average haskell program I think :) | ||
| gaal | i wonder what subset of perl we'll end up having available for Prelude.pm | 19:59 | |
| autrijus | but there are good pieces too... the PIR codegen is quite concise | ||
| eric256 | PerlJam, the spacing, the arrows pointing bothe ways the random $ things like 'forM vars $ \var' .... just things i don't understand because i don't understand haskel....and it would be fun to be able to actualy hack on some pugs internals... or at least read them. ;) | 20:00 | |
| PerlJam | eric256: man, perl6 is going to give you *such* a headache then ;-) | 20:01 | |
| integral | $ is the same idea as || vs. or in perl5 | ||
| autrijus | @names := for @vars -> $var { given unwrap($var) { when Var($name) { $name }; default { fail "Cannot bind this as lhs: $var" } } | ||
| eric256: that's a rough translation | |||
| except it's write wrong... | 20:02 | ||
| @names := @vars.map(-> $var { given unwrap($var) { when Var($name) { $name }; default { fail "Cannot bind this as lhs: $var" } }) | |||
| is maybe better. | |||
| integral | pointies have to be the best invention in perl6 | 20:03 | |
| eric256 | actualy PerlJam i'm quite comfortable with perl 6...guess the unknown just makes my head spin ;) | ||
| autrijus | it may be blasphemy, but I think VB9/C#3 has a better lambda syntax :) | ||
| eric256 | thanks Atrijus that helps alot. | ||
| autrijus | var => var.foo | ||
| eric256 gasps | |||
| Limbic_Region | PerlJam - *some* perl6 is likely to give eric256 a headache | 20:04 | |
| integral | hmm, that makes me think of epigram's case matching | ||
| eric256 | some perl5 gives me headaches though so thats no surprise... | ||
| gaal | we should definitely fix open :w for this release :) | ||
| (taking a look) | 20:05 | ||
| undef.say("this shouldn't print"); # does | 20:13 | ||
| (to stdout) | |||
| autrijus | easy to explain | 20:14 | |
| ?eval 12.say(34) | |||
| evalbot_7283 | 1234 bool::true | ||
| autrijus | but, of course, wrong. | ||
| gaal | Prim ops can't tell they're being invoked OOPishly? | 20:15 | |
| svnbot6 | r7284 | autrijus++ | * surprisingly, the last class-method fix cured a rule_used_in_Str bug. | ||
| gaal | hee! | ||
| autrijus | gaal: it could, it's a List thing bug. | 20:16 | |
| gaal: 1.foo(2), failing to find things, looks &foo(1:2) instead | |||
| and if &foo is *@_, it silently passes. | |||
| wolverian | where should it stop looking? | 20:17 | |
| gaal | they perhaps oughta: there's some chicanery eg in the implementation of split where it figures out which is the delimiter and which is the string. it shouldn't have to | ||
| autrijus | nod. I'm not 100% clear on this. | 20:18 | |
| gaal | how to raise a catchable exception in a Prim? | 20:24 | |
| autrijus | fail | 20:25 | |
| incidentally identical to the perl6 idiom :) | |||
| gaal | um, how to convert a ghc library fail to a catchable excption? :) | ||
| ...liftIO $ somethingThatFails | |||
| autrijus | tryIO ? | ||
| gaal | but i don't want to return undef | ||
| and i'd like to propagate the actual error | 20:26 | ||
| error message at leat. | |||
| least | |||
| autrijus | tryIO err = liftIO . (`catch` (const $ return err)) | 20:27 | |
| gaal | catch \e -> fail e ? | ||
| autrijus | so maybe | ||
| import try from System.IO.Error | |||
| v <- liftIO $ try action | |||
| case v of | 20:28 | ||
| Left err -> fail (show err) | |||
| Right .... | |||
| that looks most portable. | |||
| improvise :) | |||
| gaal | okie, thanks. | ||
| autrijus | np :) | ||
| actually. | 20:29 | ||
| I wonder if our liftIO should get that automagically. | |||
| a bit extreme maybe. have a new "doIO" form? | |||
| doIO :: (MonadIO m) -> IO a -> m a | 20:30 | ||
| anyway, do as you see fit :) | |||
| gaal | I was thinking of something like that, yes, because eventually we'd want these things to turn into a p6 fail | 20:33 | |
| autrijus | and it's good practice anyway | 20:35 | |
| gaal: so, let me check in this fix and see if it kills our performance? | 20:36 | ||
| gaal | you're too fast for me autrijus :) | 20:37 | |
| how come this has anything to do with performance though? | 20:38 | ||
| autrijus | gaal: let me think about it a bit | 20:40 | |
| we'd like liftIO to automagically propagate "fail" upward | 20:41 | ||
| yet we'd like tryIO to not use that version of liftIO. | 20:42 | ||
| okay, committing | 20:46 | ||
| svnbot6 | r7285 | autrijus++ | * Guard all IO errors and promote them into Eval errors. | 20:51 | |
| gaal | whee :) | 20:52 | |
| autrijus | gaal++ # good idea | ||
| hadn't finished compilation though so not sure ifit even works | |||
| Shillo | Hullo, folks. :) | 20:53 | |
| autrijus | ugh I broke the build with that. | 20:56 | |
| fixing | |||
| fixed. | |||
| but it made things hang indefinitely. | 20:57 | ||
| clearly, bad idea | 20:58 | ||
| eric256 | is there a way to use GHC interativly? | ||
| geoffb | :-/ | ||
| eric256 | i don't see an option for that | 20:59 | |
| autrijus | eric256: ghci | ||
| gaal | maybe not make it mandatory, use another funciton? | ||
| ghci | |||
| autrijus | ghc --interactive | ||
| eric256 | thanks | ||
| gaal | doIO as you proposed originally? | ||
| joao | is there a good idea to "make test" , and try to fix failed tests? (i mean, is it a good idea to start helping? :P ) | ||
| gaal | is it hanging because something is recursively lifting? (can that make sense?) | ||
| dduncan | seen mugwump | 21:00 | |
| jabbot | dduncan: mugwump was seen 35 days 16 hours 43 minutes 20 seconds ago | ||
| gaal | joao: of course! :) | ||
| joao | t/builtins/arrays/shift............................FAILED test 27 | ||
| Failed 1/27 tests, 96.30% okay | |||
| autrijus | gaal: I'm going with "guardIO" | ||
| compiling, will checkin shortly | 21:01 | ||
| joao | How do I know which is test 27? :P | ||
| autrijus | joao: oh, definitely | ||
| joao: 1/27 so it's the last test. | |||
| gaal | joao: you can use `prove` with pugs, and then in verbose mode it prints a line number. | ||
| autrijus | joao: if you made "make smoke" instead you'll see the line number. | ||
| gaal | you'll need: | ||
| export HARNESS_PERL=./pugs | |||
| joao | hmmm | 21:02 | |
| gaal | export PERL6LIB=blib6/lib | ||
| svnbot6 | r7286 | autrijus++ | * tryIO is also used in Main.hs. My bad. | ||
| gaal | and then | ||
| prove -v t/builtins/arrays/shift | |||
| .t | |||
| joao | oh, thank you gaal :) | ||
| do you recommend any test for me to start? | |||
| gaal | as autrijus said, you can run everything automatially with `make smoke`, this even creates one of those pretty matrices you can send off to the smoke server so that everybody sees your results. | 21:03 | |
| Shillo | autrijus: Hey, a friend (and a coworker) of mine were in ICFP. He said he saw you in the hall and was too intimidated to even say hi. That after all my raving about Perl6/Pugs at work. ;) | ||
| joao | (i don't know much about testing, but it seems a good place to start: I learn how to test and I have defined things to try to do in pugs :) ) | 21:04 | |
| gaal | joao: well, we're mostly in release engineering mode now, so we're doing housecleaning, looking over all failing tests and marking them either as bugs or as pending features | 21:05 | |
| autrijus | Shillo: aw. :) | ||
| joao: you can just start with the shift one | |||
| gaal | this isn't quite getting into pugs internals, but think of it as getting up to date :) | 21:06 | |
| autrijus | joao: we are ni release-engineering phase | ||
| so that last test is likely not a regression | |||
| but something pugs does not yet support | |||
| joao | I'll start practicing at least, so that I can be more useful in the future :) | ||
| autrijus | joao: in fact, make sure you have a recent enough version. | ||
| as I distinctly remember I've TODO'ed it. | 21:07 | ||
| one of the thing about pugs development is that builds have a half life of about 10 minutes ;) | |||
| Shillo | autrijus: From his description, my first association was 'Leader of the bad guys in a kung-fu movie' :) | ||
| gaal | autrijus: build still failsforme | 21:08 | |
| joao | autrijus: it's recent | ||
| r7283 | |||
| Shillo tries to svn up and build... | 21:09 | ||
| autrijus | joao: okay | ||
| Shillo thinks it through and first updates parrot. | 21:10 | ||
| I'll see about building with embedded parrot-0.3.0 | |||
| leo__ | wait a bit w parrot | 21:11 | |
| Shillo | leo__: Okie. | ||
| autrijus | Shillo: I wonder why "bad guy" :) | ||
| leo__ | 2 mins or so - just fixing compile bugs | ||
| Shillo | autrijus: His description was: tall, imposing Asian guy with a long hair. | 21:12 | |
| svnbot6 | r7287 | gaal++ | some more TODOs | ||
| Shillo | autrijus: Think the guy at the end of Azumi. Or Sephiroth. :) | 21:13 | |
| autrijus | joao: okay, my :todo of that test is troublesome | ||
| joao: look at the test at line 76 | |||
| joao | I thought all asian bad guys had mustache | ||
| autrijus | you'll see that the :todo should be in the parens | ||
| Shillo | leo__: Ick. Been fixing the compile bugs at work the whole day. Just the phrase 'compile bugs' makes me jittery. :) | ||
| gaal | that's a lot of mustaches | 21:14 | |
| autrijus | same applies to other tests in that directory: try "should not work on scalars" | ||
| joao | hmm | ||
| autrijus | grep it there and fix it for me please :) | ||
| joao: got a committe rbit? | |||
| if not, your email? | |||
| joao | autrijus, i do i do | ||
| joao grins | |||
| autrijus | ok :) | 21:15 | |
| joao++ | |||
| then, also fix AUTHORS so it has your name | |||
| joao | if I actually do something cool, in the future, yes | ||
| eric256 | HEHEHEH.../me just compiled his ver first hskel program. and feels like a kid at christmas | ||
| Shillo | leo__: 9340 built without problems. :) | 21:16 | |
| joao | autrijus, there are three ":todo<bug>" related with "should not work on scalars" , is that it? | ||
| "you'll see that the :todo should be in the parens" <- what do u mean? | 21:17 | ||
| kolibrie | eric256++ # learning haskell | 21:18 | |
| svnbot6 | r7288 | autrijus++ | * guarded liftIO is now guardIO. | ||
| autrijus | joao: it should be | ||
| is(foo, bar, "desc", :todo<bug>) | |||
| but I made it | |||
| is(foo, bar, "desc"), :todo<bug> | |||
| eric256++ | 21:19 | ||
| joao: nah, you belong in AUTHORS the second you pointed out the test error :) | |||
| leo__ | Shillo: parrot builds, yes, but generating libs fails as well as tests (the former after realclean) | 21:20 | |
| leo__ comitting | |||
| Shillo | Oh. Right, I didn't do make clean. | 21:21 | |
| Hmm, in one thing, Haskell and C++ have exactly the same problem. Build times. | 21:22 | ||
| gaal | Shillo: when in a rush, `make unoptimized` | ||
| autrijus | Shillo: hugs has no such problem :) | 21:23 | |
| gaal | in a rush to build anyway. it doesn't pay off if you need to run the thing you builtt ;-) | ||
| autrijus | but it's good for "it compiles, let's ship it" mode. | ||
| Shillo | autrijus: True. :) | ||
| autrijus | gaal: it's annoying that build-without-prelude doesn't work for rx_ macros | ||
| putter is responsible for that, I think | 21:24 | ||
| but it means preludeless cannot participate in testing | |||
| as it's too late for macro time | |||
| probably a post-release issue. | |||
| gaal | who was it that wanted to hack on pugs to return inlined source prelude? | ||
| Shillo | I guess I got really jaded at work today. | ||
| gaal | eric256! that was you! :) | ||
| eric256 | and anyone on windows without like a gig of memory can't compile prelude ;( (/me speeks of his own issues) | ||
| Shillo | 5M lines of code. 10 platforms. 3 active branches. 1 build master. | ||
| eric256 | gall, that was me. hince the learning of haskel | ||
| gaal | eric256++ # metooing | 21:25 | |
| what has 5MLOC? | |||
| autrijus | gaal: Shillo's $job | ||
| gaal | oh. that's a lot. largest project i saw up close was just under half that. | 21:26 | |
| Shillo | gaal: I won't go on about the FORTRAN bits. :p | ||
| gaal grins | |||
| so i won't go into the XML parts :) | |||
| Shillo | C, C++, FORTRAN, Python, Scheme, XML, XSL. | 21:27 | |
| leo__ | Shillo: parrot r9341 is in | ||
| Shillo | Mind you, developing it is a lot more fun than building it. :) | ||
| Problem, some developers have too much fun. :p | |||
| Shillo tries make realclean this time... | 21:28 | ||
| leo__: When I set cxx, it doesn't assume that I want linker to be the same. Took me a couple tries. | 21:29 | ||
| autrijus | gaal: is the build building for you? | 21:30 | |
| I havn't really put guardIO to use | |||
| so if it hangs I wouldn't know | |||
| leo__ | Shillo: you have to set --link too, and --ld (iirc) | 21:31 | |
| Shillo | Yeah. Set --link, but it didn't gripe about --ld. | ||
| leo__ | put that will be resolved soon | ||
| Shillo | Well, errr... | ||
| I'm running in pre-beta Ubuntu Breezy. c++ isn't symlinked. Neither is g++. :) | 21:32 | ||
| leo__ | --cxx= # the 4th one ;-) | ||
| Shillo | parrot built successfully. :) | ||
| svnbot6 | r7289 | autrijus++ | * chases Parrot-side changes of s/isnull/if_null/g | 21:33 | |
| Shillo | 'consider using make unoptimized instead' Funny. :) you didn't just commit it, did you? :) | ||
| (or did I just fail to notice it?) | |||
| autrijus | Shillo: I shall notice that no-one really read Makefile.PL messages :) | ||
| eric256 | . operator is interesting in haskel. | 21:34 | |
| gaal | autrijus: yes, i'm converting some prims to guardIO | ||
| autrijus | "make unoptimised" and "make unoptimized" both works for some time now. | ||
| eric256: indeed, it's interesting in math too | |||
| Shillo tries, with timing... | |||
| joao | eric256, function composition? | 21:35 | |
| gaal | Shillo: if you *always* or almost always need one over the other then vi config.yml | ||
| autrijus: should i avoid %s,liftIO,guardIO,g in Prim? You mentioned a possible perf hit? | 21:37 | ||
| nothingmuch | Richard Gere just taught me that old people can also have fun | ||
| joao | what is the nationality of fglock? (did my xchat translated the quit message?) | ||
| autrijus | broquaint: you are quite crazy. er, "inspired". | ||
| nothingmuch | i'm shocked | ||
| joao | nothingmuch, heh :) | 21:38 | |
| autrijus | gaal: I don't know, need measurement, I wouldn't oppose to that. | ||
| nothingmuch crashed on his mom & sister watching this new movie where he is miserable, but then learns dancing | |||
| anyway, time to bike | |||
| err, the verb is actually cycle, right? | |||
| autrijus | broquaint: I think Params::Named would work nicely | 21:39 | |
| gaal | "sweat" i think | ||
| nothingmuch | seen stevan | ||
| jabbot | nothingmuch: stevan was seen 8 hours 28 minutes 26 seconds ago | ||
| nothingmuch | phooey | ||
| Shillo | 4 minutes. Not too bad. :) | 21:40 | |
| eric256 | hehe the factorial function in haskel makes perl seem brutish... ;) | ||
| autrijus | ?eval { $_ ?? $_ * &?SUB($_-1) !! 1 }.(10) | 21:41 | |
| evalbot_7288 | Error: No compatible subroutine found: "&?SUB" | ||
| autrijus | ?eval { $_ ?? $_ * &?BLOCK($_-1) !! 1 }.(10) | ||
| evalbot_7288 | 3628800 | ||
| Shillo | ?eval [*] 1..10 | ||
| evalbot_7288 | 3628800 | ||
| autrijus | ?eval 3628800 | ||
| evalbot_7288 | Code to eval exceeds maximum length limit. | ||
| autrijus | er wha? | 21:42 | |
| Shillo | :) | ||
| autrijus | is that a cruel joke? | ||
| eric256 | its a funny joke thats for sure | ||
| joao | lol! | ||
| autrijus | ?eval 10 | ||
| evalbot_7288 | 10 | ||
| autrijus | ?eval 1000 | ||
| evalbot_7288 | Code to eval exceeds maximum length limit. | ||
| joao | ?!? | ||
| eric256 | LOL | ||
| joao | ;) | ||
| ?eval 666 | |||
| evalbot_7288 | Code to eval exceeds maximum length limit. | ||
| joao | ?eval 665 | ||
| evalbot_7288 | Code to eval exceeds maximum length limit. | ||
| Shillo | Number in numeric context is /not/ its string length? :) | ||
| joao | ?eval my $x = 1000 | 21:43 | |
| evalbot_7288 | \1000 | ||
| Shillo | ?eval "1000" | ||
| evalbot_7288 | '1000' | ||
| Shillo | ?eval _+"1000" | ||
| evalbot_7288 | Error: No compatible subroutine found: "&_" | ||
| autrijus | ?eval 01000 | ||
| Shillo | ?eval +"1000" | ||
| evalbot_7288 | Error: unexpected end of input expecting octal digit 0100 is not octal in perl6 any more, use 0o100 instead. | ||
| 1000.0 | |||
| autrijus | ?eval 0o1000 | ||
| evalbot_7288 | Code to eval exceeds maximum length limit. | ||
| Shillo | ?eval +1000 | ||
| evalbot_7288 | Code to eval exceeds maximum length limit. | ||
| Shillo | ?eval 1000 | 21:44 | |
| evalbot_7289 | Code to eval exceeds maximum length limit. | ||
| eric256 | can the argument list of a haskel function have a comparison? factorial <1 = 0l; -- ? | 21:45 | |
| joao | no | ||
| autrijus | sorry, but I had to: | ||
| ?eval 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | |||
| evalbot_7289 | Error: unexpected "x" expecting "\\", "$!", "$/", "$" or "'" | ||
| autrijus | something's very wrong with this bot. | 21:46 | |
| eric256: sure, easily | |||
| factorial x | x < 1 = 0 | |||
| joao | autrijus, not in the argument list | ||
| :) | |||
| autrijus | joao: I wouldn't argue whether the guard is part of the arglist :) | ||
| joao | I don't consider it :) | 21:47 | |
| f x y z | x > 1 = 0 | |||
| x y z is the arg list | |||
| ;) | |||
| imo | |||
| eric256 | since /me doesn't know what a gard is ...but assumes is the part after the | and before the = | ||
| autrijus | eric256: yup. | ||
| joao | eric256, yes | ||
| gaal | eric256: www.cs.uu.nl/~afie/haskell/tourofsyntax.html | 21:48 | |
| justatheory | seen autrijus | ||
| jabbot | justatheory: autrijus was seen 1 minutes 29 seconds ago | ||
| svnbot6 | r7290 | autrijus++ | * bytes($code) > 500, not bytes($code > 500), I'd say. | ||
| eric256 fears that link for now...too much information this early could be bad for my head ;) page 41 of a 198 page tutorial hehe | 21:49 | ||
| gaal | hee | ||
| eric256: it's a great reference to have handy; it's a tool not a tutorial. | 21:50 | ||
| Shillo | ?eval { {$_.(5)}.(&?CALLER_CONTINUATION) }.() | 21:51 | |
| evalbot_7290 | Error: Undeclared variable: "&?CALLER_CONTINUATION" | ||
| Shillo | ?eval say { {$_.(5)}.(&?CALLER_CONTINUATION) }.() | ||
| evalbot_7290 | <SubBlock(<anon>)> Error: cannot cast from VBool True to Pugs.AST.Internals.VCode (VCode) | ||
| Shillo | Ah. Got a bug. : | ||
| eric256 | i bookmarked it for reference. thanks gall | ||
| sorry. gaal. i keep doing that | |||
| Shillo | (aside from the fact that I should've said say do {...} | 21:52 | |
| gaal | no worries, eric :) | 21:53 | |
| eric256 | i shoulda learned haskel while still in high school. this would have made math class ridiculously easy. lol. mathematical functions seem to map seemlessly into haskell | 21:54 | |
| autrijus | eric256: it's said to be the interface between academics and computers. | 21:55 | |
| joao | here we learn haskell in the first year | ||
| gaal wonders when Casio'd start making calcs with ghc on them... | |||
| Shillo | autrijus: I always thought that was whiteboard and a graduate student. ;) | ||
| eric256 | i'd never even heard of haskell before pugs came aroung | ||
| gaal | RAM would need to egt cheaper first. | ||
| autrijus | Shillo: Haskell is a conspiracy organized by a make-graduate-student-obsolete committee | 21:56 | |
| Shillo | gaal: What do you mean, my phone has 20 megs, expandable to 300 megs. :) | ||
| gaal | Shillo: if you expand it to its maximum you might be able to make unoptimized with no precompilation :) | 21:57 | |
| joao | after a code change, is "make" recommended ? | ||
| autrijus | joao: code, as in "src/", then yes | 21:58 | |
| if just in "t/", no need to bother. | |||
| joao | i'm playing around with src/ | ||
| and "make" is too slow :( | |||
| Shillo | ?eval say sub{1}.() | 21:59 | |
| evalbot_7290 | <SubRoutine(<anon>)> Error: cannot cast from VBool True to Pugs.AST.Internals.VCode (VCode) | ||
| autrijus | "make unoptimized" | ||
| Shillo | ?eval say (sub{1}).() | ||
| evalbot_7290 | 1 bool::true | ||
| joao | that's why I've asked ;) | ||
| Shillo | Is this supposed to work like this? | ||
| joao | jsut to be sure | ||
| gaal | ?eval {1}.() | 22:00 | |
| evalbot_7290 | 1 | ||
| autrijus | Shillo: not sure... I think sub forms should bind tighter, but it's not docced iirc | ||
| Shillo | ?eval say {1}.() | 22:01 | |
| evalbot_7290 | <SubBlock(<anon>)> Error: cannot cast from VBool True to Pugs.AST.Internals.VCode (VCode) | ||
| Shillo | ?eval say {1} | ||
| evalbot_7290 | <SubBlock(<anon>)> bool::true | ||
| Shillo | ?eval true.() | 22:02 | |
| evalbot_7290 | Error: unexpected "." expecting term | ||
| Shillo | ?eval 1.() | ||
| evalbot_7290 | Error: cannot cast from VRat (1%1) to Pugs.AST.Internals.VCode (VCode) | ||
| Shillo | Actually say {...} seems to bind too tight. | 22:04 | |
| autrijus | aye | ||
| p6l it? | |||
| Shillo | ?eval sub f($x) { say $x; } f {1}.() | 22:07 | |
| evalbot_7290 | 1 bool::true | ||
| Shillo | See? Only broken for say. | ||
| autrijus | ?eval sub f(*@_) { say @_ } f {1}.() | 22:08 | |
| evalbot_7290 | <SubBlock(<anon>)> Error: cannot cast from VBool True to Pugs.AST.Internals.VCode (VCode) | ||
| eric256 | is p6 going to let you do "multi sub f (1) { 1 }; multi sub f (n) { n * f(n-1)}" ? i thought i heard something along those lines | ||
| autrijus | no, it's broken for all listops. | ||
| eric256: yes, that is specced and will be supported. not this moment though | |||
| it arguably belongs to 6.2831. | 22:09 | ||
| constraint-based typing and desugaring | |||
| Shillo | autrijus: Hmm. :) | 22:10 | |
| autrijus | Shillo: it's due to the eager scanning of arg-like constructs | ||
| autrijus ponders. | |||
| please p6l it :) | |||
| Shillo | Hmm, not sure how to pose the question... | 22:11 | |
| If anything, slurpy scan should bind looser than normal scan, no? | |||
| autrijus | hm, but the problem is that block is parsed before normal ops | 22:13 | |
| consider | |||
| foo:{...}.(); | |||
| would you think the :{} belong to foo first? | 22:14 | ||
| if so, our parsing need to ignore block form for the first parts (before colon) | |||
| anyway, it's tricky | |||
| Shillo | Well... I tend to think of '.' as VERY sticky glue between its two sides. | ||
| autrijus | I think I agree with you | 22:15 | |
| but I'd like it reviewed and codified as a test :) | |||
| Shillo | I'd think f{...}.() should push {} towards f. f {...}.() shouldn't? | ||
| autrijus | I don't really know :-/ | ||
| I don't think whitespace matters here | |||
| but that just be me. | |||
| s/just/may just/ | |||
| joao | autrijus, what desc do I put for dies_ok(foo,'desc',:todo<bug>); ? | 22:24 | |
| gaal | "foo raises an exception"? | 22:25 | |
| Shillo | Sent to p6l. :) | ||
| joao | gaal, I've just put the ')' in its place O:) | ||
| "embarrassing commit" ? | |||
| joao smiles | |||
| gaal | "fix test" is fine | ||
| and no commit is too small ;) | 22:26 | ||
| joao | :) | ||
| autrijus | Shillo++ | ||
| gaal | I've got a guardIO patch pending but I want to see it pass a few tests before I commit. | 22:27 | |
| autrijus | joao: "fix bad autrijus's bad bad typo in TODOing array tests" | ||
| or something like that. | |||
| gaal: sure | 22:28 | ||
| joao | autrijus, heh :) better not :) fix typo in array tests sounds cool.. i am just looking for my passwd O:) | 22:29 | |
| autrijus, have you ever cleaned users from the rt? | 22:34 | ||
| joao smiles | |||
| I can't find my username in the rt.. | 22:35 | ||
| I guess you'll have to send the email again | 22:36 | ||
| gaal | joao: what was your username there? | 22:37 | |
| joao | gaal, joao and I think I forgot to activate it back in July.. so I activated it now | 22:40 | |
| gaal, I can't see me in the list, though | |||
| autrijus | that's fine. your uid is joao? | ||
| joao | yes | ||
| Shillo | G'night, all. | 22:41 | |
| autrijus | joao: log in once? | ||
| joao | Unverified account. Please verify your account first. | 22:42 | |
| After my verification... | |||
| weird | |||
| autrijus | weird. | ||
| a sec. | |||
| eric256 | hmmm. either the person who wrote this example never ran it....or i'm missing something....(probably the later) | 22:43 | |
| joao | You are now a registered user on OSSF, the online development environment for Open Source projects. | ||
| You are now a registered user on OSSF, the online development environment for Open Source projects." | |||
| ooops | |||
| sorry | |||
| :( | |||
| autrijus | np... fixing | 22:44 | |
| joao | thank you :) | ||
| sorry to bother | |||
| svnbot6 | r7291 | gaal++ | Use guardIO where applicable. Some Prims are using boolIO still, need | 22:46 | |
| r7291 | gaal++ | to spec their return values? | |||
| eric256 | "test.hs:19:8: parse error on input `doGuess'" any idea what i should be looking for? | ||
| gaal | eric256: nopaste? | 22:47 | |
| eric256 | whats that url again? | 22:49 | |
| gaal | [ot] anyone know how to make the tab bar in FireFox use two rows? I've got lots of open tabs and the rightmost ones are getting hidden | ||
| perlbot nopaste | |||
| perlbot | Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel> | ||
| pasteling | "eric256" at 66.102.136.70 pasted "Haskell tutorial code" (23 lines, 526B) at sial.org/pbot/13459 | ||
| eric256 | if i comment out lines 19 and 22 then all works well | 22:50 | |
| never mind...turns out haskell cares about whitespace | |||
| that probably should have been mentioned somewhere | 22:51 | ||
| ;) | |||
| eric256 scans up the tutorial and finds the important wording in a paragraph he skipped. lol | |||
| gaal | it does indeed. it's called layout. very annoying at first :) but it's great for golf. | ||
| eric256 | i wondered how it knew where my do was ending...but i figured it must be smart. lol | 22:53 | |
| svnbot6 | r7292 | joao++ | Fix typo in array tests | 22:56 | |
| autrijus | also, layout is optional. | 22:57 | |
| GHC internals, for example, uses braces and semicolons. | |||
| gaal | not when reading existing code :) | 22:58 | |
| autrijus | do { x <- blah; foo; y <- bleh; return baz } | ||
| replace <- with = and it looks clearly procedural :) | |||
| joao | replace do by >>= and i call you insane ;) | 23:00 | |
| autrijus | GHC uses `thenM` | 23:01 | |
| which is far more insane :) | |||
| gaal | it should use `ohAnd` | ||
| joao | :) | ||
| gaal is still tracking down the problem with open | 23:02 | ||
| svnbot6 | r7293 | autrijus++ | * add JOAO to AUTHORS as he is too modest to do it himself. :D | ||
| autrijus | I think `byTheWay` works too | ||
| joao | r7294 | joao++ I * remove JOAO from AUTHORS and kick autrijus :) | 23:03 | |
| perlbot | What kind of idiot karmas himself? Your kind of idiot! | ||
| autrijus | rofl | ||
| I need to sleep, though | |||
| journal up. see ya tomorrow :) | 23:04 | ||
| joao | you don't sleep, remember? | ||
| :) | |||
| autrijus | beg your pardon, I may code in my sleep, but I still sleep | ||
| autrijus waves & | |||
| joao | :) | ||
| autrijus | :)) | ||
| joao waves | |||
| gaal | night A | 23:05 | |
| dduncan | night B | 23:27 | |
| joao | + | 23:37 | |
| ----------------- | |||
| gaal | hmm, out of wakies myself. see you later! | 23:39 | |
| zzZZZ & | |||