»ö« | 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«lolType check failed on return valuein 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«se» | ||
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«AnyObject» | ||
jnthn | rakudo: Str.^parents>>.perl>>.say | ||
p6eval | rakudo fa4198: OUTPUT«AnyObject» | ||
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 valueType check failed on return valuein 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 expectedin 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 expectedin 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«1Hah!» | ||
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 |