»ö« | perl6-projects.org/ | nopaste: sial.org/pbot/perl6 | evalbot: 'perl6: say 3;' | irclog: irc.pugscode.org/ | UTF-8 is your friend!
Set by Tene on 14 May 2009.
00:04 japhb left 00:09 Limbic_Region left 00:12 DanielC left 00:13 xinming left 00:20 eternaleye_ joined 00:21 eternaleye left 00:23 ihrd joined, frew|work joined, ihrd left 00:27 meppl left, snarkyboojum joined 00:29 bacek joined 00:33 _Nike_ joined
_Nike_ hello 00:33
00:35 unitxt left, xinming joined 00:47 xinming_ left 00:52 xinming_ joined 00:54 kate21de1 left, sri_kraih_ joined 00:55 agentzh joined 00:57 xinming_ left, xinming_ joined 01:00 sri_kraih left 01:02 xinming__ joined 01:03 xinming left 01:04 xinming_ left 01:30 TimToady sets mode: +o pmichaud 01:31 TimToady sets mode: +o cognominal, TimToady sets mode: +o justatheory 01:32 TimToady sets mode: +o moritz_, TimToady sets mode: +o rhr, TimToady sets mode: +o szabgab 01:33 TimToady sets mode: +o Infinoid 01:35 TimToady sets mode: +o [particle] 01:36 TimToady sets mode: +o Matt-W
Sark23 hi 01:38
TimToady howdy 01:39
Sark23 can i use rakudo do make a cms on web or index robot ?
Or have this many bugs
TimToady yes, and yes :) 01:40
but there's already a wiki
see perl6-projects.org for other ideas
Sark23 thx 01:41
01:42 kcwu left 01:47 kcwu joined 01:58 meppl joined 02:00 edenc left 02:01 snarkyboojum left 02:02 Whiteknight left 02:03 mycelium joined, mycelium left, mycelium joined 02:06 snarkyboojum joined 02:08 simcop2387 left 02:10 frew_ joined, simcop2387 joined 02:11 frew left 02:34 om454545445 joined 02:36 Sark23 left 02:39 _Nike_ left 02:42 om454545445 left 02:43 om454545445 joined
om454545445 hi guys 02:43
02:46 om454545445 left 02:47 snarkyboojum left 02:54 unitxt joined 02:56 cotto left, cotto joined, JDlugosz joined, amoc is now known as am0c
JDlugosz Hello 02:57
02:58 Eevee left
jdv79 where are modules written in p6? 03:15
s1n jdv79: scattered, mostly github for now 03:17
jdv79: there's not much yet either
03:20 donaldh left, donaldh joined
jdv79 iirc there were a bunch dev'd in the pugs era - what about them? 03:21
s1n jdv79: i'm sure they don't compile anymore
jdv79 sad
s1n jdv79: not sad, it's advancement
jdv79 i guess. that was a lot of effort though. 03:22
s1n nothing is static, even the mona lisa is falling apart 03:24
03:34 snarkyboojum joined, am0c left, amoc joined 03:39 alester joined 03:40 c9s left 03:42 Eevee joined 03:47 frew|work left 03:48 frew|work joined
s1n rakudo: class A { has $.foo = 'bar'; multi method foo(Str $test) { say $test }}; my $a = A.new; $a.foo("oh hai") 03:51
p6eval rakudo 063f3d: ( no output )
s1n so the $.foo is not a multi method?
JDlugosz s1n: good question. I can see why you would want it to be. Normally the auto-generated accessor is supressed if you write your own. The multi should not affect that. It's just confusing and pointless. 03:56
03:56 snarkyboojum left 03:57 nihiliad left
jdv79 does p6 have an explicit MOP? 03:57
03:58 meppuru joined 04:02 pyrimidine joined 04:03 c9s joined
pyrimidine s1n: that last line gives me a bus error for some reason 04:05
(locally)
rakudo: class A { has $.foo = 'bar'; multi method foo(Str $test) { say $test }}; my $a = A.new; $a.foo("oh hai")
p6eval rakudo 063f3d: ( no output )
pyrimidine but this works:
rakudo: class A { has $!foo = 'bar'; multi method foo(Str $test) { say $test }}; my $a = A.new; $a.foo("oh hai")
p6eval rakudo 063f3d: OUTPUT«oh hai␤»
s1n pyrimidine: that's because $!foo doesn't generate any accessors 04:06
pyrimidine yep
s1n files bug
pyrimidine jdv79: feather.perl6.nl/syn/S12.html#Introspection 04:09
jdv79 thanks 04:12
04:14 meppl left
JDlugosz Shouldn't that be Ojai? 04:14
jdv79 frew_: around? 04:29
04:40 pyrimidine left 04:43 netfish joined, kate21de joined
jdv79 ah, looks like rakudo is fronting directly for the parrot metaobject or something 04:53
04:53 cotto left 04:55 cotto joined 04:56 Sark23 joined 04:59 alester left 05:07 eternaleye_ left 05:09 c9s left 05:10 c9s joined 05:12 eternaleye joined 05:13 synth left
pugs_svn r27041 | lwall++ | [examples] first whack at modernization to STD standards 05:21
05:26 justatheory left 05:53 frew|work left 05:56 frew|work joined 06:02 synth joined 06:20 hanekomu joined 06:48 frew|work left 06:50 sri_kraih_ left 06:51 mberends joined 06:54 kate21de left 06:55 sri_kraih joined, DemoFreak joined 06:56 unitxt left 06:57 dakkar joined 06:58 viklund joined 06:59 eternaleye left 07:00 eternaleye joined 07:05 eternaleye left 07:06 eternaleye joined 07:19 eternaleye left 07:20 donaldh left 07:22 donaldh joined
viklund_ jnthn: When will we be able to .wrap multis? ;) 07:25
07:27 viklund left
mberends viklund_, although jnthn++ is physically near Bratislava, his brain is usually in a somewhat later timezone (he's a nocturnal animal) ;) 07:30
07:43 agentzh left, agentzh joined
moritz_ oh hai 07:43
mberends oh hai, howz vacation? 07:44
moritz_ fine 07:46
07:47 estebann_ left 07:48 cls_bsd left
moritz_ we took great pictures, but it'll take me a week or so to upload them in a reasonable format 07:52
Matt-W Good morning #perl6
08:02 clintongormley joined
pugs_svn r27042 | lwall++ | [examples] more STD cleanup 08:10
08:15 xinming__ left, cls_bsd joined 08:19 xinming joined 08:21 b_jonas joined 08:26 payload left 08:29 barney joined, netfish left 08:30 DemoFreak left 08:35 payload joined 08:42 s1n left, bacek left 08:43 s1n joined 08:51 payload left 08:57 masak joined 08:59 alexn_org joined 09:00 Guest61114 left
masak I wrote two patches at home last night. I'm happy to see that pmichaud++ already wrote one of them independently and committed it. :) 09:04
mberends great minds think alike! 09:05
09:05 hanekomu left
masak the other one, however... should 'prompt' warn of a use of an uninitialized value when the user presses ^D> 09:05
s/>/?/
mberends probably no, because EOF should also return an empty string 09:06
masak here's my patch: gist.github.com/126373 09:07
I'll run spectests now; I suspect it won't break anything.
09:08 hv2 joined 09:09 DanielC joined
DanielC moin 09:09
mberends is it ok that the two returns give two different types?
masak moin, DanielC.
DanielC mberends is here!
hi masak o/
masak mberends: it probably wouldn't be if prompt was typed. I'll have a look what the spec says about it. 09:10
mberends DanielC is here too! o/
DanielC mberends: Let me know when you have a chance to talk about modules.
masak S32/IO.pod says '--> Str'. 09:11
jnthn++ will know what to do. maybe I should wait until he arrives.
mberends DanielC: thanks for the research about indexes etc yesterday, it was really useful. The three file concept ticks all the boxes afaics. 09:12
DanielC mberends: I can also suggest a ridiculously easy implementation of a "hash table". If the Fletcher-16 hash of "Foo::Bar" is a03b then its metadata is in a0/3b.yml 09:14
That file then contains the information about all modules that share that hash. 09:15
mberends DanielC: seeking into a single packages.yml would delievr the same, but faster
DanielC ok
09:16 hanekomu joined
mberends but yes, YAML format will make the metadata searchable 09:16
the idea of using the built in Parrot hash is brilliant 09:17
jnthn o/
DanielC :-) 09:18
jnthn o/
mberends: I see that you backlogged. :)
DanielC wonders if "backlogging" is the correct term
mberends DanielC, always backlog #perl6. correct
mberends used to backlog slashdot, but got bored with it 09:19
jnthn (typed returns) undef ia always (aside from native types) fine, you can still write returns Str and return an undef.
rakudo: sub foo($x) returns Str { return $x ?? "lol" !! undef }; say foo(1); say foo(0); 09:20
p6eval rakudo 063f3d: OUTPUT«lol␤Type check failed on return value␤in sub foo (/tmp/tetKZLez5P:2)␤called from Main (/tmp/tetKZLez5P:2)␤»
jnthn But Rakudo has a bug there.
(There's a ticket IIRC, just didn't get to it yet.) 09:21
mberends s/to it/tuit/ 09:22
DanielC mberends: jnthn tried to explain to me the implications of the Parrot hash idea. In the end it wasn't clear to me if there was a good way to implement the idea (I had to leave before I could ask more). 09:23
mberends DanielC, it looked very feasible. If the freeze/thaw is already partly built in, there's much less work to do. 09:24
DanielC You see, I don't fully get the freeze/thaw part... 09:26
jnthn I think there's freeze/thaw ops evne.
jnthn gotta have phone call with $CLIENT and sort a few bits out, back in a bit.
mberends there may be some concurrency issues (changing the oil while the engine is running) but not worse than any other approach
DanielC ok
I think I understand better now. 09:27
mberends DanielC, I'll be afk intermittently (and backlogging), but shall we read the Parrot docs? I've made a start... 09:28
DanielC sure 09:29
I'll be afk too... my computer is acting up.
mberends ok
DanielC has to kill X
09:29 DanielC left 09:30 sbp left, sbp joined
hv2 rakudo: our($a, $b) = "test" ~~ /(e)(s)/; say (~$a).perl, (~$b).perl; 09:30
p6eval rakudo 063f3d: OUTPUT«"e""s"␤» 09:31
hv2 our($a, $b) = map {~$_}, "test" ~~ /(e)(s)/; say (~$a).perl, (~$b).perl;
rakudo: our($a, $b) = map {~$_}, "test" ~~ /(e)(s)/; say (~$a).perl, (~$b).perl;
p6eval rakudo 063f3d: OUTPUT«Use of uninitialized value␤"es"""␤»
hv2 I was expecting the second to output the same as the first, is the problem me thinking that list context is the same as in p5? 09:32
09:32 DanielC joined
hv2 (I notice also that the map spectests only ever provide an array variable for the map BLOCK, LIST form, so I can't discern it from those. 09:35
09:40 DanielC left
dakkar rakudo: our($a, $b) = map {~$_}, ("test" ~~ /(e)(s)/); say $a.perl, $b.perl; 09:42
p6eval rakudo 063f3d: OUTPUT«"es"undef␤»
dakkar uh… 09:43
09:43 DanielC joined
dakkar rakudo: ("test" ~~ /(e)(s)/).perl 09:43
p6eval rakudo 063f3d: ( no output )
dakkar rakudo: say ("test" ~~ /(e)(s)/).perl 09:44
p6eval rakudo 063f3d: OUTPUT«Match.new(␤ # WARNING: this is not working perl code␤ # and for debugging purposes only␤ ast => "es",␤ Str => "es",␤ from => 1,␤ to => 3,␤ positional => [␤ Match.new(␤ ast => "e",␤ Str => "e",␤ from => 1,␤ to => 2,␤ ),␤ Match.new(␤ ast => "s",␤ Str
..=> "…
dakkar the match returns a single Match object? 09:45
and then the assignment upacks the positionals? 09:46
hv2 Not when you assign to a list:
oh
dakkar IIRC it's not exactly a list…
hv2 so is there a least ugly way to get the two captured strings into the two variables? 09:47
b_jonas what's wrong with using $1 and $2 ? 09:48
dakkar rakudo: say map {" >${_}< "} ("test" ~~ /(e)(s)/)[]
p6eval rakudo 063f3d: OUTPUT«Can't use $ as non-variable in interpolated string at line 2, near "${_}< \"} ("␤in Main (src/gen_setting.pm:0)␤»
b_jonas I almost always use those and almost never use non-g match in list context in perl5
dakkar rakudo: say map {" >" ~ $_ ~ "< "} ("test" ~~ /(e)(s)/)[]
p6eval rakudo 063f3d: OUTPUT«Statement not terminated properly at line 2, near "(\"test\" ~~"␤in Main (src/gen_setting.pm:0)␤»
dakkar rakudo: say map {" >" ~ $_ ~ "< "}, ("test" ~~ /(e)(s)/)[]
p6eval rakudo 063f3d: OUTPUT« >e< >s< ␤» 09:49
dakkar keeps forgetting the syntax
hv2 I didn't want to split a perfectly simple p5 statement over two lines.
dakkar hv2: perlcabal.org/syn/S05.html#Match_objects
hv2 ah, []
b_jonas oh yeah
dakkar or an array cast:
rakudo: say map {" >" ~ $_ ~ "< "}, @("test" ~~ /(e)(s)/)
p6eval rakudo 063f3d: OUTPUT« >e< >s< ␤» 09:50
b_jonas in ruby, that would be written as "test" =~ /(e)(s)/ and $~.captures
hv2 Coolness, thanks dakkar.
b_jonas because the plain .to_a method returns the whole match ($&) as first element as well
dakkar rakudo: "test" ~~ /(e)(s)/; say map {" >" ~ $_ ~ "< "}, @()
p6eval rakudo 063f3d: OUTPUT« >e< >s< ␤»
dakkar where @() is a shorthand for @($/) (the match object, cast to array) 09:51
b_jonas hmm
funny shorthand
dakkar my ($second,$first)=("test" ~~ /$first = (e) $second = (s)/); say ~$first; say ~$second 09:53
rakudo: my ($second,$first)=("test" ~~ /$first = (e) $second = (s)/); say ~$first; say ~$second
p6eval rakudo 063f3d: OUTPUT«s␤e␤»
dakkar hmm
b_jonas but in p6, doesn't the ~~ operator return the match object anyway?
dakkar b_jonas: yes 09:54
b_jonas so then can't you @("test" ~~ /re/)
dakkar yes
b_jonas oh you can
you showed that above
hv2 With ref to the S05 spec, I suspect I actually need to read more elsewhere about context: I was expecting the phrase "when used as an array" to mean something very like p5's list context, and expected therefore to get it provided by the map.
b_jonas of course there's not much point, usually you need $/ anyway because you want to boolean match the match anyway
dakkar hv2: as far as I understand (which is isn't very far), "list" and "array" are more different in p6 than in p5 09:55
b_jonas that's why I'm using $1 etc normally, there's no easy way to test for a match and use the captures easily in one expression using only the lest
I think they're less different, or different in a different way
hv2 b_jonas: in this case I'm unpacking elements of a literal array in the code, so I have no doubts about the boolean result of the match. 09:56
b_jonas p6 has a notion of a list somewhat similar to that in both maple and mathematica (though you rarely see them in mathematica explicitly)
hv2: sure
dakkar b_jonas: something like «my ($a,$b);if (($a,$b) = ("test" =~ /(e)(s)/)) { print "-$a-$b-\n" }» ? (perl 5)
b_jonas hv2: I didn't even say "never", I sometimes use the list match too
dakkar: yes, I guess that might work, 09:57
09:57 synth left
dakkar and yes, it looks conovulted 09:57
b_jonas dakkar: but then why assign to temps $a and $b if I can just use $1 and $2
dakkar: you can put the my inside btw, like if (my($a, $b) = $test =~ /(e)(s)/) { ... }
dakkar sure
10:00 mj41 joined 10:01 Maghnus left 10:03 phenny left 10:08 phenny joined, Scorp1us left 10:09 StephenPollei left, Scorp1us joined, agentzh left 10:10 agentzh joined 10:12 payload joined 10:15 pmurias joined 10:21 StephenPollei joined 10:32 DemoFreak joined
masak jnthn: ok, committing. the spectest run didn't turn up anything frightful. 10:32
s/committ/push/
10:33 payload1 joined
mberends it will be nice if more of us get into PIR programming :) 10:33
hv2 it will be nice if more of us get into perl6 programming :) 10:34
mberends heh 10:35
10:37 H1N1 is now known as H1N1[W]
dalek kudo: fa4198c | masak++ | src/builtins/io.pir:
[src/builtins/io.pir] removed 'prompt' undef warning

was issued. Fixed this.
10:37
masak mberends, hv2: less talking, more coding! :P 10:38
mberends what can I say? nothing, apparently ;)
masak is starting to behave like pmichaud 10:39
masak mberends: you're still talking? why aren't you coding? :) 10:40
mberends (gulp)
10:40 payload left
DanielC PIR does not seem to have an fseek() 10:42
mberends DanielC, seek() 10:43
DanielC Where is it? I didn't see it in the docs.
mberends docs.parrot.org/parrot/latest/html/...e.pod.html 10:44
DanielC ok
Matt-W masak: calm down, it's only IRC :)
masak Matt-W: :)
DanielC mberends: I wonder if there is a way to set the file position to a given *line* number (rather than a given byte offset). 10:46
hv2 In the absence of adverbial modifiers, is there any way to get the effect of :g without an explicit loop?
DanielC mberends: That would be for reading the packages.yml file.
mberends DanielC, no, there ain't, but the index will store byte offsets 10:47
DanielC ok
hv2 my $s = 'xyzzy'; my $t; while $t = $s.subst(/z/, 'a') { last if $s eq $t; $s = $t }; say $t; 10:48
There must be an easier way than that to perform all substitutions, surely ...
DanielC Since we are using an index anyways, maybe it makes sense for it to store byte offsets for both the data file and the YAML metadata file. 10:49
hv2: :global ? 10:50
hv2 Where? we don't have adverbial modifier support yet, I believe.
DanielC hv2: Why can't you say $s = $s.subst(/z/, 'a', :global) ?
yes, we do.
hv2 oh, as a separate argument 10:51
DanielC At least, rakudo does.
hv2 Gotcha, I didn't know they could go there, was looking for m:g/z/.
DanielC np
10:53 payload joined
mberends DanielC, it would probably be generally more efficient to has only the module name, and use the YAML for :ver :auth etc, because of possible wildcard searches. Therefore only the YAML file would carry the offsets to the versioned modules. We'll need to check this point though. 10:53
*hash
DanielC slaps his head 10:54
yeah
$P0["Foo::Bar"]
10:56 payload2 joined, payload left 10:57 payload1 left
mberends DanielC, I suggest we try a bottom up trial implementation completely outside of Rakudo, but presenting a Rakudo-friendly API. It will have to be heavily tested with realistic amounts of content before proposing it for inclusion in Rakudo. I'd like to set up a Gitorious repo for that, ok? 10:59
DanielC Sure... what is gitorious? 11:00
You are the expert here.
I'm happy to follow your lead.
masak mberends: you're implementing it in Perl 6, right?
mberends DanielC, another git sharing site
DanielC ok 11:01
mberends masak, no! PIR!
masak mberends: might still be a good idea to refer to it from proto, no?
maybe your new HTTP::Daemon too.
mberends masak: aha, the proto is always involved ;) Daemon is already referred. 11:02
masak oh, I see it is. 11:03
also, I'm thinking of rewriting the different sharting sites (github, googlecode, gitorious) as classes.
that way, we can use polymorphism when we install/update.
leading to cleaner code. 11:04
mberends good idea, we bikeshedded that earlier but didn't implement
masak I'll see if I can start doing that today in a local branch.
jnthn rakudo: Array.^parents>>.perl>>.say
p6eval rakudo fa4198: OUTPUT«Any␤Object␤»
jnthn rakudo: Str.^parents>>.perl>>.say
p6eval rakudo fa4198: OUTPUT«Any␤Object␤»
jnthn yay
masak jnthn++ 11:05
jnthn rakudo: Str.^methods>>.name>>.say
p6eval rakudo fa4198: OUTPUT«Method 'name' not found for invocant of class 'Sub'␤»
jnthn uff
rakudo: List.^methods>>.name>>.say
p6eval rakudo fa4198: OUTPUT«invoke() not implemented in class 'ResizablePMCArray'␤in Main (src/gen_setting.pm:3225)␤»
jnthn ewww!
masak :(
jnthn masak: I spent a while improving .^parents last night.
masak it shows. :) 11:06
jnthn masak: Today methods gets the treatment, plus an expanded test file.
masak sounds good.
jnthn masak: Well, I got 40 tests for .^parents now. and didn't even write those for :tree yet, which is the missing bit.
coverage++
masak indeed.
jnthn Still need .^roles and .^attributes doing too.
masak starts on today's TODO list
11:09 lichtkind joined 11:11 araujo left, payload2 left, payload joined 11:17 mycelium left
masak rakudo: my @a = $b; my $b = 5 11:18
p6eval rakudo fa4198: OUTPUT«Null PMC access in isa()␤in Main (/tmp/bE1KkmjXJS:2)␤»
masak ewww.
can you put subs in a grammar? how do you call such a sub? 11:19
can you put methods in a grammar? can you put methods outside of classes?
jnthn Yes, we already have a gazillion tickets on the "oh noes I use a variable before declaring it and it hurts" issue :-)
subs in a grammar - yes, it's just like putting a sub in any other kind of package
methods in a grammar - sure.
masak jnthn: yes, I know. "don't do that, then.: :)
11:20 donaldh left
jnthn methods outside of classes - yes anonymous ones at least. 11:20
masak jnthn: how do I call a method-in-a-grammar?
rakudo: sub foo(--> Array of Str) { my Str @a = <foo bar baz>; @a }; foo
jnthn A grammar is just a class, so when you instantiate the grammar you call methods on the intance.
p6eval rakudo fa4198: OUTPUT«Use of type object as value␤Type check failed on return value␤in sub foo (/tmp/mLLU4z660S:2)␤called from Main (/tmp/mLLU4z660S:2)␤»
masak jnthn: ok. 11:21
rakudo: grammar A { method foo() { say "OH HAI" } }; A.new.foo
p6eval rakudo fa4198: OUTPUT«too few arguments passed (1) - 3 params expected␤in Main (/tmp/ovJk1WFc8L:2)␤»
masak jnthn: so that _should_ work, right?
jnthn I'm not sure 11:22
masak submits rakudobug
jnthn It maybe is not Rakudo bug
rakudo: grammar A { }; A.new
masak but based on what you just said...
p6eval rakudo fa4198: OUTPUT«too few arguments passed (1) - 3 params expected␤in Main (/tmp/t2oLQ5Yelv:2)␤»
masak oh.
jnthn It's nothing to do with methods.
11:22 donaldh joined
masak seems you're right. 11:22
jnthn It's about what parameters the constructor wants.
masak and that's OK, because Grammar overrides new, I guess.
jnthn Yes, though whether it's overriding of new conforms to the spec, or whether it's spec'd, I couldn't tell you without digging into S05. 11:23
lichtkind is @() still in the spec?
masak lichtkind: yes.
lichtkind: just not the @ listop.
jnthn grammar A { method foo() { say "OH HAI" } }; A.new("foobarbaz").foo
rakudo: grammar A { method foo() { say "OH HAI" } }; A.new("foobarbaz").foo 11:24
p6eval rakudo fa4198: OUTPUT«OH HAI␤»
jnthn rakudo: grammar A { has $.a = "OH HAI"; method foo() { $.a } }; A.new("foobarbaz").foo
lichtkind masak: i mean the special variables that holds the positional regex match groups
p6eval rakudo fa4198: ( no output )
jnthn rakudo: grammar A { has $.a = "OH HAI"; method foo() { say $.a } }; A.new("foobarbaz").foo
p6eval rakudo fa4198: OUTPUT«Use of uninitialized value␤␤»
jnthn Now _that_ is rakudobug.
masak lichtkind: I think so, yes.
masak submits rakudobug 11:25
11:33 payload left
awwaiid Greetings. Someone mentioned to me relatively recently that Pugs is still the most feature-complete implementation of perl6. I have the feeling that they were wrong, but nothing to point at to decide how much more "complete" rakudo is. Any suggestions? 11:47
masak awwaiid: I suggest you download Pugs and Rakudo, and compare.
awwaiid: maybe decide beforehand what a good measure for 'complete' would be. 11:48
DanielC Do we have a measure of how many spec tests Pugs passes vs Rakudo?
masak yes.
skids_ some features have more tests than others, though.
awwaiid masak, good advice to be sure. I was hoping to shortcut that :)
DanielC masak: Where do we get that information for Pugs? 11:49
skids_ I think once laziness arrives then there will be no question about it.
masak awwaiid: well, the shortcut I usually takes in this matter is "does it really matter?" :)
DanielC awwaiid: I think we can shortcut that, if we can figure out how many tests Pugs passes.
jnthn awwaiid: I think that Rakudo and Pugs both have a lot of features. In many places they interesect. In other areas, there are things that one does that the other doesn't.
masak DanielC: I guess you could try and run the test suite on Pugs. 11:50
DanielC awwaiid: What masak said. :-)
masak it's likely to be... interesting.
jnthn awwaiid: For example, Rakudo's handling of roles and types is way beyond that of Pugs. On the other hand, Pugs probably is a bit ahead on laziness.
DanielC masak: I might do that, just for curiosity. Why interesting?
jnthn ('cus Rakudo doesn't do that at all yet)
skids_ Though it's slightly unfair in that it will fail a few stupid easily fixed things where the name of something just changed in the spec.
awwaiid masak, it matters for advocacy on the progress of various perl6 implementations
skids_ e.g. Str.flip 11:51
masak DanielC: because it's probably not been done in a while. bit rot, and all that.
DanielC jnthn: Being implemented in Haskell, Pugs should be ahead in laziness.
jnthn DanielC: Right.
DanielC masak: Ok.
jnthn DanielC: It comes easier there I guess. :-)
DanielC y
masak awwaiid: ah, that's why I can't really be bothered to care about it. I see. but you go on. :)
DanielC awwaiid: My understanding is that most of the activity is in Rakudo right now. 11:52
masak it is.
and sm0p, and STD.pm... 11:53
and Elf, I think...
basically all implementations except Pugs.
skids_ What was mcharity's decision as to the trajectory of elf? Is it going to try to merge with smop?
11:53 synth joined
awwaiid masak, advocacy is important! I've been going around with a terminal and a big font and show people rakudo, and every now and then they bring up pugs (as I mentioned). I want to encourage people to participate but when someone is like doesn't-pugs-do-that-years-ago I want an accurate response. But I agree that such knowledge / response isn't required 11:54
skids_ (I got that right, right elf is mcharity's mostly?)
masak awwaiid: oh, sure, don't get me wrong. advocacy is important, no doubt. 11:55
awwaiid ya, cool. thanks for the info, I'll poke at pugs a bit sometime to see for myself as you advise :)
masak awwaiid: it's just that I don't feel my response to people's questions about Pugs has to involve exact numbers. I just say 'yes, that was the Golden Age. no-one is working on Pugs right now' and leave it at that. 11:56
skids_ "It isn't even keeping up with spec changes" might do it.
11:57 ruoso joined
masak yes, and my lack of interest in the Pugs 'progress' is predicated on such things. 11:57
11:57 H1N1[W] left
masak it used to be Pugs was the cool Perl 6 implementation. now it's a historical curiosity. at least until someone picks it up again. 11:57
11:57 Sunbeam joined 11:58 Sunbeam is now known as H1N1
ruoso Hello! 11:58
pmurias, hi
mberends by recent trends, the Rakudo Christmas will probably come before the Pugs Christmas 11:59
12:04 Util joined
masak hopefully, the u4x Christmas will be reasonably finished by then... 12:07
speaking of which; literal: ping. 12:08
b_jonas I preferred Harry Potter birthdays – but of course not everyone has those, while everyone has Christmas at the same time
12:10 xinming_ joined
hv2 rakudo: my $s = 'x'; 'x' ~~ m/$s/; 12:10
p6eval rakudo fa4198: OUTPUT«Null PMC access in get_string()␤in regex PGE::Grammar::_block52 (/tmp/47O9zrxq1O:1)␤called from Main (/tmp/47O9zrxq1O:2)␤»
12:10 pyrimidine joined 12:11 pyrimidine left, pmurias_ joined 12:12 pmurias_ left, pmurias left
masak hv2: whoa! is that a known one? 12:18
oh wait. 12:19
it is.
it's the 'variables aren't interpolated in regexes' TODO bug.
mberends: I got an account on Gitorious, but I can't figure out how to clone/pull-request. so I'll just give you the patch directly: gist.github.com/126450 12:21
12:21 payload joined 12:27 xinming left
lichtkind mberends: i largely expandet appendix B please clean up some corners in the meta op section if you like i leave now :) 12:27
12:28 yves joined 12:32 payload left
pugs_svn r27043 | wayland++ | [S12] A heirarch must be the heir of a lord or king or something. Anyway, 12:33
r27043 | wayland++ | I've killed him and replaced him with a hierarch :).
hv2 Cool, I have the first part of my program ported. Unfortunately, the main loop (scanning over a dictionary testing each word against a regex) is a bit slow, and a bit large - taking just the first 100k words (about 1MB) the program takes 123s and grows to 450MB. :( 12:39
DanielC Does Parrot support 64-bit arithmetic? e.g. can to xor two 64-bit values? 12:41
hv2 Taking the first 10k words, it runs for 13.7s and grows to 150MB, so it may just be the nature of the gc that's letting it grow so much.
masak wayland++ # but really, "fixed typo" is enough :P 12:44
Matt-W hv2: very little in the way of speed and size optimisation work has been done, so I'm not really surprised
masak although chromatic++ has been at it lately, judging from his blog posts. 12:49
jnthn afk, slovak
rjh DanielC: seems rakudo coerces to double once you reach 2**50 12:50
DanielC rjh: Thanks.
masak jnthn: veľa šťastia! 12:52
13:06 amoc left
Matt-W twists his brain into Perl 5 mode 13:06
13:07 pmurias joined
pmurias ruoso: hi 13:07
ruoso pmurias, have you created the GSoC blog already?
pmurias ruoso: i have created it (pmurias.livejournal.com), put i still have to write the first blog post :( 13:11
ruoso that's cool... I'll just update the GSoC wiki page 13:12
pmurias where does the GSoC wiki live? 13:13
ruoso www.perlfoundation.org/perl5/index.cgi?gsoc 13:14
hmm... for some reason it doesn't accept the change...
13:17 PhatEddy joined
hv2 masak: which chromatic blog posts? all I can see are 6perl minutes, in which he mostly says very little himself. 13:18
masak hv2: hm, I'll see if I can dig up some. I've read a few lately, it seems. but I'm over a month behind on my blog reading.
hv2 Ah ok, I didn't look that far back. 13:19
pmurias ruoso: i updated the wiki page
PhatEddy rakudo: class Foo { $!a }
p6eval rakudo fa4198: OUTPUT«Lexical 'self' not found␤»
ruoso pmurias, alright...
PhatEddy rakudo: class Foo { has $!a, $!b }
p6eval rakudo fa4198: OUTPUT«Lexical 'self' not found␤»
ruoso mildew: say "Alive!"
p6eval mildew: OUTPUT«Bareword found where operator expected at perl6-snapshot/STD.pm line 4, near "$LANG is"␤ (Missing operator before is?)␤Bareword found where operator expected at perl6-snapshot/STD.pm line 5, near "$PKGDECL is"␤ (Missing operator before is?)␤Bareword found where operator expected
..at…
masak hv2: use.perl.org/~chromatic/journal/38992 and use.perl.org/~chromatic/journal/38931
PhatEddy rakudo: class Foo { has ($!a, $!b) }
p6eval rakudo fa4198: ( no output )
ruoso pmurias, do you think you could fix the evalbot? 13:20
hv2 masak: cool, thanks
13:20 amoc joined, ejs joined
PhatEddy I find the "Lexical 'self' not found" error impossibly obscure. No ?? 13:20
masak PhatEddy: no, why? 13:21
13:21 PhatEddy left
pmurias ruoso: i can try 13:21
masak PhatEddy: come back! :)
13:22 PhatEddy joined 13:23 synth left, PhatEddy left, synth joined 13:24 PhatEddy joined 13:29 hanekomu left
Matt-W Amazing how quickly you get used to Perl 6 13:30
I keep writing "self.getline()"
which PErl 5 doesn't line
like*
masak Matt-W: we need a Perl 6 emulation module on CPAN. :) 13:32
hv2 I tried to write 'while <$*IN>', which perl6 doesn't like, or rather likes for all the wrong reasons ...
pmurias masak: like v6.pm? 13:34
masak pmurias: aye... how does v6.pm work, again? 13:35
ruoso masak, it uses Module::Compile to generate p5 code from p6 code.... 13:36
masak aha. 13:37
13:37 hanekomu joined
ruoso masak, but there was a weirdier plan to use B:: modules to generate p5 optree directly from the source... 13:38
which would allow natural debugging 13:39
masak sounds ambitious.
ruoso but it kinda lost moment when it became clear that p5 just can't provide all the semantics p6 needs
13:40 barney left
masak indeed. it's hard to both emulate forwards and break backwards compatibility. 13:40
Matt-W masak: I need to go to the future! 13:41
masak Matt-W: tag along, we're going there too! 13:42
Matt-W yay! 13:43
hv2 I want to go, but I don't have enough time :(
13:43 mizioumt joined 13:44 frew|work joined
b_jonas hv2++ lol 13:47
13:49 Whiteknight joined 13:56 decasm_parked joined 13:58 neisen joined 13:59 neisen left
FurnaceBoy hv2, sit tight, the future comes to you 14:01
pugs_svn r27044 | pmurias++ | [re-smop] restored the $reg = ... form in m0ld 14:02
masak The Future: Soon in a Theater Near You! 14:03
b_jonas xkcd.com/338/ or that other similar comic with boats?
14:04 frew|work left 14:09 p6eval left, p6eval joined 14:10 p6eval left, p6eval joined 14:12 p6eval left, p6eval joined
pmurias is it possible to see why the error messages the evalbot receives 14:13
pugs: say "hi" 14:20
p6eval pugs: OUTPUT«hi␤»
pmurias mildew: say "hi"
p6eval mildew: ( no output )
masak pmurias: sorry, could you rephrase that question? 14:23
I reached the end of it and expected more. :/
(a predicate of some kind) 14:24
pmurias masak: sorry, i'm confused by fighting with the evalbot too much
what i meant is how can i see what errors the evalbot receives 14:25
masak pmurias: usually, it prints them too. 14:26
rakudo: }
p6eval rakudo fa4198: OUTPUT«Syntax error at line 2, near "}"␤in Main (src/gen_setting.pm:0)␤»
pmurias rakudo: while 1 {} 14:27
jnthn back
p6eval rakudo fa4198: ( no output )
14:28 p6eval left, p6eval joined
pmurias mildew: say "hi" 14:29
p6eval mildew: OUTPUT«hi␤»
pmurias moritz_: mildew exceeds some sort of timeout/limit 14:30
14:32 p6eval left
mberends pmurias: evalbot does not seem to collect stderr output: lines 144-146 in svn.pugscode.org/pugs/misc/evalbot/...xecuter.pm 14:34
14:35 p6eval joined
pmurias mberends: it's a problem with runtime limits 14:35
mildew: say "hi" 14:36
p6eval mildew: OUTPUT«hi␤» 14:37
mberends masak: thanx for Net::SMTP patch. You'll be able to commit in future ;) 14:39
masak \o/
mberends: one day, I'll write an email client in Perl 6, and then dogfood that until I prefer it to the Gmail web interface. :) 14:40
14:40 snarkyboojum joined
mberends that will be one very fine day :) 14:40
b_jonas masak: do you want to write one for your exact needs only, or do you intend that lots of people use it? 14:41
in the latter case, I can start complaining about all the features I am missing from gmail 14:42
masak b_jonas: I'll be happy to discuss, but I'm not intending to write a Gmail replacement, no.
jnthn mildew: class Foo { }
masak b_jonas: I just feel the need to cut the ties to Google before they engulf the world. :) 14:43
p6eval mildew: OUTPUT«Could not find variable ClassHOW in the lexical scope.␤»
mberends I'm trying to make the SMTP plumbing, but the Socket doesn't receive the initial banner from the host. It just hangs instead :(
jnthn mildew: knowhow Foo { }
p6eval mildew: ( no output )
jnthn mildew: knowhow Foo { }; say "lived"
p6eval mildew: OUTPUT«lived␤»
b_jonas masak: sure, not a gmail replacement in terms that you won't provide terrabytes of free space and high reliability and fast internet connection to everyone for free
jnthn mildew: knowhow Foo { method x { say "lived" } }; Foo.x
p6eval mildew: OUTPUT«lived␤»
jnthn Nice 14:44
b_jonas masak: or a better ads business
masak b_jonas: :)
pmurias ruoso: wrote a first blog post at pmurias.livejournal.com/ 14:45
14:45 Scorp1us left 14:46 frobnitz joined 14:53 snarkyboojum_ joined 14:54 estebann_ joined 14:55 estebann_ left 14:59 justatheory joined 15:01 snarkyboojum left 15:03 jferrero joined, snarkyboojum_ left
mberends DanielC, let me know if you've created an account and want to be able to commit: gitorious.org/parrot-module-lib/main 15:07
masak jnthn: might it be that 'exit 1' stopped working when Perl 6 got its own HLL on Parrot? 15:12
TimToady hv2: I think you're seeing a known bug in rakudo
masak jnthn: I see other PIR code with 'exit 1', I tried it and it returns 1. Rakudo returns 0.
TimToady rakudo: say "abc" ~~ /(.).*(.)/
p6eval rakudo fa4198: OUTPUT«abc␤»
TimToady a Match in list context should behave as a Capture, and flatten 15:13
hv2 TimToady: this is my map over the captures?
TimToady map should supply a list context, so the match should flatten
hv2 TimToady: ah ok; the @(do the match) workaround was good enough for me for now. 15:14
TimToady rakudo: say ("abc" ~~ /(.).*(.)/).caps
p6eval rakudo fa4198: OUTPUT«0 a1 c␤»
TimToady rakudo: say ("abc" ~~ /(.).*(.)/).caps.WHAT
p6eval rakudo fa4198: OUTPUT«List()␤»
jnthn masak: Do we certainly reach that exit 1?
masak jnthn: yes.
pmichaud good morning, #perl6
masak jnthn: I checked.
jnthn masak: But yes, I looked at that last night and was like...huh...it *looks* correct. :-/
masak pmichaud: morning, pm.
jnthn pmichaud: morning
TimToady pmichaud: am pm
pmichaud: actually, am not pm 15:15
masak jnthn: I hope it's fixed before the next release. :/
hv2 TimToady: the speed and size are bigger problems for me, I just rewrote my plan to say "come back in a month, to see how things have improved"
TimToady yes they're concentrating on those right now, and hope to get better profiling soon 15:16
hv2 TimToady: hopefully by the time speed is slightly more sensible, there will also be enough of the missing features implemented to start making some of the gains I hoped to find. But I can't start diving into that myself right now, the pit is too bottomless at the moment. 15:17
15:18 hercynium joined 15:20 donaldh left 15:21 donaldh joined 15:22 viklund joined
viklund So, I'll repeat my question, when will I be able to .wrap multis? jnthn++? 15:23
masak: 3G, in cars passengers seat 15:24
masak viklund: woot. 15:25
jnthn viklund: Once somebody figures out how wrapper candidate lists and multis interact and implements the code to Make It Work, I guess. ;-) 15:26
viklund my first test was trying to wrap a multi ;) 15:27
jnthn There's always someone...
viklund what's wrapper candidate lists?
jnthn the list of candidates to defer to (e.g. the inners)
viklund ok 15:28
jnthn I wonder if just making .wrap on a Multi call .wrap on all of the candidates would work.
viklund installing one wrapper for each?
jnthn Hmm...probably it could. And that'd be easy.
Yeah
DanielC mberends: HI. I just created an account at Gitorious. My account is DanielC.
15:28 decasm_parked is now known as decasm
masak jnthn: sounds like the way to go, by me. 15:28
jnthn masak: Yes and no 15:29
viklund is the MMD in parrot right now? 15:30
TimToady distribution of the wrapping doesn't sound right to me
mberends DanielC: cool, added as a committer :)
TimToady but I'm not sure why
DanielC :-)
15:30 masak left
viklund a wrap might modify the arguments so that a different multi should be called 15:31
jnthn viklund: That's why I'm not sure the wrap each candidate is correct.
viklund jnthn: no, I agree
moritz_ rakudo: multi a() { 1 }, multi a(@) { 2 }, &a.candidates>>.wrap { callsame }; say a() 15:32
p6eval rakudo fa4198: OUTPUT«Statement not terminated properly at line 2, near "{ callsame"␤in Main (src/gen_setting.pm:0)␤»
jnthn But it's a question of interaction.
If you wrap and give a different signature to any existing multi candidates, what does that mean?
moritz_ rakudo: multi a() { 1 }, multi a(@) { 2 }, &a.candidates>>.wrap(-> { callsame }); say a()
p6eval rakudo fa4198: OUTPUT«Null PMC access in find_method()␤in Main (/tmp/Kn9LGJxUW8:2)␤»
jnthn That we have a new candidate? That we temporarily hide the candidate that we wrapped?
moritz_ rakudo: multi a() { 1 }; multi a(@) { 2 }, &a.candidates>>.wrap(-> { callsame }); say a()
p6eval rakudo fa4198: OUTPUT«Null PMC access in find_method()␤in Main (/tmp/eRJBkD4dXn:2)␤»
jnthn I'm hugely tempted to punt and say, "y'know, go find the candidate you want to wrap and wrap that" for now. 15:33
viklund to my mind it should be a new candidate
jnthn And .wrap directly on a multi is illegal.
TimToady my &new := &old.assuming(42)
jnthn At least for 6.0.0.
TimToady what happens if &old is a multi
viklund but I guess just having something is better than nothing... 15:34
jnthn TimToady: assuming doesn't do any binding of parameters or any decision making.
TimToady I think of &foo as the external, singular abstraction of the call
jnthn TimToady: Or at least, Rakudo's one doesn't.
assuming just says "when I'm invoked, unshift this positional onto the start of the argument list" 15:35
Or stick it amongst the named's.
viklund so wrapping a multi directly is illegal? Hmm
jnthn viklund: I'm not sure.
15:35 jhorwitz joined
jnthn viklund: If we can come up with a sensible way to do it, I'd worry less. 15:36
TimToady it's probably the conservative thing to do, if we want to allow it someday
if you want the candidates, you know where to find them
viklund jnthn: The MMD, is that done in Rakudo currently or is it at the Parrot level?
jnthn It's one of those tricky feature interactions where I haven't yet seen something that's obviously right in the vast majority of situations. 15:37
TimToady course, what happens if one of the candidates is multi?
jnthn TimToady: How on earth would that come to pass?
TimToady depends on whether &foo is really an object that hides multiness
jnthn viklund: We subclass Parrot's MultiSub PMC as Perl6MultiSub to implement the Perl 6 dispatch algorithm.
viklund ok, I guess I should read up on this, it's interesting 15:38
jnthn TimToady: I agree it hides it to the point you can say foo(1,2,3) and not care if you're doing a multi dispatch or not.
TimToady: I guess the point we maybe agree less is just how much twiddling you can do before the differences being to show up.
*begin 15:39
15:39 nihiliad joined
TimToady might be possible to pessimize when you see &foo rather than foo() 15:39
15:39 M_o_C joined
TimToady and generate an only sub foo that redispatches 15:39
b_jonas um 15:40
TimToady then wrapping becomes a non-issue
b_jonas but only for multis, because if you have lexical subs then it's important that taking a my &foo parameter and passing it recursively passes the original sub instead of a wrapper sub that calls that sub 15:41
TimToady why?
15:41 ejs left
b_jonas that's why ruby has Proc.new without arguments, which is a method that really shouldn't exist but is needed because proc { yield } has that problem 15:41
TimToady: in a recursive function you could end up with passing an upvalue-chain of functions calling the next one 15:42
jnthn b_jonas: .wrap is an in-place modification, if that helps clarify things.
b_jonas and I do have examples where I pass a callback unmodified to a recursive invocation of myself
TimToady not sure that applies, since a wrapper calls with a different mechanism
b_jonas jnthn: I'm talking about plain &foo, not wrap
TimToady but certainly there's no reason to put a wrapper around something that already is an only sub 15:43
b_jonas TimToady: sure, only I'm saying if you want to do that with multis, you have to check that it's indeed a multi
TimToady the only point of the multi wrapper would be to make a list of candidates look like a single object really 15:44
b_jonas yes
TimToady sure
jnthn I guess the Multi role/whatever an implementation decides Multi should be would just have a .wrap that overrides the default one and makes the only wrapper. 15:45
It still feels awkward though.
I guess you'd have to know you were wrapping a multi, and that you'd better write a pretty permissive signature.
b_jonas (by the way, why does super in ruby only able to call a method of the same name as itself? I think that's a limitation which denies you from doing subclassing stuff you could otherwise do in smalltalk or perl5.)
TimToady wrappers are supposed to generally just bind the capture directly and pass it on, usually 15:46
it's probably motivated by the dual of duck typing, which would be type ducking 15:48
15:48 japhb joined
b_jonas tries to imagine the dual of duck typing 15:50
TimToady if it ducks like a quack... 15:51
viklund ehm... 15:52
b_jonas I think it's when they burn someone and conclude that he's a duck or something… that doesn't really work
mberends DanielC, please add your thoughts: gitorious.org/parrot-module-lib/mai...er/ROADMAP 15:53
DanielC ok
mberends you can git clone, commit and push there :)
DanielC Thanks. 15:54
DanielC reads ROADMAP
1. Hello World :-)
Yeah, I'll need to start with that.
I don't know PIR, though it doesn't look as scary as I expected. 15:55
mberends same thoughts here
TimToady my serious point, though, is that, to the extent you make use of duck typing, method names become a funny kind of global namespace, so forces some conservatism about method names
jnthn Well, it's a line-based assembly-ish language, so there's not so much room for scariness ;-) 15:56
b_jonas yes, but you can still have private methods, and indeed perl6 has them
and in theory you could even use lexical multis inside namespaces as methods, and then you have private methods you can ducktype 15:57
TimToady if a ruby class has a private method, can you also call a public method of the same name?
b_jonas TimToady: no, not in ruby
TimToady then they're not so very private
b_jonas I said perl6 has them, ont ruby or smalltalk
TimToady ah 15:58
DanielC mberends: After (2) we/I could make a Fletcher32 program. The "design notes" call for taking a Fletcher hash of the file data, and the Fletcher algorithm is just a notch harder than Hello World.
jnthn TimToady: Question on .^methods
TimToady attempts to look like a toadstool
jnthn Given:
class A { method foo($param --> Any) { } multi method bar($thingy) { } multi method bar($thingy, $other_thingy) { }
b_jonas I'm thinking about something when you have a new Data::Dumper variant, and you want to allow classes to redefine how they're serialized: then you can have a multi sub in the namespace of that module, and let classes override that
15:58 alester joined
jnthn } 15:58
15:59 zostay_ joined
jnthn TimToady: How many methods does A.^methods(:local) hand back? 2 or 3? 15:59
(That is, are the multis grouped under a single entry, or returned individually?)
TimToady 2, because I think &bar is an object
jnthn OK, thanks. 16:00
16:00 zostay left
mberends DanielC: ok. We'll need to lurk on irc.perl.org#parrot as well 16:00
TimToady on the other hand, it might be specced inconsistently with that
DanielC mberends: ok 16:01
16:01 zostay_ is now known as zostay
jnthn TimToady: I didn't find S12 clear either way. 16:01
16:02 hanekomu left
TimToady I'm sure I've been convinced both ways as to whether longnames transcend inheritance boundaries... 16:06
b_jonas flip a coin 16:07
TimToady if they do transcend, it implies &bar knows how to find bar candidates from parents as well as self 16:08
jnthn I've handled that as, if the dispatcher finds no applicable candidates in the most derived class, it looks up the inheritance hierarchy. 16:09
TimToady yes, but is that a fallback?
jnthn Fallback in what sense?
TimToady would a better candidate in a parent class be hidden by it? 16:10
jnthn Yes.
TimToady if there's a worse candidate in the derived class
jnthn Right.
TimToady then it's the non-transcendent model
the transcendent model is more like normal multi dispatch
16:10 beggars joined
b_jonas so the transcendent model is what c++ has, where a method in a subclass overrides a particular longname only? 16:10
jnthn I guess that one means knowing all the multi variants from the parents and making an augmented copy when constructing the subclass. 16:11
TimToady anyway, I can argue it both ways
b_jonas in fact, that's not even the transcendent model
it's a third one
TimToady b_jonas: yes, basicaly
jnthn Having figured out how to make it work efficiently one way, I know which argument I prefer. ;-)
b_jonas because in c++ if you define a more specific method in a subclass only and you call that on a variable that's statically only known to be member of the superclass, the more general method in the superclass or its overridden variant is called only 16:12
so I was wrong, that's an entirely different model
TimToady right, it's always virtual in p6
(well, unless you call a private method)
submethods are also sort of non-virtual in that sense 16:13
insofar as you have to know the acting type when you call it
not the actual type of the object
16:13 alexn_org left
TimToady the effective type would be perhaps a better way to say it 16:14
b_jonas if you want the non-transcendent version, then for generality (treating multis and virtual methods the same) you'll want to have multi-multi subs which first dispatch to one of several multisubs on the arguments they're multi on, and then dispatches on the other variables, even if dispatching as a whole would find a more specific method
16:14 Util left
b_jonas whereas c++ can get away with this because there overloading functions and virtual methods are obviously different 16:15
though this argument worked only if you indeed wanted to treat methods and multis the same, which you might not
TimToady yes, symmetry is overrated 16:16
pmichaud reflects on that statement a bit. 16:18
b_jonas so, until someone disproves that conjecture that the plane cannot be tiled with congruent copies of a finite number of polygons with 5-fold rotational symmetry, we don't want to build systems from perfectly symmetrical building blocks? 16:20
(is that still a conjecture by the way or has it been proved or disproved since?) 16:23
TimToady I think the universe is biased a bit toward spontaneous symmetry breaking :)
and anyway, I have another argument against transcendence
which is that if you inherit from a foreign object, it can't tell you about multis
hv2 symmetry is also underrated.
jnthn TimToady: That's a good point too. 16:24
TimToady: Also, not taking the transcendence route helps keep method dispatch semantics consistent when you have a multi.
TimToady: Things get awkward if class A has a multi, class B as an only and class C has a multi, where C < B < A.
Where those three routines all have the same name. 16:25
16:25 hanekomu joined
jnthn Because then you ahve to work out how to fit in the only. 16:25
TimToady well, sure, same is true in normal multi
but in normal multi, the only hides everything outside of itself
same would happen here
jnthn Right, but class B hiding the things in its subclass seems...wrong.
TimToady so one could argue that a foreign method is inherently only
16:26 justatheory left
TimToady yes, one could make a case for encapsulation forcing every super boundary to look like "only" 16:26
so I think I lean the way you want me to fall over :)
jnthn :-)
TimToady pretends to be decisive 16:27
b_jonas maybe we should consider an example if you want to decide this, say how you'd implement a numeric tower so it can correctly dispatch adding two numbers of any types
TimToady as soon as you say "adding two numbers", you're talking about normal multis 16:28
we don't particularly provide infixes as single-dispatch methods except as a form of syntactic sugar for the infix 16:29
so there's not much point in trying to squeeze the semantics of $a + $b into SD
b_jonas am I? but how do you define them so that if you have a class that behaives as a vector made of any numbers and another class that implements bignums and neither knows about the other, a bignum multiplied by a vector of ints turns out to be a vector of bignums?
TimToady im(ns)ho 16:30
b_jonas even with multi-dispatch I've no idea how you can do that correctly
TimToady vector processing is explicit in Perl 6, generally, using hyper
b_jonas sure, but not a plain array vector but some trickier vector 16:31
oh well
TimToady handwaves in jnthn++'s direction :)
b_jonas in that case the vector just defines a multi sub with high enough priority so a vector multiplied by anything is dispatched to it
plus, this is not an argument towards anything because I've no idea how this should be done properly 16:32
TimToady in the limit, you can write all the multis, though that can get explosive, of course
16:32 payload joined
b_jonas that's why I'm saying they don't know of each other 16:33
16:33 Psyche^ joined
b_jonas the vector class and the bignum class is developped independently and I'm just using them together without knowing how they work 16:33
and I expect them to dwim
I wrote an example like that once with two classes written by me pretending they don't know of each other, but that only worked because I wrote the multiplication as scalar * vector, not the other way 16:35
16:35 pmurias left
b_jonas I think it would have broken the other way 16:35
TimToady we at least have an fairly easy way to express commutivity
speaking of commuting, I'd better go take a shower 16:36
bbl &
(thanks, btw)
16:44 viklund left, amoc left 16:45 amoc joined, Patterner left, Psyche^ is now known as Patterner 16:54 dakkar left 17:07 viklund joined, araujo joined 17:08 unitxt joined 17:09 Util joined 17:11 masak joined 17:12 justatheory joined
Util DanielC: ping 17:15
DanielC Util: pong
Util FYI I have converted and tested `binary-trees` and `fannkuch` from the Debian Shootout. 17:16
I have the former pushed into a branch of my repo fork, and will push the latter soon.
I will try to merge back into Main in the next few days. (Still learning Git)
I have not updated RESULTS, because I have no computer like your platform.
DanielC Ok. Thanks!
Util Glad to help!
DanielC Util: Is your work already in per6-examples?
pmichaud will be happy to give you commit access.
Util binary-trees is in my fork. pmichaud has already granted access, but I am trying to follow Frew's recommended workflow. 17:17
Hence, working in a branch of a fork, instead of the mainline. 17:18
DanielC I have no idea what Frew's recommended workflow is, but for per6-examples I don't think anybody cares.
Util wiki.github.com/rakudo/rakudo/frews...d-workflow
DanielC *click*
Keep in mind that perl6-examples is already its own branch, separate from Rakudo main. 17:19
So it's not as big a deal as if we were submitting code to Rakudo itself.
But it doesn't matter. I'm just glad that you contributed more benchmarks. 17:20
Util: Let me know when you upload your work to perl6-examples so I can update.
Util Update what? RESULTS file? 17:21
DanielC update = update my local repository so I can get your files.
"git pull"
17:22 jferrero left
Util DanielC: will do. 17:22
17:24 barney joined 17:25 hv2 left
ruoso mildew: say "ALIVE!" 17:37
p6eval mildew: OUTPUT«ALIVE!␤»
ruoso mildew: role Foo { method bar { say 'Cool!' } }; Foo.bar 17:38
p6eval mildew: OUTPUT«Cool!␤»
ruoso mildew: my $a = ::Multi.new; $a.variants.push(sub (int $a) { say $a }); $a.variants.push(sub ($b) {say 'Hah!'}); $a.(1); $a.('2'); 17:42
p6eval mildew: OUTPUT«Could not find variable int in the lexical scope.␤»
ruoso hmm... it seems int is not in the CORE yet... 17:43
pugs_svn r27045 | lwall++ | [S12] limit multi method effects to inside a class to preserve encapsulation
r27045 | lwall++ | likewise .^methods describes a set of multi methods as a single method
ruoso mildew: my $a = ::Multi.new; $a.variants.push(sub ($a,$b) { say $a }); $a.variants.push(sub ($b) {say 'Hah!'}); $a.(1,2); $a.('2');
p6eval mildew: OUTPUT«1␤Hah!␤»
jnthn TimToady++
ruoso TimToady++ indeed... multi methods was still kinda blurry 17:44
TimToady though we'll have to decide whether it's .variants or .candidates :)
masak mberends: you have Rakudo commit access nowadays?
jnthn The spec is now in line with Rakudo. ;-)
b_jonas not .overloads ? 17:45
jnthn please not overloads!
:-)
ruoso rakudo: my $a = ::Multi.new; $a.variants.push(sub ($a,$b) { say $a }); $a.variants.push(sub ($b) {say 'Hah!'}); $a.(1,2); $a.('2');
masak I for one, welcome our .overloads overlords.
p6eval rakudo fa4198: OUTPUT«Method 'variants' not found for invocant of class 'Multi'␤»
ruoso rakudo: my $a = ::Multi.new; $a.candidates.push(sub ($a,$b) { say $a }); $a.candidates.push(sub ($b) {say 'Hah!'}); $a.(1,2); $a.('2');
p6eval rakudo fa4198: ( no output )
ruoso that's surprising...
jnthn ruoso: .candidates is not the real candidate list. 17:46
Taht is, it doesn't reutrn something rw
masak jnthn: should you be able to push, then?
jnthn (so we should probably blow up on that...)
pmichaud "I, for one, welcome our new multi method overload masters."
TimToady let's you and him fight :)
jnthn At the moment you can do $a.push
pmichaud oops, masak++ beat me to it.
masak: (re IO::prompt) -- I think that it should simply return $*IN.get 17:47
b_jonas :-)
pmichaud no string conversions at all.
TimToady anyway, feel free to doctor S12 when you guys come to a consensus
masak pmichaud: I'll see if I can convert that thought to a patch.
pmichaud I think it can also go to setting :-) 17:48
ruoso one issue is when is a Multi mutable or immutable?
pmichaud multi sub prompt($msg) { print $msg; $*IN.get; }
masak pmichaud: I'll try that, than.
jnthn ruoso: The biggest issue with candidates just being an array accessor rather than adding a candidate being a method on Multi itself is cache invalidation.
ruoso: That is, it's easy if it's a method on Multi to say "oh hey, we have a new candidate, we need to re-sort"
(Since you only have to sort the candidates once...once you know the candidate list anyway. Or when the candidate list changes.) 17:49
TimToady .add_method++
ruoso jnthn, but you can still implement that while preserving the array-like acces
jnthn ruoso: It's a pain.
TimToady: .add_method for a multi-*sub* though?
TimToady: Maybe add_candidate?
ruoso loves array and hash-like API for regular stuff
TimToady .add_variant :)
.push_pretty_please 17:50
ruoso but seriously... I do think having the API for lists following the list api as a cool thing
i.e. the *list* of candidates 17:51
it makes the API saner
so instead of having four methods in the Multi to manipulate the candidates... you simply have an accessor for the candidates, and the methods to manipulate that list in there... 17:52
jnthn ruoso: Yeah but then you need to have the List be some kinda proxy...which for something so low level...
ruoso but in the low-level you can access something more low-level 17:53
but in the high-level, it's cool to have that kind of semantics
b_jonas so? what's so magical in a tied array-like duck?
17:54 jferrero joined
TimToady it's not like adding variants is going to be on anybody's critical path...I sincerely hope... 17:54
s/critical/hot/ maybe 17:55
that's a TimToady-- for sloppy metaphors
masak pmichaud: moving 'prompt' into setting worked perfect. spectesting before pushing.
17:55 Molaf left
jnthn TimToady: I wasn't worrying about runtime efficiency. 17:56
17:56 Molaf joined
mberends masak, Rakudo commit access yes, but not many commits yet 17:56
b_jonas it's essential anyway that you be able add variants to multis in runtime I think 17:57
that part is at least symmetric with methods
jnthn b_jonas: The debate isn't about whether you should be able to, just how the interface for doing that should look.
b_jonas but what does the interface matter?
masak mberends: anyway, great news. welcome aboard! :) 17:58
jnthn b_jonas: That you can do it the same way on different implementations.
b_jonas you're bound to implement a generic array-like duck on which you just have to define only a few methods anyway
masak mberends: viklund_++ and I are having a November hackathon tonight.
jnthn That sentence made little sense to me.
b_jonas or just make the variants return a snapshot and have an add_variant or something
pmichaud masak: excellent. Less code++. More Perl 6++ . 17:59
jnthn b_jonas: Yes, that's what Rakudo has at the moment.
masak pmichaud: "Less code. More Perl 6." stuff for a T-shirt, if you ask me.
pmichaud I will create that one.
jnthn Basically because the Multi needs to know when it gets a new candidate.
pmichaud I need to get my t-shirts ready anyway.
masak \o/
jnthn So it can invalidate its sorted candidate list and so forth. 18:00
b_jonas by the way, is perl6 required to have the kind of weak pairs that hold the car weakly and if the car can be collected then the cdr can be as well?
and weak dictionaries with similar semantics?
because a multi-method may need to hold its variants in a very tricky way so that if a variant requires a certain class of argument and that class is no longer referenced then that variant is freed too 18:01
jnthn The reference from the multi's signature is enough to keep it alive. 18:02
b_jonas isn't that optional?
jnthn No.
b_jonas meaning that it may keep it alive in some implementations but other implementatoins may collect it
TimToady y'know, guys, we're actually trying to keep multis statically analyzable here...
that's why by default multis are only lexical
b_jonas :-) 18:03
TimToady and lexical scopes close at the end
otherwise we can make no guarantees about the speed of $a+$b
so from a Perl 6 perspective, I don't really care how multi variants are inserted. I almost want to hide that interface from mere mortals. 18:04
b_jonas so we can't override 6*9 to give the right result globally? 18:05
TimToady you could wrap an existing method
and if infix:<*> is defined in terms of low-level single-dispatch, you could even do monkey typing on the class 18:06
b_jonas so that's why you were saying multis and methods are different
TimToady but we don't encourage magical action at a distance
jnthn TimToady: In that case I *really* don't want to go to the extra effort of making it look prettier. :-)
TimToady subs define the language; method semantics are delegated to classes 18:07
and one of the fundamental design principles is that a given lexical scope should know exactly which language it's in
and not go all wobbly and generic without explicit declaration to that effect 18:08
b_jonas but then how would multimethods even work ?
TimToady they export into your lexical scope when you use
b_jonas but don't you have to dispatch the method part first and the multi part only after that? 18:09
TimToady you're confusing yourself with the term multimethod 18:10
18:10 mizioumt1 joined
TimToady Perl 6 has multi subs and multi methods, and they have little to do with each other 18:10
b_jonas maybe, but I don't get this "export to your lexical scope" thing. that sounds like a contradiction. it's not lexical if you export stuff to it.
hmm, so "multi method" is like "long double"? 18:11
TimToady all importation in p6 is lexical by default
18:11 mizioumt1 left
DanielC mberends: I can't figure out how to push. It says "Permission denied (publickey)" 18:11
TimToady not package like P5
ruoso TimToady, anyway... that discussion was not only about Multi candidates... but as a general expectation on the Perl 6 API
18:11 mizioumt1 joined
DanielC mberends: I have already uploaded my SSH public key. 18:12
ruoso i.e.: should the API for things that contain List-like attributes be add_foo, remove_foo or .foo.push, .foo.shift 18:13
TimToady b_jonas: yes, very like long double, in an I
in an IQ-test sort of way
in either case the adjective defaults to a different meaning 18:14
if you leave out the noun
DanielC mberends: Ok, I got past the ssh key problem. Now I need to fight with git... " ! [rejected] master -> master (non-fast forward)" 18:15
mberens: I hate git. I can't figure out how to fix a conflict.
mberends DanielC, did you clone git:// or git@ ?
DanielC mbernds: We both edited the ROADMAP file, in slightly different ways.
git:// 18:16
I think I'll just make a new clone of the repo.
TimToady git seems like a useful system for those who know in advance what they're going to do, which isn't me. :)
mberends you may need to edit url = [email@hidden.address] into .git/config 18:17
Tene Hardly. I like git precisely because it gives me enough rope to get done whatever I want to do, regardless of whether I planned for it originally. 18:18
masak aye. git is very granular. I like that.
jnthn yeah but half the time I end up with the rope around my neck.
viklund should it be possible to wrap say *?
&*.wrap(sub ($a, $b) { ... }??
DanielC mberends: Yay \o/ My first "git push".
masak viklund: you mean infix:<*> ?
viklund masak: yes 18:19
mberends DanielC: \o/
masak viklund: you can refer to it as &[*]
but not yet in Rakudo, I think...
jnthn &infix:<*> should work though
viklund tries
DanielC mberends: I implemented Fletcher-16 and Fletcher-32.
mberends excellent! 18:20
DanielC mberends: You give the function a file name, a byte offset and the number of bytes to read.
viklund ahh, right, it's a MultiSub
masak dang. :)
viklund not Perl6MultiSub??
DanielC mberends: Fletcher-32 has a bug in that it always reads an even number of bytes, even if you asked for an odd number. I'll fix that later. Other than that, I think they are probably ok. 18:21
jnthn viklund: Not yet, no...been working on moving us in that direction though.
dalek kudo: b677d60 | masak++ | src/ (2 files):
moved 'prompt' into the setting
18:22
mberends DanielC: pulled it. your code looks very nice indeed 18:23
viklund jnthn: ok
jnthn viklund: Though doubt it'll be until July we have it.
DanielC :-D
jnthn Unless somebody does it while I'm on vacation. :-) 18:24
masak you never know. :)
18:25 synth left
viklund TimToady: I like git just because I do stuff all day long and then decide how and what to commit and resolve conflicts 18:25
jnthn mmmm...vacation :-)
viklund it maps very well to my disorganized mind
masak full ack on that. 18:26
git is for people who like organisation after the fact. :)
TimToady well, I did say "seems"... # feeble
masak unfortunately, no-one can be _told_ what git is... you have to see for yourself. 18:27
viklund masak: sigh
TimToady masak: which is, basically, a religious argument :) 18:31
18:31 mizioumt left
mberends DanielC: from Internet RFC 1146: "It is necessary ... to pad a datagram containing an odd number of octets with a zero octet." 18:31
TimToady and operative whether the religion is true or false :)
18:31 [particle]1 joined
viklund ;) 18:32
masak TimToady: I wish that description of git was less true. :)
18:34 H1N1 left, Sunbeam joined 18:35 Sunbeam is now known as H1N1
mberends DanielC: doing the FIXME 18:35
viklund Hooray for BUILD, jnthn++ 18:38
masak jnthn++ # BUILD \o/
jnthn: do you have any idea how much nicer the Druid code became? :) 18:39
DanielC mberends: thanks 18:40
mberends DanielC, pushed 18:42
oops, 1 instead of 0, re-pushing 18:43
fixed 18:44
DanielC "git pull"
mberends: Looks good. I'm removing the "FIXME" line. 18:46
mberends hmm, it works but 0 isn't really a string. how about "\x0" instead ? 18:47
DanielC Just use $I1 = 0 instead of $S0 = 0
DanielC fixes it 18:48
mberends and move ODD_LENGTH to under the ord
DanielC y
mberends teamwork++
DanielC "git push"
:) 18:49
18:49 [particle] left
DanielC Ok, now I'll go watch a movie. 18:50
afk
18:50 DanielC left 18:56 mizioumt joined
masak mberends: I'm a semantic-markup junkie, so I thought I'd change your .red CSS declaration to something like .warning -- is that OK with you? 18:58
TimToady he meant "communist"
masak :) 18:59
mberends masak, agreed totally
masak mberends: oh, I see DanielC probably wrote that.
anyway, changing.
viklund bug?: 19:01
rakudo: my @s=^5; say @s.perl; say @s[0..*].perl
p6eval rakudo b677d6: OUTPUT«[0, 1, 2, 3, 4]␤[0, 1, 2, 3, 4, undef]␤»
viklund shouldn't they be the same? 19:02
TimToady yes
viklund submits rakudobug
TimToady though I think that one may be known
masak viklund: that one's already in there... 19:03
19:03 mizioumt1 left, hercynium left
TimToady but volleyball principle 19:03
better too many going for the ball than too few
viklund masak: ty
;)
masak glad to help. :)
19:05 revdiablo left
mberends masak, the #parrot people are dissecting our Socket code 19:06
masak mberends: yes, I see. interesting. 19:07
"I just did what mberends told me to do!" :P
mberends :) 19:08
lichtkind mberends: where you currently on?
masak viklund: rt.perl.org/rt3/Ticket/Display.html?id=64566 19:09
viklund thanks 19:10
19:11 barney left
masak rakudo: my @a = 0, 1, 2, 3; say @a[*].perl 19:12
p6eval rakudo b677d6: OUTPUT«[0, 1, 2, 3]␤»
masak rakudo++
mberends lichtkind: a basis for possible implementation of side by side module versioning gitorious.org/parrot-module-lib/main
lichtkind mberends: great did you seen latest appendix B effort its now nearly twice as long 19:13
mberends reads Perl Tablets Appendix B... 19:14
Tene mberends: another significant issue is how we deal with actually loading two different versions of a module in the same interpreter. 19:15
mberends Tene: indeed, and that's above my head. Being librarian will keep me happily occupied. 19:16
Tene :)
19:19 amoc__ joined 19:20 donaldh left, pasteling joined 19:21 donaldh joined 19:24 ejs joined 19:25 bigpresh_ left, amoc left 19:26 bigpresh_ joined 19:27 Whiteknight left
masak is there a way to use a 2-arg sub in an infix position? 19:28
19:28 mizioumt1 joined
TimToady sure, define an infix operator :) 19:30
viklund_ hrmpf 19:31
masak apparently, we're not Haskell yet...
:) 19:32
by the way, I'm still suffering from random attacks of the C<"load_bytecode" couldn't find file 'perl6.pbc'> error.
and I am _not_ amused.
TimToady maybe GC does random chdirs :D 19:33
masak I wouldn't put it past the GC to do such a thing.
I wish I could reliably reproduce this error. 19:34
TimToady cd /dev, open "mem"
jnthn viklund_,masak: Happy you liked BUILD. masak - no, I didn't see how much nicer Druid became, but it sounds like it got much nicer. :)
masak jnthn: github.com/masak/druid/commit/4dc85...da7ecdaf91 github.com/masak/druid/commit/4bb79...cca01d90b6 19:35
jnthn: oh, and when do we get attribute auto-initialization? :P
mberends lichtkind, leave Appendix B for me to edit a little bit... 19:36
19:36 jferrero left 19:37 mizioumt left
jnthn masak: Waiting on another refactor to happen first, but I think it's high on pmichaud++'s list. 19:37
We discussed how to make it work already. :-)
masak eeexcellent.
masak touches fingertips on one hand with fingertips on other hand 19:38
viklund_ he really did, I checked
TimToady sometimes we say "he tented is hands/fingers" 19:39
*his
masak ah, nice metaphor.
TimToady or sometimes "steepled" 19:40
if the angle is acute
masak it is.
jnthn That's acute metaphor. 19:41
masak though apparently not in Mr. Burns' case: en.wikipedia.org/wiki/Mr._Burns
diakopter what's the term for fingertips on-end
lambdabot diakopter: You have 2 new messages. '/msg lambdabot @messages' to read them.
TimToady dunno, maybe caged his fingers 19:42
but it conveys an entirely different emotion
sly and conniving 19:43
rather than thoughtful
diakopter "he sphered his fingers"
TimToady as if it says, "I'm thinking about this, but I don't want you to know I'm thinking about it"
pmichaud back from phone 19:46
TimToady I feel like the gesture is highly stylized, as if from theatrical practice, maybe from Shakespearean times 19:47
pmichaud ...what's high on my list? 19:50
lichtkind mberends: it is left :)
masak pmichaud: making sure attributes are assigned values from the parameters at the end of a BUILD submethod. 19:51
mberends :) hacking...
masak pmichaud: or so I heard. :)
pmichaud oh. didn't know that was on my list. It can be.
masak \o/
StephenPollei rakudo: my Complex $namcu =1.3
p6eval rakudo b677d6: OUTPUT«Type mismatch in assignment; expected something matching type Complex but got something of type Num()␤in Main (/tmp/GkRHLNL8k0:2)␤»
19:51 gfote joined 19:53 justatheory left
mberends lichtkind, translating some more German to English in App B 19:53
lichtkind mberends: you meant the metaop section?
mberends yes
a few changes saved already 19:54
lichtkind mberends: i thing by the end of the week all appendixes shoul be ready :) 19:55
mberends good
jnthn pmichaud: It wasn't so much that this bit was on your list, it was the rw refactor that came before it. :-) 19:56
19:57 ejs left
Tene masak: what's this proto stuff? I hear you might know something about it? 19:57
19:57 ejs joined
masak Tene: I hear it's a pretty decent installer for Perl 6 projects. 19:58
pmichaud ah, rw refactor. That shouldn't be far off.
masak Tene: it's not the future, though. it's just an admittedly shoddy present. :)
(from me to the Perl 6 community.)
jnthn pmichaud: Though feel free to task steal the BUILD be. Especially because I ain't going to be here.
*bit
pmichaud jnthn: I'll see where it comes up on the pain threshhold. There are quite a few items demanding my attention over the next few weeks. :-| 19:59
masak Tene: maybe I should have started with "why, what have you heard?"
mberends proto is arguably the best Perl 6 installer ever written 20:00
Tene masak: I've seen it mentioned a few times... I was just looking at someone's net-smtp repo, and Configure.pl bailed out with a complaint saying I should talk to the proto people. 20:01
masak :)
pmichaud snickers... "proto people"
mberends dependencies--
masak we're all proto people. :)
Tene: how can it say something like that? the string 'proto' doesn't occur in the net-smtp project... 20:02
StephenPollei I think proto people are homo habilus or homo erectus, clearly ;-)
masak Tene: anyway, talking to mberends++ would qualify as "talking to the proto people", but I bet he'll be more help in his function as Net::SMTP author... 20:04
Tene masak: Ah... net-snmp's Configure.pl puts ./lib on the end of @*INC
and I have web in my PERL6LIB
masak ouch. 20:05
mberends: it should put it in the beginning of @*INC.
maybe I fixed that already, but Net::SMTP should fix it too.
mberends oh yes, you changed push to unshift in proto, but not in every other project in the world 20:06
Tene mberends: net-snmp configure will only work from parrot's build-dir?
why does it care where parrot was built from?
masak ah, and Web.pm's Configure.pm does have a 'please contact the proto people' message.
what a non-orthogonal thing to advise! 20:07
Configure.pm is independent of proto. :)
mberends Tene, it should work anywhere with perl6 in $PATH
masak mberends: can I change it in net-smtp?
mberends please do!
masak does 20:08
mberends: also, I have an idea for a WTOP... :P
mberends Tene: quick fix, unset PERL6LIB temporarily
Tene mberends: I did. 20:09
mberends: I have perl6 in my path. doesn't work.
I have parrot in ~/src/parrot and rakudo in ~/src/rakudo
but configure.pm is looking for either rakudo contains parrot or parrot contains rakudo? 20:10
I have rakudo properly installed in lib/1.2.0-devel/languages/perl6 in my parrot install prefix...
... net-smtp's Makefile tries to locally precompile rakudo's Test.pm? o.O 20:11
mberends should handle either. 'make test' looks in rakudo_dir for Test.pm
masak Tene: I think Configure.pm is just trying to figure out reasonable values for RAKUDO_DIR and/or PARROT_DIR. 20:12
Tene yes, but Configure.pm locates rakudo-dir by trying to find it relative to parrot-dir
mberends Tene, that's because Rakudo doesn't know its own dir
it tries to grok it from %*VM<config> 20:13
Tene Hmm... I guess I shouldn't be complaining without providing patches.
masak Tene: I wasn't aware it was even possible to have Rakudo either in languages/rakudo or .. relative to Parrot.
jnthn builds all the time wiht Rakudo in languages/rakudo
masak sorry, s/to have/not to have/ 20:14
jnthn Well that just changes everything.
mberends proto, the famous proto, would fail on those directory layouts too
Tene masak: I have parrot installed to ~/parrot and rakudo installed in there too, so that load_language can work properly
pugs_svn r27046 | lwall++ | [STD] tighten up messages about old regex modifiers 20:15
r27046 | lwall++ | [viv] don't loose track of positions on list-ending nullterm
r27047 | lwall++ | [examples] more cleanup 20:16
mberends after --gen-parrot appeared "the proto developers" assumed there could only be two relative directory nestings: rakudo/parrot or parrot/languages/rakudo, and that's how Configure.pm does its guessing.
Tene pmichaud: how would you feel about me adding a 'make install' target to rakudo's makefile that installed things relative to the prefix reported by parrot_config prefix? or do you have plans for 'make install' for rakudo later that that would interfere with? 20:17
20:18 sri_kraih left 20:20 M_o_C left 20:21 ejs left
StephenPollei ../fudge rakudo declare.t ; ~/src/rakudo/perl6 declare.rakudo gave Can't find ./Test in @INC in Main (src/gen_setting.pm:438) .. stupid question but how do invoke the test framework properly? 20:23
Tene StephenPollei: export PERL6LIB=$HOME/src/rakudo 20:24
pmichaud Tene: I'm working on 'make install' today, actually.
Tene pmichaud: :) 20:25
StephenPollei ki'e Tene thanks
pmichaud Tene: the challenge to that is that Rakudo still wants the build tree to be present before it can run (that's the part I'm fixing today).
I also haven't decided where we want the Perl 6 libs to go by default. 20:26
Tene pmichaud: the one relevant thing I was just confirming is that Parrot adds languages/perl6/dynext/ to the relevant search path, so you can put perl6_ops.so and perl6_group.so in there. 20:27
20:28 diakopter is now known as diakopter--
pmichaud Tene: it adds that to the search path.... when? 20:28
Tene when you load_language 'perl6'
pmichaud Tene: what about when running the perl6 fakecutable?
20:29 diakopter-- is now known as diakopter
pmichaud (the fakecutable doesn't do load_language.) 20:29
Tene I don't know enough abot how the fakecutable works, but I don't thin kit uses... yeah, that.
pmichaud so, just copying the *.so files into languages/perl6/dynext doesn't seem sufficient
Tene I'd say that's a problem with fakecutables, though. 20:30
pmichaud I'm open to alternatives.
Seems like having a module with ".HLL 'perl6'" ought to be sufficient to add languages/perl6/dynext into the search path, though. 20:31
I don't know if that's the case.
Tene It isn't.
pmichaud Hmm. 20:32
That seems like a better tie than tying things to the load_language opcode.
Tene Yes, it does.
pmichaud i.e., that loading a HLL adds its dynext into the library path.
anyway, I really don't want too many "half-measures" in Rakudo's make install target; it either works, or we don't provide one. 20:34
where "works" as in "works the way people expect"
Tene Right.
oh, that's not what I read the first time...
pmichaud and I really am working on 'make install' today -- I want Rakudo's June release to run from an installed version of Parrot's June release, if it all possible.
or, if it doesn't, then I want to specifically identify the deficiencies needed to get it to that point. 20:35
Tene Yes, after looking at this more, I wouldn't be comfortable relying on that either.
(I lied about perl6/dynext. It actually adds a 'perl6dynext' directory to the search path.) 20:36
pmichaud weird. 20:37
Tene I don't know if that's a bug or intentional. This isn't documented anywhere.
pmichaud Yes, that's also part of what bugs me at the moment -- very little about "installed parrot" is documented.
mberends lichtkind, Appendix B all translated 20:38
pmichaud afk for a while, need lunch
20:39 decasm left 20:42 jhorwitz left
masak rakudo: my @a = 1, 2, 3; my $x = 4; @a.push: $x xx 3; $x = 5; say @a.perl 20:45
p6eval rakudo b677d6: OUTPUT«[1, 2, 3, 5, 5, 5]␤»
20:45 clintongormley left
masak o_O 20:45
jnthn I've tried to fix push before... 20:46
lichtkind mberends: great 20:47
mberends: appendix E is now so far ready 20:49
mberends: Appendix should contain german?
StephenPollei pmichaud, make install even on selinux enabled systems? danwalsh.livejournal.com/13716.html allow_execmem, allow_execstack, allow_execheap, allow_execmod -- textrel_shlib_t unconfined_execmem_exec_t java_exec_t mono_exec_t
masak mberends: another great name for a Perl 6 project: 'acceleraptor'. 20:51
mberends :) but make sure it deserves it ;) 20:52
lichtkind: Appendix E should be English only, translated yesterday
StephenPollei rakudo: my Bit $namcu =1;
p6eval rakudo b677d6: OUTPUT«Malformed declaration at line 2, near "Bit $namcu"␤in Main (src/gen_setting.pm:0)␤»
masak viklund_++ 20:53
lichtkind mberends: yes but i fixed resorted links and added internal links to contents inside the wiki
mberends: many links had the format of the other wiki and where not usable 20:54
mberends oh, I never tested the links :(
StephenPollei is Bit not working yet? or am I decalring it incorrectly?
masak how do I write 'all of @a' with a range and the whatever star? is it @a[0..*] or @a[0..*-1]?
jnthn masak: why don't you just write @a[*] ? 20:55
But 0..* I think is right.
lichtkind mberends: dont worry its now good
masak jnthn: so 0..*-1 means 'all but the last element?' in this context?
jnthn: I don't write @a[*] because I'm interested in the semantics of @a[0..*] :) 20:56
pugs_svn r27048 | jnthn++ | [t/spec] Add a bunch of new tests for .^methods, and move those in meta-class.t to this file.
jnthn masak: I forget the order of precednece
That may or may not end up doing what you want. 20:57
mberends 'all but last' looks better as @a[0..^*]
jnthn If it's 0..(*-1) it's like 0..{ $_ - 1 }
Which I'm not quite sure what happens with, but maybe it then becomes { 0 .. { $_ - 1 } } 20:58
masak jnthn: I think the semantics might be confusing, but at present, I'm too confused to explain how...
jnthn lol
skids_ ISTR it's 0..*-1 for the whole array.
jnthn Aye, but 0..* is the whole array (also?). 20:59
skids_ But since its the dwim operator maybe that could be up for negotiation.
viklund_ mberends: shouldn't that be @a[^*]?
masak skids_: if so, then the RT ticket whose URL I pasted to viklund_ earlier is invalid.
skids_ tries to find speccage
jnthn masak: I'm not 100% sure, tbh
mberends viklund: yes, more elegant 21:00
lichtkind mberends: i like you explanation of second reduction op
mberends: how is that called?
21:01 pmurias joined
skids_ S02 says @foo[*-1] is last element but still looking for exact example. 21:01
lichtkind mberends: i fixed some optical glitches in appendix B
mberends lichtkind, it took a long time to write ;)
lichtkind haha
skids_ perlcabal.org/syn/S09.html#Negative...subscripts
lichtkind mberends: i also mad the explanation of hyper more correct, i will add some missing special vars and appendix B should then nearly complete or? 21:02
masak skids_: note that the section never mentions @a[0..*].
skids_ true.
mberends lichtkind, the . . . do not align vertically in my browser. typical font mismatch. Go for it, I'm editing Appendix C. 21:03
masak so rt.perl.org/rt3/Ticket/Display.html?id=64566 might well be invalid.
viklund_ which would mean that @a[^*] _might_ work ;)
linenoise++
skids_ Hrm, well, S09 has a few '@nums[1..*:by(2)]' in there... 21:04
masak viklund_: of course it works! :)
skids_: oh noes!
someone is wrong in the spec! :P
viklund_ specbug!
masak specfight!
skids_ Well, I guess it depends on what is right :-) 21:05
pmurias ruoso: should we standardize with rakudo and change variants to candidates?
lichtkind mberends: did you recocgnis yesterday larry altert somethin in op precedence i changed it nearly realtime in B
ruoso pmurias, yes...
mberends lichtkind: oh, wow! 21:06
lichtkind mberends: yeah svn changelogs of syn appear on p6l which i read sometimes :)
ruoso later & 21:08
lichtkind mberends: R reverses order of operands ot operator but i fixed that too :)
masak Google Fight has spoken: tinyurl.com/mkth28
pugs_svn r27049 | pmurias++ | [re-smop] renamed variants to candidates to me more compatible with 21:09
r27049 | pmurias++ | rakudo
skids_ Right above the negative subscripts section: 'say @calendar[5..*]; # Same as: say @calendar[5..11]' 21:12
It's actually pretty clear, but not if you jump right to the section.
masak ok. 21:13
skids_ Treating * as a number: *-1. Just * alone, also means last specified index.
masak that's the confusing thing.
but perhaps it's not so bad.
* is already highly magical anyway. 21:14
skids_ I'll add a verbiage tweak to the top of that section.
masak skids_++
dalek kudo: 1ff28a3 | jnthn++ | src/ (7 files):
Lots of fixes to get method introspection mostly working. Not 100% there yet, but a whole load better than it was. Also prevents us getting quite so explodely when we're putting MultiSubs into arrays (Parrot's MultiSub inheriting from RPA is srsly stupid), and makes .name work on Multis too.
21:15
kudo: c7d4dad | jnthn++ | t/spectest.data:
Add S12-introspection/methods.t to spectest.data.
kudo: 5af9cf3 | jnthn++ | :
Merge branch 'master' of [email@hidden.address]
masak where in the spec does it say that if blocks and for loops have expression values? 21:18
pugs_svn r27050 | skids++ | Make 0..* versus 0..*-1 less confusing to spec greppers 21:21
masak I reserve the right to be just as confused by this in the future too. :) 21:22
21:24 justatheory joined
skids_ S04: 'The value of a loop statement is the list of values from each iteration' 21:25
masak skids_: thank you.
and good night. :) 21:26
21:26 masak left
skids_ Though, looking at the exact language, and noticing fonts, it doesn't explicitly include while/until/for 21:26
just 'loop'
Oh wait, I'm hallicinating a C<code>. Fonts too close here :-) 21:28
pugs_svn r27051 | stephenpollei++ | Add tests to see if you can declare the various built-in types 21:29
21:30 mizioumt1 left, ruoso left 21:38 pasteling left 21:45 H1N1 left, skids_ left, Sunbeam joined, Sunbeam is now known as H1N1
viklund_ what's the right semantics here: 21:46
rakudo: class P { has $.bl = { "Hi" } }; say P.new().bl()
p6eval rakudo b677d6: OUTPUT«_block59␤»
viklund_ should that say "Hi"?
rakudo: class P { has $.bl = { "Hi" } }; my $s = P.new().bl(); say $s()
lichtkind mberends: still not complete but i had to sync with german version
p6eval rakudo 5af9cf: OUTPUT«Hi␤»
viklund_ does the right thing though... 21:47
21:47 donaldh left
jnthn viklund_: afaik Rakudo is correct 21:47
viklund_: Because those parens on the end there are on the call to the accessor method hl
viklund_: Rather than meaning "and call the thing .hl returns" 21:48
viklund_ jnthn: yes, I can see that now, (after asking)
jnthn rakudo: class P { has $.bl = { "Hi" } }; say P.new().bl().()
p6eval rakudo 5af9cf: OUTPUT«Hi␤»
viklund_ jnthn: ahh, ty, that was my next question ;)
jnthn++ # Seeing into the future
mberends lichtkind, Appendix C is done but I did not understand some of the code examples, better check them all
lichtkind yo 21:49
gfote anyone using leopard? 21:50
viklund_ gfote: is that 10.5? 21:52
gfote right
viklund_ ok, then masak is using that, why? 21:53
he just went afk though
21:54 PZt left
lichtkind viklund_ dont worry if we ready with the tablet appendixes i turn to november again 21:55
viklund_ lichtkind: what do you mean? 21:56
lichtkind viklund_ i dont abandoned november just finishing a portion of the tablets 21:57
viklund_ lichtkind: ahh, ok, that's fine
we've fixed a few more bugs since you checked it last time ;)
lichtkind viklund_ i have lots of projects
great
viklund_ but we still haven't got any TOC or monspace things
21:58 Whiteknight joined
viklund_ the monospace was on masaks list for today, but he couldn't compile for some reason 21:58
pmichaud 21:46 <viklund_> rakudo: class P { has $.bl = { "Hi" } }; my $s = P.new().bl(); say $s()
Rakudo is correct there.
viklund_ pmichaud: yes, jnthn++ told me so 21:59
21:59 DanielC joined
pmichaud That's what I fixed over the weekend. :-) 21:59
viklund_ November previously relied on the old behavior, started breaking all of a sudden
21:59 mberends left 22:00 jan___ joined
viklund_ pmichaud: it is more logical this way 22:01
so I'm happy
lichtkind viklund_ monospace is nice to have because otherwise sourcecode looks crappy 22:02
viklund_ lichtkind: yes, it does
22:03 alester left
lichtkind viklund_ you are really good at fixing 3 more such weeks and im for replacing socialtext with november 22:03
viklund_ (if it where fast enough)
viklund_ lichtkind: you're too kind
TimToady skids: * doesn't have any consistent meaning such as "last index"
its meaning is always "you figure something out", where you is the exact operator you're feeding it to 22:04
0..* is always all the non-negative integers, because that's how .. treats it
it doesn't give a rip whether it's in a subscript or not 22:05
pmichaud so, @a[0..*].elems would be... Inf?
TimToady just all the ones that make sense
so same as @a[*].elems 22:06
pmichaud okay, so the subscript cares about having a range.
DanielC @seen mberends
lambdabot I saw mberends leaving #perl6 6m 42s ago, and .
DanielC mberends: ping?
TimToady *-1 also doesn't care about whether it's in a subscript or not 22:07
pmichaud sure, that one I got.
TimToady was talking to skids
pmichaud okay.
would @a[0..Inf].elems be Inf?
TimToady but *-1, unlike 0..*, returns a unary function 22:08
I don't think elems is ever going to return more elements than there actually are
pmichaud @a[1 xx 100].elems
lambdabot Maybe you meant: arr ask
pmichaud surely there are 100 there, regardless of the size of @a
TimToady sure, but you have dups 22:09
a range isn't going to have dups
pmichaud so, subscripting automatically "crops" the Range to fit its ideas of begin/end? 22:10
22:10 jan joined
b_jonas that sounds bad 22:10
shouldn't @a[0..8] give eight elements even if there are fewer in the list?
pmichaud (nine)
22:10 jan is now known as Guest8221
b_jonas array I mean 22:10
I dunno actually
TimToady I think only infinite ranges are cropped 22:11
b_jonas why'd you use an infinite range like @a[3..Inf] instead of @a[3..*] or @a.drop(3) ?
TimToady well, I wouldn't, but 3..* means the same thing 22:12
b_jonas er why?
22:12 Util left
b_jonas * doesn't mean Inf 22:12
TimToady it does to ..
pmichaud in the range context it does.
b_jonas doesn't it create a range (not list) with upper limit * ?
I mean 22:13
TimToady so does ..Inf
pmichaud both 3..* and 3..Inf create a lazy Range
b_jonas the range doesn't get realized as a list anyway, so why couldn't * as upper limit mean different thing from * as upper limit?
TimToady why should it mean something different?
b_jonas well * could mean the index of last element so you can write @a[*-2] 22:14
pmichaud b_jonas: it already does that. But *-2 isn't a Range.
TimToady yes, but then you're using -, not ..
b_jonas so @a[3..*] or @a[0..*-2] should work too
how would the latter work?
viklund_ like a charm?
pmichaud note that 0..*-2 is not at all the same as 0..*
b_jonas dunno
maybe I shouldn't care about this and just stick to takedrop when I mean something like this 22:15
is there even a @a[*/2] for binary search? :-)
pmichaud yes.
TimToady 0..*-2 means 0..{$_ - 2}
pmichaud rakudo: my @a = <a b c d e f g>; say @a[*/2]; 22:16
p6eval rakudo 5af9cf: OUTPUT«d␤»
b_jonas okay, that's ETOOMUCHMAGIC for me
pmichaud rakudo: my @a = <a b c d e f g>; say @a[*/2+1];
p6eval rakudo 5af9cf: OUTPUT«e␤»
TimToady not magic at all, but specifically delegating the meaning of * to the operator, always 22:17
pmichaud rakudo: my @a = <a b c d e f g>; say @a[0..*/2];
p6eval rakudo 5af9cf: OUTPUT«abcd␤»
22:17 jan___ left 22:18 b_jonas left
pmichaud It really was ETOOMUCHMAGIC, I guess. 22:18
viklund_ ;)
pmichaud TimToady: perhaps we need to be a bit careful about "0..*-2 means 0..{$_ -2 }" ? 22:19
because, at least as Rakudo currently has things, the *-2 isn't _exactly_ the same as {$_-2} (more) 22:20
TimToady yes, I was oversimplifying
pmichaud okay.
I'm making sure that's the case; so that I'm not overcomplexifying.
("overcomplifying"?) 22:21
pugs_svn r27052 | jnthn++ | [t/spec] Tests for :tree modifier on .^methods, plus one for .perl on what .^methods returns.
TimToady no, it's oversimplying and overcomplexexifying 22:23
pmichaud :-D
dalek kudo: f80f12c | jnthn++ | src/parrot/misc.pir:
Make .perl on a Parrot MultiSub not explode when we take .perl of a list containing it (yes, this patch sucks some...plan to improve .perl a bit on routines soon, though, and this is better than exploding).
22:24
kudo: 86aeafb | jnthn++ | src/parrot/ClassHOW.pir:
Fix :tree support for .^methods.
TimToady perhaps we should make sure splice works for b_jonas as awtdi :)
22:25 PZt joined
TimToady I do think that people reading Whatever code without knowing what it does are going to come up with a lot of inadequate folk theories about what the * means 22:26
22:26 ruoso joined
TimToady ah well, when they overgeneralize and cargo cult it wrong, that's when they're ready to learn it, I hope 22:26
22:27 DanielC left
TimToady maybe 0..* makes a RangeCode with an optional max :) * .5 22:28
defaulting to Inf 22:29
22:33 viklund left
TimToady course, then you get the one-too-many meaning of .[0..*+0], and that's harder to detect than an infinite range if you want to autotrim it 22:33
commuting& 22:35
pmichaud 22:09 <TimToady> a range isn't going to have dups 22:39
how about.... @a[ 0..*:by(0.5) ]
:=P
22:41 pmurias left 22:42 phenny left 22:43 phenny joined 22:48 xinming_ left
TimToady well, we could just say that if we notice we're running off the end 22:53
then we ask the range if it's infinite
since lists are supposed to be able to know that anyway for mostly eager semantics 22:54
22:55 frew|work joined 22:59 nihiliad left
pmichaud (running off the end) yes, that's kinda what came to my mind as well 23:10
lichtkind appendix C is done wow were completely done 23:14
will be a vec command in perl 6?
23:16 skids_ joined
jnthn pmichaud: I need to go and rest soonish, but if you have something testable for install tomorrow probably I can help. 23:20
pmichaud yes, it won't happen until later tonightish.
Too many other things distracting me today :-( 23:21
jnthn OK.
23:21 justatheory_ joined 23:22 meldrake joined, justatheory left
TimToady lichtkind: nope 23:23
Array of bit
lichtkind as data type 23:24
TimToady hopefully represented compactly, and convertable to a Buf if you need it 23:25
23:25 DanielC joined
lichtkind thanks 23:25
good night
23:25 lichtkind left
DanielC @seen mberends 23:25
TimToady in any case, if there were a vec, it would be defined only on bugs, not strs
lambdabot I saw mberends leaving #perl6 1h 25m 47s ago, and .
TimToady *bufs
jnthn If converted to a Buf, each byte in the Buf would have 8 of the bits from the Array of bit? 23:26
TimToady depends on what kind of Buf :)
Buf8, sure :)
23:26 PhatEddy left
jnthn ah 23:26
I hadn't realized be had that distinction.
TimToady yeah, it's buried way back in the later synopses, say, about S02 :P 23:27
jnthn You think I read the synopses? ;-)
Guess we need to think about the compact array stuff at some point in Rakudo though. 23:28
TimToady my int4 @nybbles; 23:29
23:29 cognominal left 23:30 cognominal joined, irc.freenode.net sets mode: +o cognominal
jnthn Aye, I knew about the int\d+ ones. I just didn't know buf had the same. 23:30
sjohnson so what do you guys think... universal $DUMMY variable in perl 6?
23:30 hanekomu left
TimToady why? 23:30
Tene $DUMMY? what would it be?
TimToady I don't think you've wanted it enough times yet... 23:31
I never buy something unless I've wanted it at least three times
well, almost never...
Tene sjohnson: what would $DUMMY be? 23:32
sjohnson Tene: a compiler variable to stick in values that yuo don't care about iinstead of havnig to declare them 23:33
() = 5+5; works
but sending () as an argument to something will fail as it's "readonly"
TimToady rakudo: (*) = 5+5 23:34
p6eval rakudo 86aeaf: ( no output )
sjohnson my brother wrote something like that in a javascript framework i use at work to do that, and i found it a novel idea
TimToady rakudo: $*JUNK = 5+5
p6eval rakudo 86aeaf: ( no output )
23:34 beggars left
sjohnson timtoady: what about: sysread(STDIN, (*), 1); 23:34
or something
TimToady rakudo: (*) = say 5+5
p6eval rakudo 86aeaf: OUTPUT«10␤»
sjohnson it is the sysread-like application that I am concerned about, as () / (*) seem to work already 23:35
TimToady my point exactly, that's the one time you've really wanted it :)
sjohnson basically if i am doing my own "Press any key to continue" i would use the sysread thing in that manner
TimToady in which case $*JUNK works fine
and is just as short as $DUMMY 23:36
sjohnson $*JUNK is actually what i am asking for?
TimToady rakudo: (my$) = say 5+5
sjohnson or is it the same as doing $*THIS_IS_GARBAGE?
p6eval rakudo 86aeaf: OUTPUT«Malformed declaration at line 2, near "$) = say 5"␤in Main (src/gen_setting.pm:0)␤»
StephenPollei I was just looking at S02 and while Buf buf8 ,buf16 and buf32 exist.. it doesn't mention Buf8 etc
TimToady rakudo: (my $) = say 5+5
p6eval rakudo 86aeaf: OUTPUT«Malformed declaration at line 2, near "$) = say 5"␤in Main (src/gen_setting.pm:0)␤»
TimToady std: (my $) = say 5+5
p6eval std 27052: ( no output )
StephenPollei As a generic type Buf may be instantiated as (or bound to) any of buf8, buf16, or buf32 (or to any type that provides the appropriate Buf interface), but when used to create a buffer Buf defaults to buf8. 23:37
TimToady yeah, there really is no Buf8, only buf8
sjohnson TimToady: is $*JUNK just an arbitrary name? 23:38
TimToady since it's a native type
yes
sjohnson ie, is $*HAPPINESS is the same thing?
TimToady yes
sjohnson what does the * do?
TimToady assuming nobody defines a contextual variable of that name, it would mean the global one
sjohnson ie, how is it different than my $JUNK
TimToady in this case, short for $GLOBAL::JUNK 23:39
StephenPollei Not sure how to bind it to different types however, and it would be easy to create a Buf16 and Buf32 that do the right thing
TimToady (my $) should work too
sjohnson that is perfect! and less typing
TimToady just as (state $) gives you an anonymous state var
sjohnson less likelihood of getting arthirits
thanks Tim's toady 23:40
i am having a hard time trying to find something that isn't in Perl 6
TimToady some would say that's precisely the problem :)
sjohnson here's a question to throw out there. is getting the ALT-<arrow keys> to do common readline stuff like go back to the last inputted value, a real pain in the neck? 23:41
TimToady btw, I'd say that the parameters to sysread could be made to default sensibly
so that $*IN.sysread just reads one char to nowhere 23:42
sjohnson that would be pretty ideal
sjohnson approves
sorry to ask a n00b question, but what does the * do? 23:43
TimToady generally, having to supply a dummy variable indicates a design smell elsewhere
sjohnson make it global?
maybe it makes it anonymous... *scratches head*
i am not sure
TimToady it means to search for the name up the dynamic scopes, and if you don't see it, assume it's in GLOBAL:: or PROCESS:: packages 23:44
23:44 frew|work left
sjohnson what about... my $.sysread 23:44
for a dummy
TimToady that is shorthand for self.sysread 23:45
sjohnson hmm
TimToady so the . twigil means "search in the current object"
actually, ! means that, while . means search all the current object's classes 23:46
a ? twigil means a compile-time constant 23:47
so you never have to search at all, the compiler already knows it
twigils generally indicate strange scoping 23:48
23:48 DanielC left
sjohnson if you were in my shoes, would your "way to do it", simply be $*IN.sysread? 23:48
jnthn -> sleep, night all 23:52
sjohnson provided, of course, that it was implemented to do so
23:53 sri_kraih joined 23:55 justatheory_ left
TimToady well, maybe, but it gets all complicated as soon as you want to get the arrow keys, since they could be multi-character sequences, or X events, or whatever 23:57
as soon as you get into GUI-land, you're at the mercy of its notions 23:58
and no two GUIs do it the same, alas
sjohnson the guis become gooey 23:59