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 &