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