Run Perl6 Now! & pugscode.org ('Overview', 'Journal') & pugs.kwiki.org & channel log: xrl.us/e98m & < autrijus> damn, my journal keeps getting obsoleted by #perl6.
Set by Juerd_ on 12 March 2005.
stevan nothingmuch: does that fact example work? 01:17
if so, you should put in examples/fp.p6
and even if it doesnt work you should do that anyway :)
Alias_ officially nicknames Larry's idea of o.method and c.something "The OC" 01:48
I think naming that feature after a bad soap oddly appropriate 01:49
Odin-LAP Heh. 01:51
It's an interesting idea, though.
Alias_ "So if I want to call a normal public method, I use .method ... or $_.method ... or o.method?" 01:52
Khisanth hrm why not just method;? 01:53
kolibrie stevan, wondering if my patch for logging test output got to you 01:54
Alias_ Khisanth: method; is a function
Khisanth .method too? 01:55
chip anybody live know the parameter syntax well?
Alias_ Well $_ would still refer to the invocant, and .method is $_.method
unless $_ is no longer the invocant
chip it's not
Alias_ what?
jabbot Alias_: what is the name in From: ? :)
Alias_ when did $_ stop being the invocant? 01:56
speaking of which, 1 minute until 11111111111
err... two minutes
Odin-LAP This is coming up on every damn channel. ;)
Alias_ heh 01:57
Alias_ imagines Freenode exploding as a trillion messages hit the server at once
kolibrie anyone know how to specify in the Makefile.PL an environment variable to be set before running tests 01:59
markstos kolibrie: maybe: $ENV{MYVAR} = 'foo'; ? 02:12
kolibrie well, that would set it while Makefile.PL runs 02:13
I want it to set something when make itself is running
I'll check back in later, in case anyone knows 02:18
Alias_ Can someone tell me what "huffmanwise" means in language design context? 02:25
Odin-LAP Alias_: Often-used things should be short. 02:27
Alias_ So when people prefer .method as $_.method over .method as $self.method, the assumption is that $_.method is more common than $self.method? 02:28
Odin-LAP Something like that.
Alias_ Has anyone checked if that's true?
Odin-LAP How? ;> 02:29
Alias_ grep CPAN?
autrijus Alias_: well, the assumption is that, if outermost $self is called $_, $_.method is more common than $self.method. 02:34
which may or may not be true. 02:35
Alias_ We are gunna have to ditch $_ as $self
I'm not sure I see a way around it
autrijus I am already firmly of the o camp now :)
Alias_ You know o is just a workaround right?
autrijus hm? 02:36
Alias_ Well... it's one of three solutions
I posted my concerns to p6l
Since when did we start forcing invocant names on people
autrijus er. no. 02:37
you can call your invocant whatever way you want.
Alias_ except that it's also called o
autrijus yes.
Alias_ and do we keep $_ as $self?
autrijus my ($self, $foo, $bar) = @_;
here invocant is also known as $_[0].
not sure if it bothered anyone 02:38
Alias_ My problem is the same as with the Apache:: crap that went on
It's a workaround that makes the total solution more complex
autrijus inconsistency in style?
so. wait 02:39
Alias_ We are fixing a problem by adding something, when there's a perfectly useful and more symmetrical solution
autrijus other languages has a consistent name for invocant
"this" or "self"
Alias_ right
Except we don't, but we do
autrijus we sort of settled to $self
Alias_ It's internally inconsistant
autrijus but that is not a reserved word
it's just another variable.
Alias_ Either we _do_ have a consistant invocant, or we don't
true
autrijus So what is really wrong about have a consistant invocant of "o" 02:40
and forgetting $_?
Alias_ because we say we don't?
autrijus who says who don't? I say we do :)
Alias_ If we want a consistent invocant, why not just use $self?
autrijus or "self" for that matter
huffmanization I'd wager.
Alias_ GETTING SICK OF HUFFMANIZATION 02:41
autrijus self.refresh(self.foo() + self.bar(123))
o.refresh(o.foo() + o.bar(123))
well.
if "o" is called "self" 02:42
will that make your worries go away? :)
Alias_ If larry does the full change in direction, I'm cool with it
markstos I like 'o'. I could get used to it. I thought "$self" was strange ast first, but I got used to that.'$self' is sort of like 'that thing'. It might as well be called "o".
Alias_ markstos: It's the piecemeal nature
autrijus markstos: exactly my feeling. 02:43
Alias_ core things should be symmetrical and universal
I'm cool with o.method if we also...
autrijus Alias_: if you grep CPAN I expect you to find that $self is only used for 80% or so of people.
markstos What can be more symetrical than a circle? "o"? :)
Alias_ 1. $_ is not the first invocant
autrijus I've seen modules that uses $this, $dbh, $object
Alias_ 2. We don't need method foo ( $self: ) any more
What I'm saying is, if we are going to standardise the invocant, lets REALLY standardise it 02:44
autrijus 1. sure
2. of course; method foo ($arg1, $arg2) works
Alias_ No, lets forbid it
Because it's no longer needed
autrijus but you can always use
Alias_ "You can use $self:, but the invocant is also at 'o' still 02:45
autrijus my $self := o;
oh sure!
o always works.
Alias_ ugh ugh
autrijus even if you say
Alias_ I'd be cool without making them do 'my $self := o;'
autrijus method foo ( $inv1, $inv2 : $arg1, $arg2 ) {...}
$inv1 is still known as o 02:46
there's no way around that short of redefining &*o.
Alias_ my point is that is we are going to do 'o', lets REALLY do it
autrijus yes. yes. I 100%, no, 1oo% agree
Alias_ It's this "have your cake and eat it too" smell that mod_perl created that I hate
autrijus totally.
Alias_ "You can name the invocant anything you like, but it's o, even if you name it something else" 02:47
autrijus care to post this two points to p6l?
I need to run to $work now
Alias_: very well put.
chip um, in method foo ($x) is $x the invocant or not?
autrijus chip: no. it is the arg.
Alias_ no, it's an arg
chip OK
autrijus method foo ($inv: $x)
the : separates inv with arg
Alias_ If you want to name the invocant something other than $_, you use $invocant:
autrijus except I think it's safe to drop the $_ aliasing now. 02:48
chip So multi method pretty much has to be declared with a ":" somewhere
Alias_ That's the problem with o
There's multi-invocant methods...
autrijus o[1] ;) 02:49
Alias_ cries
Odin-LAP "have your cake and eat it too" is a defining feature of Perl.
markstos "Little O notation?"
chip the invocants should be 'me', 'you', and 'him'
Alias_ No, TMTOWDTI is the defining feature of Perl
markstos her?
autrijus it.refresh;
chip sub &her := \&him
Alias_ It's fine to have multiple ways, it's not fine to have multiple ways that are internally inconsistent and confusing
Odin-LAP Alias_: Pluralism is one, too. There's no single defining feature.
;) 02:50
chip Guys, guys. Pluralism is only ONE of our values!
autrijus I thought that feature is "Practical" :)
Alias_ People can only keep a maximum of 5 things in their heads
Context is a limited resource
Odin-LAP chip: ;)
autrijus I can do 7 (9 with caffeine)! :)
chip The smart monkeys have to stop making tools that the average monkeys can't handle
Alias_ chip++ # exactly!
rjbs chip++ 02:51
Alias_ It's the idea behind Java and python
Java is C++ that the average monkeys can handle
python is perl that the aeverage monkeys can handle
rjbs I don't know about that.
chip >>quotes
autrijus and guido is proposing to dropping map{} and grep{}
rjbs The perl that average monkeys can handle is baby talk perl.
autrijus because avgmonkey can't handle them.
not thinking that's the way to go.
rjbs "We won't laugh at you if you use baby talk." -- Larry
Alias_ rjbs: Maybe that was a bit extreme 02:52
:)
rjbs as long as baby talk exists, perl is perl
well, ok, there's more to it, but. ykwim
Alias_ Personally, I think that the forcing of second sigils is the same as python, just an odd place to do it
"We are going to force you do something, so you don't forget"
except instead of aligning whitespace, we have to specify whether we want a public or private method 02:53
autrijus you mean $?VAR ?
oh. $:foo and $.foo
rjbs It also expands the range of usefulness of the name itself.
Alias_ Can you have both?
(btw)
autrijus sure.
then the public accessor does $.foo
Alias_ oh... that's a bit different then
rjbs $ and @ in p5 don't just say "scalar" or "array" they also mean you can have a @foo /and/ a $foo, so using 'foo' isn't limited to one
autrijus you can use both internally.
rjbs right
autrijus sometimes they even may be useful. 02:54
Alias_ So now we can have 15 variables with the same name?
rjbs basically
Alias_ are there globs still?
autrijus nope.
rjbs RIP
autrijus globs are replaced with :=
ingy ola
Alias_ I'm getting scareder and scareder
rjbs ōæ½xA1Hola, ingy!
ingy hi rjbs 02:55
rjbs itym scardeder. :)
autrijus ola ingy
Alias_ Huffmanism can be bad
rjbs Alias_: but "can" and "will" are two different things
Alias_ There's a reason we don't edit zip files directly
autrijus nice to see that conway decloaked for kwid
Alias_ I also don't understand why people don't like $_.method 02:56
autrijus Alias_: the golf force and the biz force is always at a tension. :)
Alias_ true
autrijus the challenge is to find the Middle Way
Alias_ Unfortunately, the attitude of Perl 6 seems to be the biz force have no say 02:57
autrijus because making either side inconvenient means losing lots of things.
really. I thought this entire rethink of OO system was done for biz forces :)
and rules, for that matter.
Alias_ true, but the syntax is a golf-only zone
rjbs So, what's the $_.method controversy that's going on? 02:58
jabbot rjbs: 4100 ōæ½xACōæ½xFCōæ½xAAōæ½xF7 ōæ½xB5ōæ½xA5ōæ½xA9ōæ½xF3 127264 ōæ½xB7sōæ½xA5xōæ½xB9ōæ½xF4
autrijus post to p6l more and that could change :)
rjbs whether .method goes to self or topic?
Alias_ rjbs: The root problem is that $_ is being used too heavily
autrijus rjbs: aye. o.method is currently larry's solution
gotta go. & 02:59
rjbs autrijus: chau
Alias_ rjbs: $_ current is both the default $self, and the current map { $_ }
rjbs oh, that's weird.
Alias_ s/current/
dvtoo o. does have the up side of being easier to type ;p
autrijus dvtoo: that's the force of golf :)
rjbs where o returns $self?
Alias_ rjbs: So there's big problems with C< method foo () { map { .method($_) } @list } > 03:00
.method is _supposed_ to be used as $self.method, but that only works because $self is $_ by default
And now we are discovering $_ collisions
dvtoo one of those "obvious in hindsight" sort of things? 03:01
Alias_ dvtoo: We discovered it only once we started porting real world code
clkao eyes jabbot
Alias_ Algorithm::Dependency p6ification threw it up
rjbs why does .method have to mean $_.method and not $self.method by default?
Alias_ rjbs: Arbitrary decision
Rule 1
rjbs given: map { .method($_) } @list
dvtoo rjbs: that's what I was just thinking
rjbs I would expect .method to be on $self. Is there a case where someone thinks I'd intuit the opposite? 03:02
(or that many other people would)
Alias_ ta da!
rjbs: Welcome to the universal misconception
It's a newbie trap galore
Everyone has been caught by it
.method, $.attr, $:attr look the same, but arn't the same 03:03
For some reason $_.method being .method is more important than $self.method in the current view
For reasons of "huffman"
rjbs Alias_: I'm wondering, then, if there exist other code snippets where I'd say "obviously it should be $_!" for some non-$self $_
Alias_ rjbs: map { .something } @list 03:04
Is the official position
rjbs no, in that case I would /still/ expect it to be calling $self.something
Alias_ Since many more things are now methods, it's not a terrible position
rjbs and I'd assume that something payed attention to _
Alias_ In any case, there are only three ways to resolve things 03:05
rjbs I can see the huffmanization value, but personally I expect .method to go back to the object.
Alias_ me too, duncan too, autrijus too
dvtoo rjbs: possibly calling $self.something($_)
Alias_ So anyways, there are three solutions
1. Ban the use of $_ in map
rjbs ha 03:06
Alias_ The obviously $not_what_we_want one
Either $self or map {} has to go, so the obvious choice is $self
So $_ retains it's normal role
Which leaves us with...
2. Force explicit $_.method
3. Force the invocant to be a specific name 03:07
Personally, I'd rather have to do map { $_.method } @list 03:08
rjbs yes, me too
Alias_ feel free to add the me too to p6l
Unfortunately, Larry's initial choice for an explicit invocant is to NOT make the invocant explicit exactly, but to add another language feature
(unfortunate in my opinion) 03:09
So now, rather than a forced $self, we get instead the 'o' function
o.method
Except I think you can still do method foo ($self: ) {} 03:10
But o will still exist
rjbs sighs, should probably go ahead and subscribe to p6l.
one more time sink. :/
Alias_ I know 03:11
jabbot pugs - 863 - * Fixed prereq's for Perl5-Kwid 03:30
pugs - 862 - perl6 refactoring of File::Spec started
pugs - 861 - the rough conversion of File::Spec is no
pugs - 860 - more File::Spec perl6 conversions; all b
pugs - 859 - Refactored the Makefile.PL to be less in
pugs - 858 - Fix lightstep's entry.
pugs - 857 - * license info; poetry
pugs - 856 - * add Dimitry to AUTHORS for Unicode.hs
metaperl rjbs, you can get p6l via GMANE
jabbot pugs - 855 - * switch to use Dimitry Golubov's code.
pugs - 854 - substr tests
stevan metaperl: ping 04:19
metaperl hello...! 04:20
stevan hey
got a question for the junction master :P
metaperl heh
i will try
stevan so I am writing some tests for junctions which are bound to a variable
my $any_of_them = $a | $b | $c;
metaperl yes 04:21
stevan when I later change the values of $b and $c
the junction does not reflect the change
is that correct? or should the values still be bound to the variables
metaperl oh, I dont know
good question - one for p6l
stevan yeah I think do
s/do/so/ 04:22
I suppose now I *really* have to subscribe to p6l 04:23
metaperl gmane is fine for posting
stevan really
metaperl i posted via gmane
yes
stevan cool
I get way too much mail anyway
hcchien hmm...., svk pull failed for pugs repository 04:29
jabbot pugs - 864 - adding some misc. tests for junctions; n
pugs - 865 - more junction tests, this time for the . 05:09
pugs - 866 - updating the MANIFEST with the new tests 05:19
05:31 _metaperl is now known as metaperl 05:33 cnhackTNT_ is now known as cnhackTNT|away, cnhackTNT|away is now known as cnhackTNT
autrijus Alias! 06:17
Alias_: monster.bulknews.net:46984/search?q...amp;fm=all
thanks to you :)
Alias_ autrijus: What am I looking at? 06:18
autrijus a PPI-powered cross referenced CPAN search.
Alias_ ooooo
autrijus miyagawa's baby. 06:19
Alias_ written by you?
ah
I should get him a commit bit for the sf.net project
obra relation to cpanxr?
autrijus prolly not. 06:20
this one is crosslang I think
Alias_ CPANXR is massively bit-rotted
Like everything else pre-0.900
oop, and now it's down
I mighta killed it?
autrijus no, he just put up a while for us to see :) 06:21
needs more work
Alias_ ah
autrijus will be a lightning talk in YAPC::Tapei about that.
Taipei, even
Alias_ If he has any functions to extract useful values from individual classes, they need to be merged up into PPI
That was CPANXR's problem 06:22
stevan I get way too much mail anyway
Alias_ A lot of it's code needed to be sucked back in
autrijus stevan: hi :)
stevan autrijus: hello
Alias_ autrijus: Ask miyagawa is he's able to tell how many times $self->method is done in CPAN compated to $_->method
autrijus heh. :) 06:23
Alias_ autrijus: So I can convince people that .method as $self.method is a more optimal huffman coding, as well as being more $what_people_expect
stevan its what I would expect
Alias_ autrijus: And stevan makes 100% expectation 06:24
still...
It's what EVERYONE expects .method to do at first
plus, I have nightmares about people porting o.method code to use explicit invocants because it removes an additional function call and will be slightly faster
:)
autrijus uh. 06:25
it's compile time optimized away.
please don't microoptimize :) 06:26
06:26 _metaperl is now known as metaperl
stevan autrijus: what determines what $junction.pick chooses from a junction? is it just random? 06:27
autrijus or pseudorandom.
but it's "implementatino specific".
stevan ah
Alias_ So on a quantum process the results will be different 06:28
processir
ugh
stevan BTW: this does bad things 06:31
pugs -e 'any(1 .. Inf).pick'
Alias_ heh... don't tell me you can do infinite junctions?
stevan :P
autrijus you can.
and it works until you call pick()
Alias_ That is going to cause some unbelievably evil corner cases
autrijus Alias_: no. infinite data structures is a feature.
Alias_ infinite loops, infinite threads
autrijus it's something perl lacks.
I'm glad that perl6 has it :) 06:32
you won't "accidentally" get 1..Inf
unless you type 1..Inf.
stevan Alias_: pugs -e 'any(1 .. Inf).pick' is clearly insane, so I doubt it will come up much
Alias_ But imagine C< my $foo = any(1 .. Inf); $foo >>+=<< 1 ; >
autrijus Alias_: that works. 06:33
and with luck, in constant time too :)
"Perl 6 is so fast it can run infinite loops in constant time"
Alias_ or C< my $foo = any(1 .. Inf); $foo >>*= 2<< ; print "Hello World\n" if $foo % 2; >
autrijus ugh.
that will take infinite time.
stevan Alias_: pugs -e 'any(1 .. Inf).pick' is clearly insane, so I doubt it will come up much 06:34
bah
wrong window
Alias_ Like I said... way too many corner cases...
autrijus Alias_: so "don't do that".
you get the same problem with
any(1..1e999)
anyway.
Alias_ autrijus: But imagine I write a function that takes arbitrary juntions and does things to them
autrijus failing to see why Inf is somehow worse.
did I miss something?
Alias_ Anything anywhere that takes junctions as params will have to do evil checking 06:35
because it will be way too easy to fall into infinite loop traps
autrijus what is broken about Inf that is not broken about 1e999?
1e999 might as well be infinite loop.
Alias_ I guess similar issues apply 06:36
autrijus well then. ;)
Alias_ I guess perl is going to have to know which actions on junctions will be infinite, and then throw exceptions
As for 1e999, maybe that is actually needed
And you are running it on a Sun grid
autrijus right. 06:37
Alias_ Anyways, Inf math in juntions worries me
Hell, lots of things about Perl 6 worry me :(
I don't want an academic language :(
(Big Design By Unqualified Committee Upfront)-- 06:38
autrijus right.
that's what pugs comes in, though.
Alias_ If there's sufficient application of Rule 2 06:39
autrijus allowing noncomittee people to fix language design by experimenting.
oh I'm sure.
since Pugs arrived, there has been numerous cases of Rule 2.
I lost count already.
Alias_ oh good
Khisanth seems like a rather "practical" way to design 06:40
Alias_ "Design by testing"
autrijus yeah. really, larry has always said that apocalypse is just a first draft
everything is subject to change once implementation starts.
the core semantics probably stays the same
but most syntax and prim can change 06:41
Alias_ It would be nice if File::Spec changed :) 06:42
That thing is monstrously slow
running reges over and over and over again 06:43
half-assed interface
stevan Alias_: what are you envisioing?
mugwump fix it!
autrijus Path::Class?
Alias_ stevan: I've got a couple of toys
stevan the problem is it has soo much cross platform knowledge hidden in there
Alias_ What I really want is FSI 06:44
stevan FSI?
Alias_ FileSystem Interface
DBI for read or virtual filesystems
s/read/real/
stevan DBD::FileSys
Alias_ I must have implemented bastardised inline versions 5 or 6 times
I don't want a database
I want a file read/write interface 06:45
autrijus Path::Class?
Alias_ "in the style of DBI"
stevan I think Path::Class just wraps File::Spec, but the interface is better
autrijus I don't quite care it wraps what :)
as long as the interface is better.
for crazy api, see IO::All
clkao and is tested. 06:46
stevan Alias_: what do you mean by "in the style of DBI"
Alias_ The current "doing stuff with files" functionality is almost all in core language
-f
open
etc etc
There's some improvements on getting more OO for a single file 06:47
But not for an entire filesystem
mugwump Alias_: s/FSI/VFS/, I think
autrijus File::Find::Rule?
Alias_ mugwump: Yeah, same idea
File::Find::Rule is just a rule system
clkao 04:17 * ayrnieu gives up on getting svk installed.
04:33 < ayrnieu> er, OK. Neither svk nor darcs want to cooperate. Game over.
this is so 2004.
Alias_ I want to be able to $output->writefile( 'some/output/path', $content ) 06:48
clkao i thought they are both packaged here and there. no?
Alias_ And not have to care if is a local filesystem or a memory object, or WebDAV or something completely different
clkao that's in the test library of svk.
and append_file.
autrijus Alias_: er, I think IO::all works.
clkao oh, then io::all
autrijus Alias_: IO::All does all that and more :)
Alias_ IO::All can output to an in-memory Archive::Builder object? 06:49
autrijus sure if you write a plugin
that's the whole point.
see IO::All::SMB
Alias_ There is of course the problem of IO::All being a hideous interface for structured programming
jabbot pugs - 867 - junction example to illustrate the pseud
autrijus or ::SSH, or ::LWP
gaal Alias_: IO::All can implement a webserver in a one-liner. With CGI.
Alias_ Great for shorthand IO
autrijus Alias_: you can ignore the shorthand.
and use all method calls
Alias_ Regardless, IO::All is a monster :)
autrijus gaal: yeah, that was my code :) 06:50
gaal autrijus++
Alias_ Does IO::All have a ->can_create method? 06:51
Khisanth clkao: apparently subversion on openbsd doesn't want to install the perl bindings 06:52
clkao i though someone made a prot
port
gaal is there something like ccache for haskell?
Khisanth clkao: he said it didn't install them even with the options for perl enabled 06:53
Alias_ autrijus: I guess I just don't trust IO::All not to do something overly magic and go ape on me :)
gaal IO::All? Magic? Nahh.
Alias_ Plus there the whole Spiffy thing... 06:54
(which I refuse to use based on it's name alone) :)
gaal probably less need for it in p6
Alias_ I hope so
autrijus gaal: hm? haskell on -O and up uses gcc 06:55
Alias_ I still can't work out what you actually DO with Spiffy
autrijus gaal: so. same thing
Alias_: Spiffy is just a OO dialect for p5.
it's not a tool module, it's a dialect module
Alias_ and one that my brain can't grok
Anyways... I'll wait for VFS
autrijus it's all internal anyway :)
stevan nite all 06:56
gaal autrijus, so perl Makefile.PL CC=ccache\ gcc should work? Cool.
autrijus no, you have to tell GHC too 06:57
gaal errr, yes
autrijus need additional -pgmc -O~
I mean -pgmc -O
-pgmc ccache -O
-pgmc ccache -via-c
either of the two above.
mad golfer is again tarpitted 06:58
gaal autrijus, what's a clean way to communicate to ghc i want this? I want to add it to Makefile.PL, optionally of course. 07:00
autrijus I don't quite know. hrm 07:01
maybe hack "make optimized"
or hack "make ccache"
makefile not my forte
gaal well, it's not really important, and yeah, make is !@#. a clean build is two wall minutes on my linux box, though, so i thought i'd get some cheap speedup. 07:02
then again the tests are way slower than that, so it's not worth a lot of effort.
autrijus, are you using mingw? do tests run ok for you there? i am using a path /c/wks/pugs, and make works, but make test somehow gets c wks/pugs into INC instead. 07:07
autrijus I'm not using mingw. 07:08
gaal symlinks don't work in mingw, it seems ln -s is just an alias to cp :(
activeperl?
autrijus was on AP
on freebsd now
so I suspect win32 support may suffer :)
hlen autrijus, i just want to say your journal rocks.. it's great to have something to read about pugs everyday 07:09
gaal ;) i have two machines, and the faster one runs windows, so i'm tempted to use that.
autrijus hide: thanks =) 07:11
spready the word! etc
s/y// even
crysflame autrijus++ 07:18
autrijus mad golfer rescued.
jabbot pugs - 868 - * single colon following varname should 07:19
gaal what is PERLRUN and why is it undef on my mingw? (causing the build to fail)? 07:22
ah, looking at MM docs 07:23
autrijus hm. change it to PERL in Makefile.PL ?
may be an old EU::MM
I can see change it to PERL
gaal yes, that helped. can i commit or is there a chance i broke someing for other folks? 07:24
autrijus commit it please. 07:26
gaal done (whew, having to use svn from cygwin sure is confusing) 07:31
autrijus gaal++
gaal thanks :) it's just a 3*3 character patch :) 07:32
autrijus but it works :)
gaal it does that, yes :) 07:33
autrijus say 'Your lottery numbers are: ' ~ join('-', @your_numbers);
may I change this to
say "Your lottery numbers are: { join('-', @your_numbers) }";
?
gaal now to figure out why "make test" doesn't
autrijus hrm, stevan is gone.
Alias_ well... there goes another character we have to escape in quotes 07:34
And add one more newbie trap :)
autrijus Alias_: but that makes @{[]}
unneccessary.
so, net win, by any count.
Alias_ @{[]}? 07:35
gaal i get dirty looks everytime i have to explain *that*.
autrijus previously in perl5 if you want to interpolate a method call.
Alias_ oh
autrijus you have to write @{[]} or ${\()}
Alias_ WELL DON'T DO THAT
:)
autrijus I want to interpolate method calls!
lots of people want that!
Alias_ true
autrijus so, easy things are now easy. 07:36
Alias_ So now "" is closer to being a templating language than ever before
autrijus riiight.
fun eh.
Alias_ In fact... we should be able to do something ...
hmm...
Take .html, wrap it in "" and eval 07:37
instant templating system
or maybe convert <% %> to { } and escape $ and @ first
The world's most dangerous one line templating system 07:38
Alias_ bows
Darren_Duncan I just did a svn update and got an error
svn: Failed to add file 'src/Unicode.hs': object of the same name already exists
Alias_ I'm calling it IPSP
Insane Perl Server Pages
Darren_Duncan should I just delete the old file, or is this a problem?
gaal i have a feeling PERL6LIB isn't being honored on mingw :(
autrijus Darren_Duncan: rm that.
Alias_ Darren_Duncan: You on Win32?
Darren_Duncan I'm on Mac OS X 07:39
it is case-insensitive
but case preserving
by default
autrijus rm that and svn up :)
Darren_Duncan I can use an alternate filesystem that is case sensitive if I wanted to
jabbot pugs - 870 - * use {} interpolation.
pugs - 869 - PERLRUN => PERL fixes build on mingw
autrijus Darren_Duncan: no, that won't help. :)
gaal you can say "incasitive" for "case insentitive"
autrijus Unicode.hs is now part of repo, not generated
Darren_Duncan I won't anyway, I'll just rm and up
gaal and "casitivity" in general
autrijus you can say "case caring", "case understanding", "case empathetic" too 07:40
gaal case indifferent?
autrijus "alternatively case-capable" 07:41
Darren_Duncan all fixed now
gaal case closed?
autrijus cool
Darren_Duncan to be specific, the HFS+ filesystem as it has been used in the past will not store multiple files in the same directory that have the same names when brought to the same latin letter case 07:42
HFS+ can be made case-sensitive like typical unix systems, but that isn't the way it is typically installed
gaal @INC isn't updated with PERL6LIB on mingw. any hints on where i begin to fix that? 07:43
autrijus gaal: ghc 6.4?
gaal uh, i have both actually, let me check which one runs
6.4, yes 07:44
autrijus 6.4 breaks and 6.2 runs? 07:46
or vice versa?
Darren_Duncan I have an idea for a possible syntax change for references to attributes ...
autrijus oh?
gaal 6.4 doesn't honor it, let me check with 6.2
Darren_Duncan ... when using the longer form of $self.attr
I'm thinking something like $self.$:foo, $self.@:bar, $self.%:baz 07:47
this mirrors the shorter forms of $:foo etc
that way, the appropriate sigils for the variable type are always the same regardless of whether you are in short form or long form 07:48
autrijus but but that kills the occasinoally useful idiom of
$obj->$method
in p5
gaal (we need a t/run/ -- though in this case it wouldn't help because the tests won't even run)
no, 6.2.2 doesn't work with PERL6LIB either
autrijus :(
gaal actually 07:49
maybe make test is masking it.
Darren_Duncan sometimes I wonder why we bother to have @ or % at all, and don't just use $ for everything
autrijus Darren_Duncan: context hinters.
wilx Whee!
Darren_Duncan since very often arrays and hashes are only referenced with $ sigils anyway
autrijus but yes, sigilless variant is a possible dialect.
wilx I get some warning from GCC while compiling pugs.
autrijus and very possible from perl6 already
see t/Dialects/
wilx ghc6456.hc:1120: warning: implicit declaration of function `stg_hack_u_iswdigit'
gaal sorry sorry, it wasn't apugs bug, it's apparently in the rule for 'make test'.
autrijus oh ok.
wilx: platform? 07:50
wilx WinXP, GHC 6.4
Darren_Duncan yes, hinters are all nice at all ...
but say $self.abc doesn't tell you what abc is
autrijus sure. the hinting is for RHS of = and :=
not for anything else.
still, that alone may be valuable enough. 07:51
Darren_Duncan sure, you could do @:abc if its in the current object, but what if your method is dealing with two objects of the same class; the second one always has to be of the longer form to work at all
and that has nothing but $ ... not too helpful
Alias_ It does seem like some of Perl 6's complexity is backfiring
Darren_Duncan so the hints that @ and % are supposed to give can only be used maybe half of the time
autrijus sure. 07:52
larry said himself that if his native tongue is chinese 07:53
there won't be sigils.
and indeed I promised perlchina a sigilless dialect some day on perl 6 :)
(dialect = lexical module that affects parsing)
Darren_Duncan The main use I have for sigils is separating variables from methods/sub calls
autrijus aye.
Darren_Duncan it doesn't matter what type of var it is
autrijus but then we can go the ruby route 07:54
Darren_Duncan so a plain old $ is all I need
autrijus and use sigil for scope hinters.
which actually makes ~lots of sense.
secondary sigil is a compromise
to preserve both context sigils (1st) and scope sigils (2nd)
it may or may not work out.
Alias_ How does sigils screw up chinese?
autrijus Alias_: chinese has no plural form. 07:55
Alias_ And that is a problem because?
@foo is illogical?
autrijus yup.
the brain just doesn't work that way.
Alias_ So how does Chinese deal with the concept of many?
autrijus list $foo
basically. 07:56
Alias_ map/grep/sort must be really icky then
autrijus i.e. it is a prefix or suffix, not part of the noun
Alias_ Maybe that's why guido is killing them
autrijus heh no :)
guido was killing them because they are lambdas.
Alias_ Time to act like a professor and tell Mr Symbolic concept here what that means 07:57
I probably know what it is
Just not the definitions
autrijus I gotta run :) 07:59
bbiab
Darren_Duncan In a re-reading of S02, it says that the use of @ or % vars in a scalar context automatically produces a reference ... 08:01
Was it decided for sure whether 'return' gives a scalar context or a list context?
autrijus it propagates context of caller. 08:02
same as p5.
&
Darren_Duncan is that a good idea? 08:08
Autrijus, thanks for your answer. I guess that is a good idea, and so I have no more questions. 08:11
I think I know now how to handle whatever I need to do. 08:12
08:21 cnhackTNT is now known as cnhackTNT|away 08:44 cnhackTNT|away is now known as cnhackTNT
jabbot pugs - 871 - Two Locale::KeyedText updates: 1. Remove 08:49
Darren_Duncan I think with this new change my attr/arg/var declarations will be more like the format that most people use 08:50
re the checkin
most of the 'is' are gone now
I'm also doing "return [@abc[]];" to explicitly make a ref containing a copy of the flattened list variable in my getter methods; I think that is actually correct syntax for once 08:52
Juerd Ehm 08:53
Isn't that just [@abc]?
Darren_Duncan perhaps 08:56
Actually, the [] suffix was for flattening in a scalar context
The question is whether the surrounding [] creates a list context or not
gaal in p5 it does 08:57
Darren_Duncan So, in Perl 6, how do you create a new array ref containing a single-element that is a reference to @abc?
gaal [ \@abc ] doesn't work?
Darren_Duncan What synopsis mentions \ ? 08:58
checking ...
gaal that's p5 syntax, but i think it should work there too.
Darren_Duncan S03 seems to mention \ once, at the start of "List Flattening", so I'll take what you said as being right 09:00
for some reason, I've been thrown for a loop this last week
all caught up with the idea that Perl 6 removes distinctions between refs and non-refs 09:01
gaal [roo@sike:~/src/pugs 127] > ./pugs -e 'my @abc = (1,2,3); [\@abc].perl.say'
(1, 2, 3)
doesn't look too hot.
Darren_Duncan I think I'll take a step back and assume that anything in perl 5 is valid syntax unless I explicitly know otherwise
so, issuing a correction ...
09:05 cnhackTNT_ is now known as cnhackTNT
Darren_Duncan correction committed 09:07
now it says "return [@abc];", or more specifically, "return [$self.abc];" 09:08
jabbot pugs - 872 - LKT - Yet Another Get Method Fix 09:09
Darren_Duncan goodnite 09:16
gaal night
metaperl marcus, are you a Catalyst user/author? 09:34
marcus nope
metaperl oh, different marcus
marcus might be 09:35
metaperl Marcus Ramberg
10:06 cnhackTNT is now known as cnhackTNT|away
dada hola 10:14
gaal hello, dada 10:15
masak hi, dada 10:18
clkao www.guruischool.com/index.jsp?s=goo...id=C3-3-29 10:59
hmm perl courses
Jonathan_ autrijus: I got my account, thanks for the invite. ASCII hyper-ops are in.
metaperl stevan, ping? 11:04
autrijus Jonathan_: yay! 11:21
Jonathan++
gaal autrijus, hey. i traced the mingw 'make test' problem to things in ext/ not installing into blib6, but rather to their own ../../blib, but i don't know why this is. maybe because i'm using mingw's perl5.6 and its old makemaker? 11:22
autrijus that may be the case. 11:23
what version of MM did you have?
gaal 5.45
unfortunately i had no luck building a 5.8 of my own under mingw 11:24
autrijus hrm.
try upgrading MM? 11:25
gaal on the linux box ther's 6.15, which is reasonably new; also perl 5.8 and no problems.
autrijus if only just to make sure it's MM prob
gaal well, the windows box dosn't like CPAN
so installing modules that have deps is a royal pain
i'll try and get to it.
autrijus nice. 11:26
gaal however, lunch with friends and later family stuff, so ta ta for now! 11:27
autrijus :) 11:30
enjoy
gaal thanks! bye.
gaal &
autrijus slurp() is in. 11:38
mad golfer++
jabbot pugs - 875 - * slurp() primitive 11:45
pugs - 874 - Add me to the AUTHORS file.
pugs - 873 - Add ASCII versions of hyper operators an
theorbtwo Woo, somebody actually added themselves to the AUTHORS file so I don't have to! 11:47
Jonathan_ :) 11:49
autrijus =) 11:50
so, I'm devoting the rest of tonight hacking thunking in 11:51
that will make := actually work.
INFOTHEK jzst installed Pugs, really great, congrats to all of you! :) 12:01
but know i will own this channel
VERSION
PING 12:02
FINGER
VERSION
VERSION 12:03
flood
INFOTHEK he
XXX
GOTO google.com/!!!
CRSH
CRASH
PING
theorbtwo INFOTHEK, could you please stop that?
INFOTHEK no i wont muahaha
cu guys, youz atre lrella leet 12:04
12:05 ChanServ sets mode: +o autrijus, INFOTHEK was kicked by autrijus (one and the only warning.))
autrijus thank you. 12:06
was wondering how long it will be from the slashdotting to this.
12:20 autrijus sets mode: -o autrijus
nothingmuch hola! 12:23
autrijus yo!
nothingmuch give me something to do
i feel unused
and have been thusly all week 12:24
theorbtwo Hey, nothingmuch!
nothingmuch hola, theorbtwo
Khisanth nothingmuch: convert all of CPAN :p 12:27
nothingmuch Khisanth: beh
but ok 12:28
autrijus hey nothingmuch.
nothingmuch a bit at a time
autrijus there is some unexpected successes from tests. unTODO them? :)
if you are looking at src/ side, may implement given/when? :)
nothingmuch given? ook... do we have smartmatch?
autrijus also, what about the cataloging script?
the stubbed one, sure 12:29
just use App "&infix:~~"
nothingmuch beh
what needs to be done to the catalogging script?
i'll untodo
then catalog
then do some cpan
autrijus :)
I need dinner.
will be back in abit
nothingmuch and then maybe we can talk about given ;-)
nothingmuch puts on the Hair soundtrack 12:31
Makefile:54: *** missing separator. Stop. 12:53
anybody getting this?
latest EU::MM
rhel 3 linux, stock perl (probably the problem)
autrijus what is line 54? 12:56
nothingmuch ^sit$
there's lots of completely screwed up lines elsewhere,
partial strings
VAR = foo'
and so on and so forth 12:57
and it has worked before
autrijus that is completely mangled.
clean and make again?
nothingmuch rm -rf pugs 12:58
complete fresh svn co
still persists
autrijus that is the main Makefile?
put it somewhere I can d/l?
nothingmuch all 3
main, ext/{Test,Pugs-MakeMaker}
hold on, i'll find the R which broke it 12:59
svn trackdown would be fun
autrijus fed the nontrolls on /. 13:01
mad golfer++
# www.perlmonks.org/?node_id=440685
nothingmuch what is the latest revision? 13:02
autrijus r876? 13:03
nothingmuch ok
thanks
autrijus np 13:04
nothingmuch appearantly it starts at r860 13:05
wait, no
859 13:06
autrijus "Refactored the Makefile.PL to be less insane. 13:08
"
not very surprising :-/
nothingmuch hah
autrijus care to track it down a little?
nothingmuch i don't know mm 13:09
what would it constitute doing?
gaal heavy drinking. 13:10
nothingmuch . o O ( peace! flowers! freedom! happiness! )
gaal: uhm
gaal *beads* flowers freedom happiness
nothingmuch oi vey
autrijus nothingmuch: first post your Makefile?
nothingmuch i always heard it as 'peace'
oh, right, autrijus
oh well, you learn something new every day =)
gaal++ 13:11
gaal too is doing mm stuff now (mingw)
though apparently i managed to break my sysem mm install while upgrading to the latest version :(
what provides prove? i don't have it? 13:12
test::simple?
nothingmuch gaal: Test::Harness or a newish perl
nothingmuch.woobling.org/Makefile
gaal thanks, nuffin. 13:13
oh, *crap*, now i can't install anything because i b0rked my mm!
nothingmuch haha 13:14
gaal here comes the perl reinstall, which means an msys reinstall because it's not packaged seperately :()
nothingmuch why? just copy mm.pm from someone else
get it sort of working
and then reinstall it to be sure
and put your working copy in $PERL5LIB next time ;-) 13:15
autrijus nono
nothingmuch plus, i think eu::mm bootstraps
autrijus MakeMaker can installt iself
you don't need old MM to install a new MM.
nothingmuch mb does that, that much I know
gaal autrijus, does PAR still want a pure perl deflate?
autrijus gaal: we got one.
too slow to be useful.
not sure that it can be made faster. 13:16
the goal now has shifted to push Compress::Zlib into core.
rgs: is it core? will it be core? :)
gaal perl6 should definetely come with par
autrijus gaal: try pugscc?
nothingmuch implemented LZW in perl once
autrijus it is my par in perl6 :)
nothingmuch to try and understand what it does
rgs autrijus: need to ping kane about this.
he's busy with real work currently.
autrijus oh? he's supposed to come up with patches? 13:17
nothingmuch gaal: i think par type behavior is planned to be taken care of by parrot jiting code
autrijus okie.
nothingmuch packaged by the compiler
autrijus nothingmuch: actually no... dependency scanning
rgs but yes, there are chances Compress::Zlib will be core in 5.9.2
autrijus is still something that needs to be done
gaal i <3 par not necesarily because it gives an entry point
autrijus and there's no easy way to scan it without user annotations etc.
gaal "self contained exec"...
nothingmuch who was it that added ascii hyper? 13:18
gaal typically i have a reasonable perl, but i'm missing modules
autrijus nothingmuch: Jonathan
Jonathan_ nothingmuch: Me...
I broke something, huh?
nothingmuch no, just mentioning thanks in the ci log =) 13:19
gaal par's a boon for deployment
nothingmuch oh crap
autrijus thank-you. I'm so happy that Alan Stewart has been taking care of PAR when I'm massively distracted.
nothingmuch puter upstairs is broken
autrijus I'm supposed to get PAR 0.80 out by now :-/
nothingmuch has to go fix... ciao!
autrijus but. well.
gaal yeah :)
Jonathan_ Ah, phew. I really should learn Haskell properly at some point... 13:20
Dropped by the college library hoping to find a useful book about it...alas, it's all ML (what they use here to teach functional programming). :-| 13:23
autrijus ML is fine :) 13:24
ML knowledge transfers ~80% to haskell.
gaal anyone else get this with recent r?
src/Internals.hs:1:0:
Warning: `readFile' is imported more than once:
imported from System.IO at src/Internals.hs:69:54-61
imported from Prelude at Implicit import declaration
Yay! 'make test' works with mingw/msys + latest test::harness + MM 13:25
autrijus 6.2?
gaal 6.4
autrijus gah. readFile is prelude. 13:26
gaal (some other warnings as well, let me paste them all)
autrijus no, way
err
no, wait
typo :p
gaal :)
Jonathan_ Yeah, I have 'em too. Righty, time for me to go out and enjoy the sun before it all disappears.
autrijus gaal: try r878 13:27
gaal looks better 13:28
autrijus++
can we add a conditional requirement on a new MM for mingw in Makefile,PL? or just add it to the release notes?
alternatively: maybe the new MM requirement isn't only on mingw. anyone else here with an old perl care to try? 13:30
autrijus gaal: a cond. req. may be better.
build_requires()
may be better
jabbot pugs - 878 - * hide duplicate imports
pugs - 877 - ASCII hyper ops are now implemented, tha
pugs - 876 - Untoto "$label: foo" parse bug
gaal autrijus, ok 13:32
Limbic_Region kwiki is the brain child of Ingy correct? 13:34
theorbtwo Da.
gaal "correct" posfix as an alternative to true/yes/so/etc.? :) 13:35
Limbic_Region use.perl.org/~mugwumpjism/journal/23708
beats up Kwiki and other wikis pretty bad 13:36
it does go on to say but ingy made it better 13:37
autrijus when correct { ... } 13:40
I think yes() makes most sense so far. 13:41
theorbtwo wants ?all(...)
gaal I made by with !! in p5...
or am i missing the point? is this like a cast to bool in java? 13:42
autrijus gaal: ? in p6 is !! in p5
but ! has not()
so ? has... yes()
or so(), or true(), or whatever 13:43
gaal ah, as a differently binding op
ko
ESCk0xp
theorbtwo Also, one that takes a list and requires all of them be that.
gaal hence ?all(), to2? but then what's the difference? 13:44
theorbtwo That's what I want to know.
gaal ah :)
so, regarding minimum vesion of EU::MM in build_requires, i'm somewhat arbitrarily depending on the current version in CPAN because that's the only one that worked for me. 13:50
autrijus 6.17 did not work? 13:51
gaal didn't try anything by 5.something that came with my perl 5.6.1 and 6.25 which is the latest. why are you asking about that particular version, autrijus? 13:52
autrijus yes.
6.17 is the version shipped in 58.1. 13:53
and 5.6.2.
so it's the canonical one to target.
gaal aha. i will not ask how you came to know that. :)
autrijus Module::CoreList
install it
corelist -a ExtUtils::MakeMaker
gaal but i'll test for that one, and if it works, i'll add an unconditional dependency. 13:54
build dep, that is.
thanks for the tip.
why do we depend on Test::More? I'm removing that. 13:59
and putting in a build_req for EU::MM 6.17, which indeed works.
man, that was a morning's worth of makefile chasing for a one-line fix. :( 14:06
jabbot pugs - 879 - Fix build_requires() 14:07
autrijus we were depending on Test::More because p6's Test.pm was not here :) 14:14
thanks for spotting it
gaal++
gaal Test::More is no more :)
autrijus lol
Global symbol "@ARGS" requires explicit package name at Makefile.PL line 8. 14:15
my brain. :(~~
gaal uh 14:16
autrijus (not your fault)
gaal did i
ok
s/k/h/
how does that even happen?
theorbtwo Forgotten how to think in p5, autrijus?
gaal @ARGS doesn't require an explicit package name in p5! 14:17
did you try to run it with pugs? :)
theorbtwo pugs doesn't give that error; that's a stricture error. 14:18
autrijus @ARGV ;)
theorbtwo Probably because @ARGV is the thing that you're thinking of.
autrijus gaal: your brain too.
gaal ah, right :)
lol
autrijus brb.
gaal my cat just made a funny face at me.
she doesn't make silly mistakes like that, i suppose. 14:19
autrijus recalls damian's rationalisation for @ARGV and lol some more.
theorbtwo Hmm?
autrijus he said that it stands for ARGUMENT
gaal heh 14:20
autrijus and the roman characters did not have U
because it's all carved in stone
so it's ARGVMENT
in proper old style
Odin-LAP He's right, you know. ;)
autrijus sure :)
Odin-LAP It's just not what you might intuitively expect. :D
theorbtwo litteraly laughs out loud.
gaal it would have to stand for ARGVMENTVM in that case, though. 14:21
autrijus true.
mmm language geeks.
theorbtwo At caltech, BTW, there are several houses, and several hovses. 14:22
The hovses look down on the houses.
autrijus lol
gaal "These Romans are crazy" 14:23
autrijus o/~ latin is a dead language / as dead as it can be / first it killed the Romans / now it's killing me o/~
theorbtwo Just how many languages /do/ you know, autrijus? 14:24
autrijus human languages?
surprisingly few. I'm only fluent in Mandarin and English. a bit Holok, a bit German, and that's about it.
gaal I believe the spelling is now AVTRIIVS, theorb2.
autrijus attempted to learn a lot of others. 14:25
theorbtwo Oh.
gaal hey at least you can read Cantonese. <g>
autrijus gaal: that's like saying you grok MSSQL because you can use DBI::ODBC :) 14:26
gaal exactly
autrijus DBD::ODBC, even. 14:27
gaal exactlier
jabbot pugs - 880 - Test.pm writes diagnostics to file speci
autrijus ah. our friendly kolibrie has come.
theorbtwo Yeah, if aut had asked just what constituted a language, I would have said that mssql and DBI::ODBC weren't differen't languages.
gaal well, one isn't a language by even less counts. 14:28
fewer
Haskell doesn't have a getopt-like library? 14:31
autrijus it has something better :)
gaal i was thinking of -I
oh? 14:32
autrijus (System.Console.GetOpt)
but perl isn't exactly getopt.
so I'm not sure what to make of pugs.
gaal is the comamnd line specified for p6 at all?
autrijus what do you think?
not at all.
theorbtwo I'd make it GNU-semantics compatable, then.
autrijus and break -Ifoo ? 14:33
or specify a set of rewrite rules?
gaal hmm, perl isn't getopt? it's pretty standard if you allow for trailing args to te script
theorbtwo -Ifoo breaks how?
autrijus there's no-I now
gaal: ah. I thought -Farg doesn't work with getopt
theorbtwo Well why not?
autrijus theorbtwo: because no one wrote it? :) 14:34
gaal it does under some circumstances
like you have to turn off clustering
autrijus but then
gaal so that -vax != -v -a -x
autrijus perl -pie ...
is clustered
gaal yeah :(
autrijus so I can't just use haskell's getopt
gaal well -i never was clustered
(unfortunately) 14:35
autrijus or anything's, for that matter.
theorbtwo OK, so not quite GNU semantics, sadly.
gaal yeah. :/
theorbtwo It's often annoyed me that -M strict does not work.
autrijus right.
gaal it doesn't? that's a shame
autrijus in ruby, -v and --verbose both works.
gaal never noticed that
autrijus I think that's sanity. 14:36
gaal well, if you do everything long-getopt style, you get sanity
theorbtwo It's sometimes nice to be able to tab-complete, even if you do have to tab complete, then change / to :: and remove the .pm.
gaal but no shortcuts.
autrijus gaal: not exactly sure what to do, then.
I much prefer long style myself with selected shorthands 14:37
like -I and -M
gaal theorb2: you can fix *that* in your shell.
theorbtwo That'd require learning how, though.
gaal that == being able to complete even immediately following a prefix, that is, not editing the completiong on-the-fly.
i use tcsh for interactive work (yes, i know, i'm getting rare)...
autrijus so, -[VDFl0ImMxe] nest 14:38
I mean cluster
via rewrite rules
then pass it into long getopt.
how's that for sanity?
gaal -x? i didn't remember that even existed
theorbtwo Hmm... somehow, that seems backwards.
autrijus gaal: "tells Perl that the program is embedded in a larger chunk of unrelated ascii text" 14:39
theorbtwo: elaborate?
gaal yes, i remember that now (eg fish it out of an email)
theorbtwo Those are the list of switches that /do/ take an argument.
Surely the ones that cluster are the ones that do /not/?
autrijus right. sorry.
hrm. will anyone miss -ple ? 14:40
well. never mind. me for one.
sigh. :( 14:41
theorbtwo I think that should get re-written to -p -l -e, and then passed on.
Or we should just accept it, and write our own.
autrijus but ruby adopted -ple too 14:42
just to stay competitive.
I say we accept our doom. :(
gaal ruby took something from perl? wow. :p
autrijus gaal: ruby's command line is 99% perl.
its license, too.
and more.
gaal well, from the user perspective it makes sense that the comand line is weird but gives maximum utility. just like everything else in perl 14:43
autrijus before I started Pugs, I used to say that Ruby is Perl 6 without the advertisement.
gaal autrijus, i was joking, of course. i don't know ruby but most of what i saw looked familiar :) 14:44
autrijus :)
but nobody ever worked on a CPAN2Ruby converter.
if there is, I predict mass migration :)
(same applies for Perl 6.)
(but for Perl 6 it's one of deliverables.)
gaal well, now it's time for somone to write a ruby2p6 converter :) 14:45
autrijus there's a rubyonparrot team :)
gaal has anyone used getopt::declare? how does it feel liike to the user? 14:46
i mean the person running the script, not the programmer
autrijus oh. not sure.
System.Console.GetOpt is a lot like that for the programmer 14:47
but conforms to gnu long opt style
for the user.
gaal well, i'm thinking, if we manage to write perl5's commandline handling with getopt declare, then we could port it to haskell, and use that for pugs, plus maybe even expose an interface for the p6 programmer for their own scripts. 14:48
autrijus well, we wouldn't need to port it to haskell then. 14:49
port it to p6 ;)
and run that with pugs.
gaal and have pugs not deal with its own command line at all?
autrijus aye.
gaal bootstrapping problem: where does it find its internal getopt?
autrijus inline it? 14:50
you think p5's cmdline syntax can be expressed with getopt declare?
I was thinking about a small parser with parsec.
that's an excellent way to learn parsec :) 14:51
gaal okay. well, i'll be glad to look into it then. but now i have to leave again for some more hours.
autrijus ok. see ya!
gaal bye!
gaal &
masak i'm getting strange output when running the towers of hanoi example 15:18
bash-3.00$ ./pugs examples/hanoi.p6
ndisks = 3
AS
SS
AB
SS
SB
how could I possibly move something from S to S?
am I missing something? 15:19
when I run a quick p5 port, I get much saner output 15:27
bash-3.00$ ./hanoi.pl
ndisks = 3
AB
AS
BS
AB
SA
SB 15:28
AB
at least that *looks* like it could be right?
is hanoi supposed to be borken?
autrijus masak: wow. it looks broken. 15:59
thanks for bringing it to my attention. will fix.
brb & 16:00
masak how finished is pugs? 16:04
i'm thinking of writing a small board game in it
is that doable?
rjbs Depends on what you need it to do, surely. 16:08
jabbot pugs - 881 - * Disallow UNINST=1 during install. 16:25
masak rjbs: well, I need it to be able to handle simple data structures, like arrays and hashes. i need loops, if statements, subs, scalars, a way to enter input... that's about it. 16:34
stevan morning all 17:01
nothingmuch: you around?
nothingmuch in and out
stevan I just ran make test 17:02
nothingmuch uhuh?
stevan and then took a nap, ate breakfast and walked the dog
its taking a loooong time
nothingmuch ook
stevan I think we should think about re-organizing the test suite
chip Ha. "Open Profanity License." www.lcdf.org/xshostakovich/COPYING
nothingmuch for me it usually runs in under 2-3 minutes on my laptop (which is slooooww)
stevan it wont speed it up,..
nothingmuch and about a minute on a very fast machine at work 17:03
stevan yeah
what do you think about re-organizing it
for instance,.. making a data-structures folder for the array/hash tests 17:04
stuff like that
I dont want to get to granular, but as the suite grows, its harder and harder to find things
nothingmuch err, we could 17:05
i've been thinking about it a while
but how would that make it faster?
perhaps quicker, if you only want to tests parts
stevan I dont mind doing the work
nothingmuch well, that's true
stevan it wont make it faster
exactly
more intelligent grouping means I can run less of it
again, I dont mind doing the work, but I just want to get feedback on my restructuring 17:06
nothingmuch okay
stevan alright, I will whip up a proposed structure and get back to you
nothingmuch great 17:07
put it up on the wiki
ingy sdkjfhsdhfhola
riight
morning
masak question: how ready is pugs for writing a smaller application?
i'm thinking of implementing a board game in either perl 5 or pugs 17:08
and i need data points for my decision
stevan masak: we dont have multi-dimensional data structures so you might have a hard time
masak hm 17:09
but can i create an array of... things?
pjcj but substr works, doesn't it?
stevan pjcj: not sure,.. it might now
masak all i need is really an array of array[ref]s 17:10
is that the same as a multidimensional array?
stevan read an article recently on game boards implemented with bits 17:11
masak :)
stevan masak: yes
array refs are not implemented yet
masak ah
stevan or rather,.. they are,.. but you cannot nest them
masak could be a problem
stevan they will flatten
masak ok
well... can i help?
stevan sure
know Haskell?
masak um... a little 17:12
i know fp
and i have read some haskell
stevan you can take a look at that stuff,.. or on the perl6 side, you can write tests or examples or even convert your favorit perl 5 module
obra stevan: are there tests for multidemensioanl arrays? yeah
stevan orba: yes
obra obra, but yeah :)
masak :)
stevan: ok, i will. thx! 17:13
autrijus greetings. 17:17
stevan howdy autrijus
autrijus yo stevan. what's up? 17:18
stevan not much
thinking about re-organizing the test suite
its getting big
autrijus it is. 17:19
and I imagine t/objects starting soon
stevan yeah
autrijus larry makes fun of my use of "woot".
stevan t/data_structures
autrijus :p
yeah. I think 1-level deepness works
kungfuftr autrijus: kill him!
autrijus probably don't need t/foo/bar/baz.t
kungfuftr: nah. larry is inimitable 17:20
stevan autrijus: yeah not too deep
wide and shallow
autrijus yup.
pjcj perl5 has a coretest target, but that would probably cover all the current tests anyway 17:21
obra hi
mishi 17:22
autrijus hi obra-san.
ETA to boarding?
ingy hola
obra hi autrijus-san. um. boarding in 6:30
autrijus and now is.. ?
obra er. boarding in 6:00
autrijus oh ok.
obra sorry. in six hours.
kungfuftr baka neko-san?
obra it is now 12:20
autrijus six hours. nice.
ingy 18:00
obra before then, I must reply to sales inquiries and finish packing
autrijus ok. I need to focus for 10 minutes 17:23
and finish lightstep's thunking patch.
better to do it while it still merges without conflicts.
ingy is jealous of obra
rgs wants a box of inline 17:24
crysflame hi 17:25
17:28 obra is now known as ingy_, ingy is now known as obra
autrijus ingy_: so your EU::MM hacks needs 6.17. 17:29
I perceive it's not a problem
so I OK'ed the build_requires
ingy_ hah. my nick hilighting is triggering
17:30 ingy_ is now known as obra_, obra is now known as ingy, obra_ is now known as obra
ingy autrijus: which hack is that 17:31
(so many hacks, so little time) 17:32
autrijus ingy: the massive cleanups
ingy oh hmmm
what's the deal??
autrijus apparently EUMM 5.x doesn't like the magics. 17:33
6.17 is in 5.8.1 and 5.6.2 though 17:34
so not sure we need to care.
ninereasons what am I supposed to be using to read the kwid markup (besides /usr/bin/less)? 18:14
jabbot pugs - 882 - substr should work for all cases - excep 18:15
stevan ninereasons: there is a Perl5-Kwid which does simple kwid to html I believe 18:16
ninereasons I'll look for it, thank you.
stevan ninereasons: search.cpan.org/~ingy/Kwid-0.00_01/ 18:17
luqui wow
that's an early version
not even the default 0.01
autrijus hey luqui! 18:18
nice to see you here!
stevan so alpha it hurts :P
malaire seems like my commit-message was badly-worded for jabbot - the except-text got cut off...
luqui yeah, i've been away
autrijus I'm about to commit a huge refactoring.
luqui schoolin' and working on Logic.pm
autrijus: what does it do?
autrijus symbol table now contains Vals not Exps
and Vals may be VThunks
which preserves its env.
luqui neat
autrijus that makes := Just Works. 18:19
so @fib ;)
also, pugscc can still handle it.
(which is the important part)
and once we can Show and Read VThunks
we have serializable continuations.
luqui Do you have any references for thunking techniques
autrijus: yay serializable continuations 18:20
parrot said it's going to have those
obra luqui: parrot said so after autrijus cornered dan at lunch and drew on napkins at last oscon
autrijus right.
basic works are there
not exposed to pasm last I checked.
luqui ahh, thanks autrijus
autrijus sure. it's my pet wishlist item. 18:21
so, either simon pj's free online book
(url in a sec)
or "The Glasgow Haskell compiler: a technical overview"
luqui I'm trying to implement them for Logic.pm
autrijus "The Implementation
of Functional Programming Languages"
luqui backtracking junctions need it
autrijus you synced with AI::Prolog's work? 18:22
or there's no overlap?
luqui I've used it for reference
But mostly I'm implementing it to understand how to implement it
(and to provide MMD based on logical conditions) 18:23
autrijus nod nod.
good. that's good spike solution work
luqui hmm?
spike what what? 18:24
autrijus sorry. XP jargon.
www.extremeprogramming.org/rules/spike.html
luqui *click*
I probably won't throw it away though. I'm quite happy with its design. 18:25
One of those things where my gut told me to design it the way that turned out to be right (rare).
autrijus cool!
but you'll port it to p6 :)
luqui That's the plan
it's a proof-of-concept module for pattern matching 18:26
autrijus good. by that time we may even compile your code.
autrijus has been researching a lot on how to write metametacircular compiler
luqui did you type meta twice by accident?
autrijus no, intentional
normal macro things, like Template Haskell or Scheme, although they let you use the host language as macro language, 18:27
that phase occurs after the tokenization.
or really, after AST.
and then you tweak the AST.
luqui ahhh... we need to parse
metaperl_ ingy, ping
autrijus but perl6 is better than that; you can use the host language to affect lexing.
and may even force reparsing of your lexical block 18:28
metaperl_ I think head1 head2, etc are a little more useful than =, == , === . For one they are easier to search for. For two, they immediately tell you what level you have
autrijus whenever there's a lookahead.
and all this is inside an evaluator
that does incremental compile.
the same onthefly compiler is available at eval"" time as well.
and must be typesafe.
so, lots of fun. 18:29
ingy hola
metaperl_:
luqui hola. como estas? (pronounce estas with accent on first syllable)
(como gringo)
ingy metaperl_: maybe join #kwid
18:35 rafl_ is now known as rafl
autrijus woot. 18:54
fought thru the typechecker now
pugs> my $a = 1; my $b := $a; $b = 3; $a
3
lvalue bindings work.
ingy autrijus++
crysflame autrijus: neat 18:59
sorje nice 19:08
pugs> ? "hi".say 19:09
Segmentation fault
malaire I get "Segmentation fault" for everything tested so far, when using pugs> ? 19:16
theorbtwo Hm, works fine for me.
malaire :r also given "Segmentation fault"... 19:17
theorbtwo Odd.
theorbtwo tries from make clean. 19:18
Still works. 19:20
CPU-archs?
malaire Athlon 1333 19:21
I'm trying again from clean "svn up"... 19:22
err, "svn co" ... 19:23
sorje malaire, which version of ghc are you using? 19:24
malaire GHC 6.4
sorje theorbtwo, you?
I'm using 6.4, too.
autrijus win32? 19:26
win32 gives me segfaults also.
readline+win32+6.4 specifically
nothing else does that to me.
malaire I have linux
sorje linux here
autrijus weird.
malaire hmm.. how could I turn off all optimizations while 'make' ? 19:30
autrijus malaire: pass -O0 to GHC.
so, hack makefile
I'm testing.
argh! 19:32
I reverted Eval.hs to get -O back
now my refactoring is all gone :-(
autrijus blames svk for not having unrevert
autrijus redoes everything
chip rerevert 19:33
malaire has to go to sleep now... 19:38
theorbtwo Er, I'm using linux/P4/GHC6.2.2 19:39
stevan nothingmuch: ping! 19:46
nothingmuch pong
stevan pugs.kwiki.org/?Perl6Testing
nothingmuch quickly though, i have to clean the kitchen
stevan nothingmuch: take your time
autrijus: you might want to take a look too 19:47
autrijus recoded everything from scratch.
stevan I tried to keep it no deeper then one
but in some cases it want 2 deep
t/data_types/hash/* 19:48
stuff like that
nothingmuch s/objects/oop/
merge as much as possible
autrijus ok, I'm committing something silly.
nothingmuch and create a top level 'general' everywhere there's too much cruft, i think
what i'm worried about is err, where things meet
are traits oop? or are they for data types? 19:49
stevan oop/traits/
autrijus it works, but apparently makes things a lot slower.
theorbtwo On data and on containers.
nothingmuch as for builtins: they should probably be left now
just grouped
and later remapped based on s29's partitioning 19:50
theorbtwo ...but not purtiuclarly tied to OO.
stevan ok
nothingmuch there should be a directory, pugsbugs or something like that
with most of t/syntax/ going into t/pugsbugs/syntax
etc
stevan ok
nothingmuch hmm 19:51
stevan actually not all of syntax/,..
I moved some stuff in there
nothingmuch not all, most =)
stevan ok updated the page
nothingmuch i think t/op/ should be made into stuff like t/op/numeric, t/op/string, etc
to correspond with the prefixes
stevan ok 19:52
nothingmuch now that they're standardized
i think i may be overzealous, but i think a myriad of tests will be added eventually 19:53
stevan why do you think that?
with s29?
nothingmuch splitting everything up?
because there are going to be lots and lots of primitives
btw, quoting should go under syntax, i think,
stevan ok 19:54
masak i have researched the hanoi bug a little further
stevan i was thinking q// was a kinda operator maybe
masak i still dare not go close the haskell source
nothingmuch also, i'd like t/examples to widen a bit
masak but i have made a few debug outputs
nothingmuch when Test::Output will be done, i will gladly unit test the examples
masak and it seems the S's are spreading
a very strange phenomenon 19:55
could it have something to do with binging of parameters?
which source file should i (hypothetically) look in? 19:56
nothingmuch stevan: well, sort of
except it's not an operator in the typical sense
autrijus masak: Eval.hs and Bind.hs. wait me a sec
nothingmuch since it's effect is normally compile time
stevan nothingmuch: a lot of things don't seem typical :)
masak autrijus: oki
nothingmuch anyway, i've got to clean up 19:57
stevan nothingmuch: how about I start with this, then we can go from there
nothingmuch sure
stevan ok I will do all this re-arranging later today,..
have fun cleaning the kitchen :)
nothingmuch i'd like to standardize on a test -> syn link format 19:58
and start doing that doay
today
and maybe someone can whip up a website where that stuff gets updated
autrijus ok, I'm back to the material plane.
autrijus backlogs
stevan nothingmuch: I agree on the test cataloger 19:59
I think this re-org will help though
autrijus hrm, I'd argue for t/junction/ to be toplevel
because it's testing the junctive logic
not the operators per se.
stevan autrijus: thats fine with me,.. I struggled with where to put it anyway
autrijus and s/oop/objects/ 20:00
stevan nothingmuch: with better orgs, we can build better PODs, which are easier to navigate, etc et cetc
LOL
nothingmuch objects?
stevan nothingmuch: just s/object/oop/
autrijus LOL.
autrijus thinks.
you know, oo/ makes more sense than oop/ :) 20:01
autrijus thinks some more.
nothingmuch oop sounds like soup
but that's the only reason i like it
autrijus I think objects/.
nothingmuch oo is short and unambiguous
objects is too specific
autrijus true.
nothingmuch there's lots more than objects
maybe oo/objects
autrijus oo then. I'm fine with oo.
stevan ok 20:02
nothingmuch oo/traits, oo/classes, oo/classes/anynymous.t
stevan changes the wiki again
nothingmuch as far as definition is concerned it's all about objects, but language implementation needs to be partitioned better than that, IMHO
autrijus otherwise it looks very sane.
masak has checked the source code /me likes the poems
stevan autrijus: sane was my goal :)
masak oops :) 20:03
autrijus ok. hanoi
masak :)
i don't understand the code
autrijus the hanoi code?
masak the pugs source 20:04
i want to, but i have a bit left to go... :/
autrijus oh. nvm that.
masak so how can i help?
i have one more output
autrijus so, when disks = 2 20:05
it says
AS
AB
SB
masak yes
that is correct
as far as i can tell
autrijus ok
so =3 is the first error case
masak yes
jabbot pugs - 883 - * Full thunking landed: The symbol table
masak look here
bash-3.00$ ./pugs examples/hanoi.p6 3 20:06
ndisks = 3
Upon entering $a=A, $s=S, $b=B
Upon entering $a=A, $s=S, $b=S
autrijus I see a "SS"
masak 1AS
Upon entering $a=S, $s=S, $b=S
2AS
Limbic_Region autrijus - use.perl.org/~tombom/journal/23724 # first time with Pugs
autrijus SS could not be right.
masak Upon entering $a=S, $s=S, $b=S
1SS
Upon entering $a=S, $s=S, $b=S
3AB
Upon entering $a=S, $s=S, $b=B
Upon entering $a=S, $s=S, $b=S
1SS
Upon entering $a=S, $s=S, $b=S
autrijus er. nopaste! nopaste!
masak 2SB
Upon entering $a=S, $s=S, $b=B
autrijus pasteling: nopaste?
masak Upon entering $a=S, $s=S, $b=S
1SB
Upon entering $a=S, $s=S, $b=B
autrijus pasteling: nopaste
masak no
Limbic_Region perlbot nopaste
perlbot Paste your code here and #perl will be able to view it: sial.org/pbot/perl
autrijus oops :p
masak: try nopaste :)
I can't quite grok irc pastes 20:07
masak oh, sorry
what's nopaste?
autrijus perlbot: nopaste
perlbot Paste your code here and #perl will be able to view it: sial.org/pbot/perl
masak ah
there 20:08
masak uses nopaste for the first time
autrijus except you need to select #perl6 :)
pasteling "masak" at 130.238.83.176 pasted "hanoi debug run" (24 lines, 566B) at sial.org/pbot/8334
masak ouch :(
masak wreacks havoc in #perl forum by pasting perl6 code there without explanation 20:09
autrijus :)
so obviously the pad is broken 20:10
masak ah, obviously :)
the pad is broken
autrijus now, to find out why.
:)
care to produce a minimum test case?
masak sure
how? 20:11
autrijus one that is not 307 bytes long
jabbot masak: how is it supposed to err, perform normally given say:
autrijus preferably in one line :)
masak ok :)
i'll do my smallest
autrijus probably beginning with sub s ($a,$b,$c) {...}
or something like that
thanks!
masak yes
brb
theorbtwo masak: The pad is where lexical variables are kept. 20:12
masak ah, as opposed to...? 20:13
autrijus well in pugs there are two pads
one lexical and one global
actually "global" just means "per-package"
but we don't have packages yet, so it's as good as global 20:14
almost all data type definitions are in AST.hs.
so, to learn what a Pad is, you grep Pad in AST.hs :)
and it says:
type Pad = [Symbol]
in english: "a pad is a list of symbols."
and you may wish to ask what a Symbol is 20:15
look at the next line
and it will tell you that a symbol is a Scope, a Name, and either a Value or a Expression.
etc, etc:)
and to learn what a Scope is, the next line says 20:16
data Scope = SGlobal | SMy | SOur | SLet | STemp | SState
which reads just like enums.
masak ah 20:17
i have encountered an unexpected problem
autrijus oh? 20:18
pasteling "masak" at 130.238.83.176 pasted "unexpected error" (5 lines, 124B) at sial.org/pbot/8335
masak maybe it's just me not knowing pugs syntax
but it trips on the comma in my sub declaration
autrijus I think you want ''.
bash interpolates $a.
not a pugs problem :)
masak i see
thx
autrijus np
masak it compiles now :) 20:19
crysflame doesn't bash support heredocs? 20:20
like perl -e <<FOO
gaal yoyoyo 20:21
crysflame hm, not enough to work, i guess. o well.
masak autrijus: ok, here goes 20:23
pasteling "masak" at 130.238.83.176 pasted "minimal test case" (4 lines, 198B) at sial.org/pbot/8336 20:24
masak the second run should return "ba"
this is probably not the pragmatically correct way to make a minimal test case, but it shows what's wrong 20:25
autrijus that's fine 20:26
sub h($a,$b,$d) {return h($b,$a,0) if $d;"$a$b"} say h('a','b',1) 20:27
I'll use this.
testing
yay. I got mail indicating YAPC::NA wants me there. 20:29
hide I could have told you that.
autrijus oh! you're on the organizing team?
hide nah, just part of TO.pm
gaal they have a moose in their logo! cool. 20:30
autrijus masak: you may be interested in running
ghci -isrc src/Main.hs 20:31
masak ok
autrijus then type
eval "sub h($a,$b,$d) {$d ?? h($b,$a,0) :: qq[$a$b]} say h('a','b',1)"
that explains clearly what went wrong.
masak right. brb
woah
masak is overwhelmed by fp symbols
autrijus want some explanation? :) 20:32
masak i'm sure it explains it clearly... to someone else :)
yes please
autrijus it is aligned with
*** Evl: expression
*** Ret: value
pairs
which may be nested 20:33
the expressions and values may span several lines.
masak ok
autrijus so the first Evl is the entire program.
it displays a parse tree.
masak ok
autrijus so, it first evaluates the sub{...}
masak yes 20:34
autrijus and put it into SGlobal &h
masak ...which it should
autrijus then it evaluates ('a','b',1)[0..Inf]
masak hunh?
autrijus never mind :)
it evaluates the arguments.
masak ok
autrijus so you see a 20:35
App "&h" ('a','b',1)
masak yes
"apply"
autrijus which means it tries to apply &h with the correct args.
masak yes
autrijus now there is the ??:: form.
masak yes
autrijus it is written as
Syn "if" { cond ; true ; false }
masak yes
autrijus where the false part has a cxt forcer
of "Str"
and joins $a and $b and ''.
masak ok
autrijus which is what interpolation is. 20:36
so it evaluates cond.
that's $d, and is 0
I mean, 1.
masak cool... it's starting to make some weird kind of sense
autrijus then it tries to evaluate (App "&h" (Var "$b", Var "$a", 0))
which is the <true> part.
masak yes 20:37
autrijus so it looks up $b and $a.
masak so far so good
yes
autrijus $b is 'b'.
$a is 'b'.
oops!
masak but we knew that, right?
that's the problem, not the solution
autrijus yes. but the important thing is the sequence of things happening :)
masak ah, ok
autrijus it means that $b is bound first to $a
I mean, 'b' is bound to $a 20:38
masak ...because the pad is broken?
autrijus and the second argument is _then_ evaluated.
so it uses the modified pad
where $a is already bound anew
and get that value.
masak why does it use the modified pad?
autrijus because whereas we should evaluate all arguments first, then bind them to formal params
it appears that we are evaluating one and bind one 20:39
and evaluate another.
that is seriously broken.
masak not good
autrijus so, the place to find this is Eval.hs
masak ok
autrijus I'm checking code, a sec.
(doApply is the place)
masak has got to learn haskell after this
autrijus ok. 20:40
I know why now.
masak woot
autrijus but you need to know haskell to follow completely
nevertheless I'll explain
masak yes, do 20:41
autrijus ok. you see doApply?
masak sec
autrijus doApply :: Env -> VSub -> [Exp] -> [Exp] -> Eval Val
Eval.hs line 614
if it's not line 614 for you, svn up.
masak it is 20:42
autrijus ok.
now, the :: line is the function signature.
it says:
masak yeah
autrijus doApply takes the current environment (the pads)
and a subroutine
and a set of invocants
and another set of arguments
(here we only use arguments)
then it evaluates a Value for you.
masak currying, right?
autrijus hm? 20:43
subroutines are closures. not sure how currying apply here
masak maybe not
autrijus if you only pass it an argument, then it curries. but we're using full invocation
masak fp is still voodoo to me
autrijus anyway. see the next line.
masak ok
autrijus now we start binding
masak yes 20:44
autrijus so, we only care about the "cls" part of the env
but ignore that.
then we call the subroutine "sub"
and call its parameters "prms", its body "fun", and its type "typ".
then we call the invocants "invs" and arguments "args".
with that done, we start evaluating.
masak ok
autrijus so, we call "bindParams prms invs args" 20:45
which binds the invs and args against the formal prms
stevan uhm
r883
pugs -e 'my $a; $a += $_ for 1 .. 10; say $a'
autrijus uhm.
stevan this is an infinite loop and gobbles up the whole CPU
autrijus you don't need the say$a
masak stevan: thanks for telling :) 20:46
autrijus you don't need the $_.
stevan autrijus: the say $a was to test it works on the older Pugs :)
autrijus ./pugs -e 'my $a; for 1 { $a + 1 };'
is sufficient.
stevan :)
autrijus stevan: I'll fix in a min.
let me fix masak's bug first. :)
stevan ok,.. no rush,.. I just noticed it 20:47
autrijus masak: ok. so bindParams returns either an error message, or a correct set of bindings.
stevan should be doing $work stuff anyway
masak ok
autrijus we use "case", which is like "switch", to analyze it.
masak yes
autrijus if it's an error, well never mind that branch
now we have bindings.
masak ok 20:48
autrijus so we enter a dynamic scope.
masak enterScope
autrijus that means CALLER:: from now on refers to where we've been.
which makes sense.
masak sure
autrijus then we get a set of bound arguments
via doBind.
we are pretty sure it's where it's broken.
masak uh huh
autrijus when you see 20:49
var <- function args
read: "set var to the result of evaluating function with args."
masak yes...?
autrijus ok. now go to line 636
where doBind is defined.
masak i'm there
autrijus excellent. 20:50
so that line means
if you are trying to bind an empty list
masak yes
autrijus I give you an emptly list back.
which is unexciting.
masak pattern matching
autrijus so next line.
if you are binding an nonempty list
where the first element is a parameter bound to an expression
and everything else is called "rest"
masak ok
autrijus ignore the Parens branch. 20:51
so that line reads
"I turn expressions to values and assign it to val."
masak makes sense 20:52
autrijus err, "I turn expression to value and assign it to val."
ignore the "coll" part.
masak yes
autrijus (it controls junctive autothreading.)
masak :)
i'll ignore it
autrijus now line 645
masak yep
autrijus it says, "fix the val above with the context given by the parameter name sigil."
which is actually bogus. 20:53
because we need to specify context during evaluation
not when we already have a val
because the exp may choose to evaluate differently in response to a context.
masak yes
i think i actually see the problem 20:54
autrijus it's in the next line :)
masak through a haze, but still
autrijus the next line says:
masak the recursive call
autrijus "now bind this variable, and do the rest."
oops.
masak yes
autrijus now, why was that there?
masak :)
autrijus because perl6 allows
sub foo ($a, ?$b = $a) { ... }
and here the $a refers to the previously bound $a.
masak ah, wow 20:55
neat
autrijus except it's throwing us off.
masak yes
want cake and eat cake
autrijus yes.
now, actually there is a difference.
masak oh, good
:)
autrijus the $a in ?$b = $a is part of part of an optional arg.
masak an optional arg? 20:56
autrijus $b is optional.
? denotes optionalness.
masak ah
autrijus when Bind.hs processes it, it adds a "Parens" before it.
see line 640.
masak yes
autrijus let me commit the context fix first. 20:57
masak np
masak is greatly enjoying himself 20:58
autrijus it's readable? :)
masak a bit like russian is readable, yes :) 20:59
autrijus lol.
fixed. 21:00
svn up?
21:00 boch is now known as boch\off
masak sure, sec 21:02
i guess removing and redownloading the entire source tree is not the most effective use of svn... 21:03
autrijus nope :) 21:04
jabbot pugs - 884 - * sub params need to apply their sigil c 21:05
masak svn:ed up 21:06
Limbic_Region autrijus - did you catch the use.perl journal entry I posted - you were in the middle of another conversation
s/posted/pasted 21:07
autrijus Limbic_Region: I did.
Limbic_Region believes that the rolling snowball isn't far away from critical mass 21:08
masak ...at which point it will... what? explode? stop? melt? :) 21:12
elmex wow 21:14
autrijus my battery just went out :-/ 21:15
bgfscking. sec
freebsd-- # no automagic acpiconf -s 4 21:16
Limbic_Region maybe that's a sign you should go to bed
autrijus heh :) 21:17
masak i'm going to bed
autrijus and I fixed the bug.
masak autrijus: thanks for all the explanations 21:18
autrijus testing.
masak: no prob :)
masak: how should I credit you in AUTHORS?
masak nonono :)
autrijus may I make you a committer and let you commit that line yourself? :)
masak sure :)
autrijus your email?
masak [email@hidden.address]
autrijus ok. sleep well!
masak thx 21:19
elmex i only wrote one test... not a reason for me to be listed in the credits... i think 21:20
autrijus I think otherwise :) 21:24
elmex: are you not a committer?
elmex_ a freeflight.. 21:27
autrijus: you said something?
autrijus elmex_: are you not a committer? sorry for not remembering
elmex_ ah, yes, i am... committet a test.. 21:28
autrijus ok. add yourself to AUTHORS then, if only to reduce theorbtwo's workload.
hi rg0now! 21:29
rg0now hi
might I bugreport now?
autrijus sure. I'm aware that trunk is broken re :=
but go ahead.
rg0now open is broken too
I menan at least on linux 21:30
elmex_ autrijus: oh, if it makes workload to others..i have to add myself.
autrijus rg0now: yeah. my thunk patch destroyed everything.
rg0now :)
should I wait some time until it stabilizes?
elmex_ autrijus: what does the stuff in parents in the AUTHORS file mean? 21:31
autrijus rg0now: like, 5 min
elmex_: CPAN id
elmex_ ah, ok, dont have one
autrijus rg0now: give me a case where open is broken?
short test
rg0now short moment
ok, I have the test case: 21:34
my $fh = open(@ARGS[0]) or die("failed");
this one very subtly fails
according to strace, it opens the file 21:35
then it tries to ioctl, that fails
the relevant lines from the starce log
open("stuff/test.txt", O_RDONLY|O_NONBLOCK|O_NOCTTY|O_LARGEFILE) = 3
so open is successful, but then the ioctl that fails 21:36
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfffd86c) = -1 ENOTTY (Inappropriate ioctl for device)
this is Pugs r883 on Debian Linux 21:37
interestingly, =<> works fine...:-) 21:38
autrijus ok.
did it work?
before r883 21:39
rg0now I think it did, as the new tsanta code over at PerlMonks uses it
you know, the Pugs Golf contest..:-)
autrijus yup.
rg0now does it work for you? 21:40
did _I_ miss something again?
autrijus no... it worksforme.
can you try to trackdown a bit? 21:41
rg0now wait a bit more, I try to narrow it down a bit...
autrijus try r882.
r883 is a huge refactoring.
rg0now ok
hide $a += $_ for 1 .. 10; seems to loop for a really long time.
autrijus hide: svn up. 21:42
hide that was 885, now I'm at 888
autrijus the shell is broken. 21:43
hide nods
it actually looped forever in t/base/post, but in 888 appears fixed. 21:44
so ignore me :)
autrijus :)
hide I've got some time to add tests, just don't know where to start.
stevan hide: we are going to re-organize the tests tonight so it wont be so confusing 21:45
hide: here is the proposed new structure
pugs.kwiki.org/?Perl6Testing
feel free to comment on it too, its not yet set in stone 21:46
stevan thinks he will wait till autrijus goes to sleep to move all the tests around
autrijus "You have 15 points until level 6."
hrm. I swear one month ago I was level 2 or 3 or so.
autrijus thinks this perlmonks thing is weird. 21:47
stevan autrijus: it is
hide stevan: I can help if you'd like.
autrijus "svk mv" is your friend :)
(it preserves history)
stevan yes
hide svk++
stevan svn mv does too :)
autrijus "svn mv" too, but I wrote svk mv.
:)
theorbtwo autrijus, thanks for trying to reduce my workload. 21:48
autrijus theorbtwo: no problem.
theorbtwo And thanks for thinking perlmonks is wierd.
stevan crosses his fingers and runs make test
autrijus it is very weird.
I like it, though. it's weird in a perlish way.
rg0now regarding the open failure: it works with r882
so it must be the refactoring
autrijus yay so it's 883.
now let's see what lightstep sneaked up in his patch... 21:49
stevan hide: what did you want to help with?
autrijus failing to find anything related. 21:50
tiw hi all
autrijus rg0now: I need to sleep soonish.
rg0now: if you can help do a binary search inside r883's Prim.hs changes, great
rg0now ok, I'll be back tomorrow with the latest results...:-)
autrijus otherwise I'd appreciate a shell or something :)
rg0now ok
autrijus tomorrow that is
tiw i think in given.t, a test case is useless
rg0now ok, by... 21:51
stevan tiw: which one?
hide stevan: moving tests around if need be.
stevan hide: that is probably best done by a single person, its hard to coordinate
tiw line 19
stevan tiw: i hesitate to call any case useless 21:52
tiw stevan: $two will never given a value, no matter test successfully or not
stevan tiw: but that is tested for
it is testing that is does *not* get a value 21:53
tiw i mean, when given is not work, the test is still ok
stevan tiw: yes
tiw: but if given is broken,.. it might fail
tiw stevan: ok, it is not useless, but not best 21:54
stevan tiw: agreed, but unimplemented things are hard to test 21:55
feel free to add more if you have ideas
jabbot pugs - 888 - * now bindings works, unTODO and fix qui
pugs - 887 - * op2Numeric repaired
pugs - 886 - Added myself to the AUTHOS list.
pugs - 885 - * hanoi is back to work
tiw stevan: i are right. 21:56
stevan: i think "ok(!$two, "5 is not two");" should to change to todo_ok
stevan: because this feature is not yet implemented 21:57
it cost me a lot of time to test why this test is "ok"
stevan tiw: the convention has been to only make failing tests todo_ok and not passing ones 21:59
because Test Harness reads them as "unexpectedly succedding"
but you are right, it can be confusing 22:00
tiw to test a unimplemented feature, and get ok, do you think it is really good? 22:01
i suggest all test about unimplemented feature should be 'todo_ok'
stevan but then the test harness will show them unexpectedly succeeding 22:02
which can be confusing
tiw i do not unstand what the 'failling tests' mean 22:05
stevan if todo_ok passes, then the test harness prints "1 Test Unexpectedly succedded" 22:06
try it
change it to todo_ok and re-run make test 22:07
stevan has to go pick up his daughter & 22:09
autrijus ok. think I'll wake up to a refactored test tree tomorrow? :) 22:13
nothingmuch ah 22:14
tiw i hope test should be meanful
nothingmuch after kitchen cleaning and socializing /me heads off to the gas station 22:15
to reaquire nicotine stores lost to the laundry machine earlier this week,
autrijus journal up. 22:20
good night, folks!
thanks and have fun :)
nothingmuch good night, autrijus
see you tomorrow
autrijus =)
nothingmuch hopefully with something done about the test organization! 22:21
autrijus yup!
&
rg0now has autrijus already left? 22:29
ingy just left
rg0now I was here some minutes ago and reported a bug 22:30
nothingmuch rg0now: appearantly yes, but you never know ;-)
rg0now I just wanted autrijus to knwo
autrijus rg0now: speak quickly. :)
rg0now that it is now resolved with r888
I made a big clean and now everything works fine
autrijus oh. good. I can sleep better.
rg0now :-)
good night ...
autrijus :-)
rg0now++
zzz &
rg0now bye
stevan ok, I am now commencing test re-organization :) 22:54
ok, test re-org is complete 23:27
r889
nothingmuch ok, quick
format for test -> syn links
i'm thinking L<Sxx/Heading_Name> 23:28
with Heading_Name optional
and as a backlink simply a pointer to the line where that was in the test
theorbtwo I'd like an optional extra / and more specific data.
nothingmuch also recognize kwid format
theorbtwo But it'll do for now, so long as headings don't contain slashes.
nothingmuch and both formats can be lifted from comments, not only docs
stevan sounds good to me 23:29
nothingmuch theorbtwo - the byte line seeks, etc?
theorbtwo ...though that seems fraglie, so possible escape slashes that are in the heading.
Or at least count of newlines.
nothingmuch phooey
right now our aim is to get this done quickly
not count newlines 23:30
only first slash is significant
theorbtwo: i think this is better defined later
if you have a concrete format, please specify it
and i will conform
theorbtwo I know, but being forward-compatable is good.
nothingmuch but i know that I won't be adding that optional data this evening
theorbtwo Write slashes in headings with... hold on a second while I man pod.
stevan nothingmuch: what about L<Sxx|heading/with/slashes>
nothingmuch stevan: err, i think that's too confusing, with | separating display from meaning 23:31
theorbtwo Pipe in L is already defined to mean something else.
If head contains slashes, write E<sol>
nothingmuch i would prefer backslash escaping
stevan what about the S<> idea?
theorbtwo OK, or do that.
nothingmuch or pod style escaping
L<> is a link
theorbtwo E<sol> is pod-style escape.
nothingmuch i think S<> was nice for backlinking to tests
from syns
but i'm not sure i like that idea 23:32
does anybody know how kwid would do that?
stevan what about S<> in tests (S for Synopsis) and T<> in Synopsis (T for test)
nothingmuch ingy: ping
ingy hi nothingmuch
nothingmuch stevan: S<> exists... i think we can safely say that L<S##/ is synopses, and L<.*?\.t is a test
but then again, i really don't want to link from synopses to tests 23:33
stevan nothingmuch: ok by me
nothingmuch i want to autogenerate the synopses given links from tests
(please don't assume i'm the self appointed dictator of the linking process, i just need to pee and am trying to type more concisely ;-)
stevan nothingmuch: go pee then 23:34
nothingmuch ok
stevan we will wait :)
nothingmuch =D
theorbtwo retracts a question and just agrees.
I'll ask when you get back.
stevan ingy: how would you suggest that we link the tests to the syn using kwid? 23:35
nothingmuch ok
stevan nothingmuch: feel better now 23:36
nothingmuch well, i still want to get it started and get it over
stevan agreed
theorbtwo nm, you're OK with writing E<sol> for a literal slash in a heading?
That's all I want...
nothingmuch plus i haven't worked on pugs all week
stevan nothingmuch: really? I could have sworn I saw you in the commit log 23:37
nothingmuch theorbtwo: yes, it's valid pod, and it's sigma-complete, so it can be interpreted and converted to anything else given the need
stevan: i mean serious work... and i feel sort of bad for not having time to feel good about helping
one last thing i'd like 23:38
lots of testing has to do with corner cases
i would like to embed pattern matches in the things
since headings are unique (sort of, pod warns if they aren't, so that L<> will work)
then a second slash could be a place for arbitrary skip
not so much newlines
but i think this is useful for placing the backlink, or at least a copy of it next to relevant code examples 23:39
thus making theorbtwo's suggestions a bit more Q&D
this is very not futureproof though
but i think it's OK if the backlink is placed at the top of the section, with a little message saying 'pattern didn't match section XYZ'
theorbtwo: does this do what you wanted, sort of? 23:40
theorbtwo Yes.
nothingmuch assuming //s, you can then say \n{4}
theorbtwo Works pretty well.
\n{4} doesn't do what you want, but yeah, it's quite possible.
# (\n.*?){4} 23:41
ingy hi
nothingmuch what i suddenly realized isi that tests that work on corner cases have a hard time saying exactly what they do if links are only to headings
ingy stevan: which way are you linking?
nothingmuch ingy: tests to synopses 23:42
with S##(?:/heading_name(?:/pattern_in_heading_section)?)?
inside a L<>
with literal slashes pod escaped
ingy in pod/kwid, every '=item foo' and every '=headX' forms a link destination 23:43
nothingmuch ingy: in this case synopses are assumed to be kwom or pod equiv
what we are worrying about is the formatting of the actual links in the test files 23:44
ingy a link is of the form L<text|page/section> or [text|page|section]
where section is the text from
nothingmuch and how to format that L<> style link in kwid
in the former is the text mandatory for disambiguation? 23:45
theorbtwo Well, we're forming links in the form L<page/section/regex>
You mean later, I think.
nothingmuch can you say [|page|section]?
ingy crap...
nothingmuch right, latter... /me read the kwid one first and got confused =)
ingy a link is of the form L<text|page/section> or [text|page/section]
nothingmuch ok
theorbtwo ingy, I find the bracket-link syntax you just showed highly confusing... oh, that's much better.
nothingmuch so in that case we don't care
what about escaping a slash in [] format? 23:46
if section contains a slash, in pod theorbtwo found out it should be E<sol>
ingy not really
it can be the first slash
jabbot pugs - 889 - commiting the big test restructuring, I 23:47
ingy as long as the page has no slash
theorbtwo Except we're allowing for a third section.
nothingmuch we're making use of a specification hole to skip forward from the /section till the match after the section happens
ingy seems like not a great idea 23:48
nothingmuch ingy: it's Q&D
ingy do you have an example of what you are doing
nothingmuch and it's just meant to sort of fit
nothingmuch is working on an example that will make sense
ingy cool 23:49
examples would help
should we SEE triage on it?
nothingmuch a test for s06
that's a section name
we could
but i think this better be logged 23:50
Required parameters
Pairs may also be passed in adverbial pair notation:
$comparison = numcmp(:x(2), :y(7));
$comparison = numcmp(:y(7), :x(2));
that's part of that section
i'm thinking a corresponding test will have L<S06> at the top
and by the specific tests for adverbial pair notation, have a L<S06/Required parameters/adverbial pair notation/ 23:51
s#/$/>#;
which will place the backlink right after the line that matches
ingy I see. You are addressing code blocks within the synopsis, and evaling the code as a test. right?
nothingmuch so that a user reading the synopsis will be able to look at the test cases for every specific example, subsection, etc
not necessarily code blocks
any arbitrary text, i think, 23:52
ingy why?
stevan ingy: evaling wont work, the examples are not always complete
ingy nod
nothingmuch the point of this shennanigan is to know the status of pugs
you read the synopses
and then you know what is tested
and from there you know what is working and what is not, and what is todo 23:53
a major requirement for this to be complete is that it's easy to maintain and create
ingy nothingmuch: I think a nopasted example or a wiki page is in order
nothingmuch ok, i'll whip this up
3 minutes please
ingy tanks!
theorbtwo NM++ 23:54
stevan yes, nothingmuch++ 23:55
theorbtwo karma NM 23:56
jabbot theorbtwo: NM has karma of 1
theorbtwo karma nothingmuch
stevan karma theorbtwo 23:57
hmmmm
nothingmuch perlbot karma stevan
perlbot Karma for stevan: 16
jabbot nothingmuch: theorbtwo has neutral karma
nothingmuch jabbot: i didn't ask about theorbtwo 23:58
;-)
stevan nothingmuch: dont argue with the software :P
nothingmuch that's an interesting bug, though =)
ok, i did a bit of hypothetical linking from t/subroutines/sub_named_params.t
stevan nothingmuch++ 23:59
perlbot karma nothingmuch
perlbot Karma for nothingmuch: 15
stevan perlbot karma theorbtwo
perlbot Karma for theorbtwo: 8
nothingmuch perlbot karma nopaste # lets see if this confuses it ;-)
perlbot nopaste # lets see if this confuses it ;-) doesn't have any karma