»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
00:04
Quadrescence joined
|
|||
Quadrescence | what is the meaning of x$ = any(1,2,3) | 00:06 | |
jnthn | x$, or $x ? | ||
$x = any(1,2,3) assigns a junction to the variable $x | 00:07 | ||
nom: my $x = any(1,2,3); if 1 == $x { say "beer" }; if 4 == $x { say "cheese" } | |||
p6eval | nom: OUTPUT«No applicable candidates found to dispatch to for 'infix:<==>'. Available candidates are::(Any $x):(Int $a, Int $b):(Num $a, Num $b):(Complex $a, Complex $b):(Real $a, Real $b):(Complex $a, Real $b):(Real $a, Complex $b):(Any $a, Any $b)current instr.: 'infix:<==>'… | ||
jnthn | er, hm | ||
sjn | heh | ||
jnthn wonders if that bot is up to date... | 00:08 | ||
oh | |||
rakudo: my $x = any(1,2,3); if 1 == $x { say "beer" }; if 4 == $x { say "cheese" } | |||
p6eval | rakudo 72d158: OUTPUT«beer» | ||
jnthn | OK, there you go :) | ||
nom: nom: my $x = any(1,2,3); if 1 == $x { say "beer" } | |||
p6eval | nom: OUTPUT«Confused at line 1, near "nom: my $x"current instr.: 'nqp;HLL;Grammar;panic' pc 23533 (src/stage2/gen/NQPHLL.pir:6314) (src/stage2/gen/NQPHLL.pm:328)» | ||
jnthn | nom: my $x = any(1,2,3); if 1 == $x { say "beer" } | ||
p6eval | nom: OUTPUT«No applicable candidates found to dispatch to for 'infix:<==>'. Available candidates are::(Any $x):(Int $a, Int $b):(Num $a, Num $b):(Complex $a, Complex $b):(Real $a, Real $b):(Complex $a, Real $b):(Real $a, Complex $b):(Any $a, Any $b)current instr.: 'infix:<==>'… | ||
sjn likes junctions just as much as he likes quantum superpositions :) | |||
jnthn | nom: if 1 == any(1,2,3) { say "beer" } | ||
p6eval | nom: OUTPUT«beer» | ||
jnthn | ah, *that* bug. | ||
(nom branch only got junction auto-threading last night...) | 00:09 | ||
sjn | Quadrescence: en.wikipedia.org/wiki/Perl_6#Junctions | 00:10 | |
soh_cah_toa | Quadrescence: it's an alternate notation for my $x = 1 | 2 | 3; | ||
yes, see above link | |||
sjn | Quadrescence: one of many utterly fascinating features in Perl6 :) | 00:12 | |
soh_cah_toa | indeed | ||
Quadrescence | sjn, Isn't that feature very old though, dating back before the prolog days | ||
jnthn, I typo'd, $x of course | 00:13 | ||
sjn | Quadrescence: well, it's "new" in the Perl world | 00:14 | |
I'm pretty sure you'll find most "new" features in Perl6 in other languages | |||
soh_cah_toa | except better :) | 00:15 | |
sjn | you might have some difficulties finding all of them in one language though :) | ||
soh_cah_toa | plus, prolog is a logic programming language. i could be wrong but this is the first i've seen junctions in a dynamic language at least | ||
Quadrescence | (prolog is dynamic) | 00:16 | |
jlaire | raudo: say not so Cool | 00:17 | |
dalek | ast: 85b83d5 | jonathan++ | S12-construction/BUILD.t: Turn some todos to skips. |
||
ast: 14975bd | jonathan++ | S12-construction/construction.t: Correct a test and re-fudge construction.t (only one we lost is related to Seq). |
|||
jlaire | rakudo: say not so Cool | ||
soh_cah_toa | really? i don't know about that | ||
dalek | ast: 891dafc | jonathan++ | S02-builtin_data_types/ (4 files): Merge branch 'master' of github.com:/perl6/roast |
||
p6eval | rakudo 72d158: OUTPUT«Bool::True» | ||
00:18
j`ey joined
|
|||
sjn | rakudo: say so | 00:18 | |
p6eval | rakudo 72d158: OUTPUT«===SORRY!===Confused at line 22, near "say so"» | ||
sjn | rakudo: say so Cool | ||
p6eval | rakudo 72d158: OUTPUT«Bool::False» | ||
sjn wonders what the "so" operator is | |||
sorear | good * #perl6 | ||
sjn | is "so" eqivalent to "~~" ? | 00:19 | |
sorear: wb :) | |||
dalek | kudo/nom: e467eaf | jonathan++ | src/ (7 files): Add default %_ for methods. It's rather smarter than master, and doesn't allocate if it's never used. |
||
kudo/nom: d9b6344 | jonathan++ | t/spectest.data: We now pass two more test files. |
|||
soh_cah_toa | rakudo: say not ~~ Cool | 00:20 | |
p6eval | rakudo 72d158: OUTPUT«Bool::False» | ||
soh_cah_toa | i guess not | ||
i've never seen it either. now i'm curious | 00:21 | ||
huf | isnt so the wordy ? | ||
? | 00:22 | ||
00:23
whiteknight joined,
j`ey left
|
|||
sorear | sjn: so is a lower-priority ? | 00:25 | |
not ~~ Cool is a bug | |||
perl6: say not ~~ Cool | |||
p6eval | niecza v7-19-g8dc8c8f: OUTPUT«===SORRY!===Any()Expecting a term, but found either infix ~~ or redundant prefix ~ (to suppress this message, please use space between ~ ~) at /tmp/EIw6Z9ZVo1 line 1:------> say not ~~⏏ CoolParse failed»… | ||
..pugs: OUTPUT«***  Unexpected "~~" at /tmp/zcpNZg1Y_b line 1, column 9» | |||
..rakudo 72d158: OUTPUT«Bool::False» | |||
soh_cah_toa | rakudo: my Int $foo = 0; say ?$foo; | 00:26 | |
p6eval | rakudo 72d158: OUTPUT«Bool::False» | ||
dalek | ecza: d3c5fc0 | sorear++ | src/NieczaActions.pm6: Fixes to compiler to work with correct $/ semantic |
||
soh_cah_toa | rakudo: my Int $foo = 0; say so $foo; | ||
p6eval | rakudo 72d158: OUTPUT«Bool::False» | ||
soh_cah_toa | oh yeah. look at that | ||
sjn fails to understand whats going on | 00:27 | ||
soh_cah_toa | sjn: from what i understand "so" is a lower-precedence "?" operater for forcing boolean context | 00:28 | |
sorear | sjn: so $x means $x ?? True !! False | ||
soh_cah_toa | oh, the double question marks | ||
sjn | hokay... what's the use case? | 00:29 | |
huf | where you'd use !! in other languages? | ||
sjn | if so $variable_that_can_be_undef { ... } | 00:30 | |
...or is there some other use? | 00:31 | ||
(as in "use, where the word «so» make the code read easier" | |||
) | |||
sorear | sjn: my $variable = so function_returns_giant_array(); | 00:33 | |
dalek | ast: ed8e11e | jonathan++ | S12-class/attributes.t: Update test; can't use default constructor to set non-public attrs. |
00:35 | |
sjn is still confused | |||
huf | dunno, it happens to me fairly often that i just want the truthiness of a value and dont care about the value | 00:36 | |
dalek | vember: 4d3f6b5 | softmoth++ | / (4 files): Fix tags update when server_root is set November::Tags.new() now takes a config param, instead of always creating its own new Config object. |
00:37 | |
huf | "back in my day we made do with negation and used it twice!" | ||
vember: b79c3ea | softmoth++ | data/ (18 files): Clean up data/*; add FAQ and About pages, etc. |
|||
kudo/nom: 1762378 | jonathan++ | NOMMAP.markdown: Remove done nommap item. |
00:38 | ||
kudo/nom: aeb6b08 | jonathan++ | src/Perl6/Actions.pm: Fix bug with has ($!a, $!b) style decls. |
|||
kudo/nom: e66e95f | jonathan++ | t/spectest.data: We pass S12-class/attributes.t. |
|||
00:39
JimmyZ joined
|
|||
JimmyZ | good morning, #perl6 | 00:40 | |
jnthn | o/ JimmyZ | 00:42 | |
And, goodnight #perl6 | |||
JimmyZ | good night, jnthn :) | ||
sjn | rakudo: sub is_done { 0 }; say "not done" if not so is_done | ||
p6eval | rakudo 72d158: OUTPUT«not done» | ||
sjn | jnthn: nn! :) | ||
rakudo: sub is_done { Bool::False }; say "not done" if not so is_done | 00:43 | ||
p6eval | rakudo 72d158: OUTPUT«not done» | ||
sjn | rakudo: sub is_done { <> }; say "not done" if not so is_done | ||
p6eval | rakudo 72d158: OUTPUT«===SORRY!===Unsupported use of <>; in Perl 6 please use lines() to read input, ('') to represent a null string or () to represent an empty list at line 22, near "<> }; say "» | ||
sjn | rakudo: sub is_done { () }; say "not done" if not so is_done | ||
p6eval | rakudo 72d158: OUTPUT«not done» | ||
sjn | rakudo: sub is_done { (0) }; say "not done" if not so is_done | ||
p6eval | rakudo 72d158: OUTPUT«not done» | ||
sjn | rakudo: sub is_done { (0,0) }; say "not done" if not so is_done | ||
p6eval | rakudo 72d158: ( no output ) | 00:44 | |
sjn | uhm | 00:45 | |
rakudo: say < >.WHAT | |||
p6eval | rakudo 72d158: OUTPUT«Parcel()» | ||
sjn | rakudo: say < 0 >.WHAT | ||
p6eval | rakudo 72d158: OUTPUT«Str()» | ||
sjn | rakudo: say < 0, 0 >.WHAT | ||
p6eval | rakudo 72d158: OUTPUT«Parcel()» | ||
sjn | rakudo: say so < 0, 0 > | ||
p6eval | rakudo 72d158: OUTPUT«Bool::True» | 00:46 | |
sjn | rakudo: say so < 0 > | ||
p6eval | rakudo 72d158: OUTPUT«Bool::False» | ||
sjn | rakudo: say so < > | ||
p6eval | rakudo 72d158: OUTPUT«Bool::False» | ||
sjn | rakudo: say so < 1 > | ||
p6eval | rakudo 72d158: OUTPUT«Bool::True» | ||
sjn | why is < foo > a Str? | ||
meh, never mind, my n00b questions can wait :) | 00:48 | ||
huf | rakudo: < 'foo' >.WHAT | ||
p6eval | rakudo 72d158: ( no output ) | ||
huf | rakudo: say < 'foo' >.WHAT | ||
p6eval | rakudo 72d158: OUTPUT«Str()» | ||
huf | i think < foo > is something like $hash{foo} was in perl5 | ||
where simple strings dont have to be quoted | 00:49 | ||
sjn | right | ||
huf | rakudo: say < 1 + 1 >.WHAT | ||
p6eval | rakudo 72d158: OUTPUT«Parcel()» | ||
huf | hmm :D | ||
honestly, i have no idea :) | 00:50 | ||
00:52
dolmen left
00:55
lichtkind left
01:00
noganex_ joined
01:02
tokuhir__ left
01:03
noganex left
|
|||
flussence | < 1 + 1 > is qw(1 + 1) | 01:13 | |
01:15
ab5tract left
|
|||
huf | ah | 01:16 | |
01:19
JimmyZ_ joined
01:20
daniel-s joined
01:23
JimmyZ left,
JimmyZ_ is now known as JimmyZ
01:26
wolfman2000 joined
01:36
JimmyZ_ joined
01:39
JimmyZ left,
JimmyZ_ is now known as JimmyZ
01:52
whiteknight left
02:06
daemon left
02:10
daniel-s left
02:39
daemon joined
02:44
JimmyZ left
02:59
ZaphrodZenovka left,
ZaphrodZenovka joined
03:09
kaare_ joined
03:12
TBA2 left
03:15
mdxi left
03:23
Su-Shee_ joined
03:26
Su-Shee left
03:44
envi joined
03:51
leprevost joined
03:55
_jaldhar joined
03:59
jdhore1 left
04:01
jdhore1 joined,
jdhore1 left,
jdhore1 joined
04:06
kaare_ left
04:07
bkolera joined
04:11
Quadrescence left
04:22
mdxi joined
04:29
cognominal_ joined
04:32
cognominal left
04:47
_jaldhar left
04:49
_jaldhar joined,
donri left
04:54
am0c left
04:56
cognominal joined
04:59
cognominal_ left
05:07
am0c joined
|
|||
Tene | rakudo: say < 1 + 1 >.perl | 05:11 | |
p6eval | rakudo 72d158: OUTPUT«("1", "+", "1")» | ||
05:17
araujo left
05:22
Bzek joined
05:24
soh_cah_toa left
06:00
cognominal_ joined
06:02
daniel-s joined
06:03
cognominal left
|
|||
daniel-s | in the perl6 book, it describes the normal way of creating variables in a class | 06:04 | |
phenny | daniel-s: 08 Jul 19:35Z <sorear> tell daniel-s We already have a translator bot, phenny: en de "hello moritz, how are you today?"? | ||
06:04
zby_home joined
|
|||
daniel-s | using has $!variable | 06:05 | |
if you create it using "my $variable", but within a class, it still seems to work fine | |||
06:06
JimmyZ joined
|
|||
moritz | daniel-s: 'has $!variable' is per instance | 06:06 | |
daniel-s | is my $variable static? | ||
moritz | daniel-s: which means that if you create 5 objects of your class, you have 5 different $!variable's | ||
rakudo: class A { has $.a; }; say A.new(a => 5).a; say A.new(a => 6).a | 06:07 | ||
p6eval | rakudo 72d158: OUTPUT«56» | ||
JimmyZ | moritz: Does $a and $.a also declare $!a ? | ||
moritz | rakudo: class A { my $a; method set($x) { $a = $x }; method get($x) { $a } }; my @objs = A.new, A.new; @objs[0].set(5); say @objs[0].get | 06:08 | |
p6eval | rakudo 72d158: OUTPUT«Not enough positional parameters passed; got 1 but expected 2 in 'A::get' at line 22:/tmp/ECRNq8zqk2 in main program body at line 22:/tmp/ECRNq8zqk2» | ||
moritz | rakudo: class A { my $a; method set($x) { $a = $x }; method get() { $a } }; my @objs = A.new, A.new; @objs[0].set(5); say @objs[0].get | ||
p6eval | rakudo 72d158: OUTPUT«5» | 06:09 | |
moritz | see? different object, same variable | ||
JimmyZ: in a 'has' yes | |||
06:13
JimmyZ left
06:19
Mowah joined
|
|||
moritz sees lots of segfaulting tets in nom | 06:21 | ||
daniel-s | rakudo: class A { my $a; method set($x) { $a = $x }; method get() { $a } }; my @objs = A.new, A.new; @objs[0].set(5); say @objs[1].get | ||
p6eval | rakudo 72d158: OUTPUT«5» | ||
daniel-s | is that the way I should declare variables if I want them to be static | 06:22 | |
using the my keyword, or is there something more appropriate | |||
moritz | use my | 06:23 | |
06:28
JimmyZ joined
|
|||
JimmyZ | moritz: I'm confused by S12 | 06:28 | |
moritz: S12 said, " has $brain; # also declares $!brain; As with the ! declaration, no accessor is generated. " | |||
moritz: and it said, "Public attributes have a secondary sigil of "dot", indicating the automatic generation of an accessor method of the same name" | 06:29 | ||
moritz: since $.a also declare $!a, as it said, with the ! declaration, no accessor is generated | |||
moritz: so, "Public attributes have a secondary sigil of "dot", indicating the automatic generation of an accessor method of the same name" looks wrong | |||
well, I'm not sure whether I understand wrong, or it's not explicit | |||
sorear | JimmyZ: the stuff in S12 about has $x and my $!x makes very little sense to me or jnthn | 06:35 | |
JimmyZ: don't expect it to stay. | |||
JimmyZ | sorear: Ok, that' explains a lot | 06:36 | |
sorear: thanks | |||
moritz | 'has $x' is just the same as 'has $!x', but it also creates an alias $x to $!x | ||
JimmyZ thinks it breaks consistency or something | 06:38 | ||
06:40
Aridai joined
|
|||
daniel-s | is it possible to my $!x | 06:40 | |
what does that do | |||
is it different to my $x | |||
moritz | phenny: tell jnthn that I get lots of (new) segfaults in current nom spectest, gist.github.com/1073396 has the stack trace of a randomly chosen test | 06:42 | |
phenny | moritz: I'll pass that on when jnthn is around. | ||
06:58
molaf__ left
07:01
masak joined
|
|||
masak | phenny: tell sjn the function &so is simply the opposite of the function ¬. it's the low-precedence form of prefix:<?>. it's not used often, but we like to toy with it. :) | 07:01 | |
phenny | masak: I'll pass that on when sjn is around. | ||
masak: 08 Jul 19:36Z <sorear> tell masak ("0") - #p5p is seriously talking about making "" the only false string. "0" falseness is a pretty disgusting Perlism imo | |||
masak: 08 Jul 19:36Z <sorear> tell masak oh, and it's really annoying to work around. I can't use if $name in niecza because "0" is often a valid name, but "" never is | 07:02 | ||
masak | sorear: the situation is slightly diff'rent in Perl 5, which consciously blurs the distinction between Int/Num and Str. which makes the case for making "0" true weaker in Perl 5 but stronger in Perl 6, I guess. | 07:03 | |
oh, and OH HAI #perl6! :) | |||
masak resumes hacking on the Perl 6 text adventure game... "crypt" | 07:04 | ||
07:06
molaf joined
|
|||
masak | rakudo: (my %things)<door> = (class { method open { say "You open the door" } }).new; "open the door" ~~ /$<verb>=[\w+] \h+ [the]? \h+ $<noun>=[\w+]/; my $noun = $<noun>; my $thing = %things{$noun}; $thing."$<verb>"() | 07:14 | |
p6eval | rakudo 72d158: OUTPUT«You open the door» | ||
masak | \o/ | ||
pardon me, but that is freaking AWESOME | 07:15 | ||
rakudo: (my %things)<door> = (class { method open { say "You open the door" } }).new; "open the door" ~~ /$<verb>=[\w+] <.ws> [the]? <.ws> $<noun>=[\w+]/; %things{$<noun>}."$<verb>"() | 07:23 | ||
p6eval | rakudo 72d158: OUTPUT«You open the door» | ||
sjn | o/ | 07:28 | |
phenny | sjn: 07:01Z <masak> tell sjn the function &so is simply the opposite of the function ¬. it's the low-precedence form of prefix:<?>. it's not used often, but we like to toy with it. :) | ||
cotto | Is anyone going from Helsinki to Riga for YAPC::EU? | 07:29 | |
masak | sjn: in the 'if so $some-value' case, the 'so' is unnecessary, because boolification is implicit in the if statement. | 07:30 | |
sjn | masak: what's the canonical use case then? | 07:31 | |
masak | sjn: any time you want do to the equivalent of prefix:<?> but don't care for parentheses. | ||
07:31
Chillance joined
|
|||
masak | sjn: think of when you'd use 'and' instead of '&&' to get rid of parentheses. | 07:31 | |
or 'or' 'stead of '||'. | 07:32 | ||
sjn | $has_elements = so [ 0 ]; | ||
masak | yeah. | ||
though in that case '?' works just as well. | |||
sorear out | |||
masak | std: not ~~ Cool | ||
p6eval | std 37a0cdd: OUTPUT«===SORRY!===Expecting a term, but found either infix ~~ or redundant prefix ~ (to suppress this message, please use space between ~ ~) at /tmp/reztdjBWdt line 1:------> not ~~⏏ CoolParse failedFAILED 00:01 119m»… | ||
sjn is still not used to having a "?" operator | 07:33 | ||
masak | it's strangely consistent with prefix:<+> and prefix:<~> | ||
sjn | hm | ||
masak | it's like three "views" on a value: string, number, bool. | 07:34 | |
sjn | rakudo: my @elems = 1,2,3; say "we have elements: " ~ ? @elems; | ||
p6eval | rakudo 72d158: OUTPUT«we have elements: Bool::True» | ||
masak | I have to log off; I'm switching means of transportation. | 07:35 | |
cotto | where does jnthn live? | ||
moritz | sweden | ||
masak | cotto: southern Sweden. | ||
sjn | Lund :) | ||
masak | Central Lund :P | ||
07:35
dogfish joined
|
|||
cotto | masak, moritz, thanks | 07:35 | |
07:36
masak left,
araujo joined
07:38
im2ee joined
07:40
dogfish left,
cooper left
07:46
Su-Shee_ is now known as Su-Shee
07:49
Aridai left,
danoran joined
|
|||
danoran | howdy. Is there a todo list anywhere? | 07:50 | |
never mind. I found it on rakudo.org/how-to-help/ | 07:53 | ||
moritz | danoran: there's a ROADMAP file in the rakudo repository | ||
danoran: but currently most development happens in the 'nom' branch | |||
danoran: and in the nom branch there's a file called LHF.markdown with easy tasks to get started | 07:54 | ||
afk & | 07:56 | ||
07:59
isBEKaml joined
|
|||
danoran | thanks. I'm just kindof looking around. I've been considering trying to develop a simple website in perl6 | 08:00 | |
08:07
molaf left,
isBEKaml left
|
|||
JimmyZ | danoran: ttjjss.wordpress.com/2011/01/10/bailamos/ FYI | 08:11 | |
08:13
molaf joined
08:18
molaf left
|
|||
danoran | JimmyZ: Thanks, I thought you were commenting on my language settings, which are in spanish(btw). I'm still relatively new to Perl (5 or 6), so I think I'll have to just get some basic perl going before anything shnazzy... | 08:27 | |
08:31
dual joined
08:33
zby_home left
08:34
danoran left
|
|||
daniel-s | rakudo: class A {my $!x; method get() {$!x}; method set($a) {$!x = $a}}; my $b = A.new(); $b.set(5); $b.get(); | 08:39 | |
p6eval | rakudo 72d158: OUTPUT«Null PMC access in get_attr_str() in main program body at line 2:/tmp/kbmEUJi7Dp» | ||
daniel-s | rakudo: class A {my $!x; method get() {$!x}; method set($a) {$x = $a}}; my $b = A.new(); $b.set(5); $b.get(); | ||
p6eval | rakudo 72d158: OUTPUT«===SORRY!===Symbol '$x' not predeclared in set (/tmp/GFw0fmmT81:22)» | ||
08:39
jedai left
|
|||
daniel-s | rakudo: class A {my $!x; method get() {$!x}; method set($a) {$!x = $a}}; my $b = A.new(); $b.set(5); #$b.get(); | 08:40 | |
p6eval | rakudo 72d158: OUTPUT«Null PMC access in get_attr_str() in main program body at line 2:/tmp/SUJIONoFWX» | ||
daniel-s | rakudo: class A {my $!x; method get() {$!x}; method set($a) {$!x = $a}}; my $b = A.new(); #$b.set(5); $b.get(); | ||
p6eval | rakudo 72d158: OUTPUT«Null PMC access in get_attr_str() in main program body at line 2:/tmp/avwu5T5His» | ||
daniel-s | rakudo: #class A {my $!x; method get() {$!x}; method set($a) {$!x = $a}}; my $b = A.new(); $b.set(5); $b.get(); | 08:41 | |
p6eval | rakudo 72d158: ( no output ) | ||
daniel-s | rakudo: class A {my $x; method get() {$!x}; method set($a) {$!x = $a}}; my $b = A.new(); $b.set(5); $b.get(); | ||
p6eval | rakudo 72d158: OUTPUT«No such attribute '$!x' in 'A::set' at line 22:/tmp/7rkYUlbyR0 in main program body at line 22:/tmp/7rkYUlbyR0» | ||
08:43
bkolera left
08:50
dolmen joined
08:53
kaare_ joined
08:54
dolmen left
08:55
jedai joined
09:04
twinshadow left
|
|||
felher | JimmyZ++: First thnx for uploading jnthn++ talks. But i fear they might be broken (were broken). I was not able to play them with either of mplayer, mplayer2, vlc. Both videos started but seem to be broken few moments after starting them. Is this just a mplayer{2,}, vlc issue or are they indeed broken? | 09:09 | |
09:13
twinshadow joined
|
|||
daniel-s | whose site is szabgab.com | 09:31 | |
tadzik | szabgab's | 09:33 | |
daniel-s | lol, makes sense | ||
szabgab | :) | 09:35 | |
09:37
xinming left
09:38
jack-ji joined
|
|||
daniel-s | hey | 09:44 | |
I was just reading stuff on your site | |||
I have read alot of the tutorials on your site as well | |||
jnthn | morning, #perl6 | 09:46 | |
phenny | jnthn: 06:42Z <moritz> tell jnthn that I get lots of (new) segfaults in current nom spectest, gist.github.com/1073396 has the stack trace of a randomly chosen test | ||
szabgab | daniel-s: I hope you liked them | ||
some are a bit outdated | |||
jnthn | moritz: ugh. :/ | ||
09:51
daniel-s left,
masak joined
|
|||
masak is on a train | 09:51 | ||
jnthn | Is it running late? | 09:52 | |
</troll> :) | 09:53 | ||
09:57
masak` joined
09:58
wamba joined,
daniel-s joined
09:59
masak left
10:00
buubot_backup left
|
|||
masak` | jnthn: no, so far everything's dandy. | 10:00 | |
jnthn: but it seems the connections won't take me all the way :( | |||
that's not the fault of SJ, though. it's just that the local communications suck. | 10:01 | ||
apparently, no-one ever had the idea that someone would want to travel between those two particular hamlets on a Saturday afternoon... | 10:02 | ||
10:03
daniel-s left
|
|||
masak` | oh, and btw: I get the feeling that whereas bringing a laptop on the train is nowadays accepted behaviour, bringing a laptom and an external keyboard is still considered slightly weird :P | 10:03 | |
jnthn | :P | 10:04 | |
At least you took a *small* external keyboard. :) | |||
masak` | with it and two chargers (computer+phone), I'm sitting in a small bird's nest of wires here. :) | 10:05 | |
(at least I put the headphones away) | |||
10:06
masak` is now known as masak
10:12
daniel-s joined
|
|||
dalek | kudo/nom: f583316 | jonathan++ | src/binder/container.c: Decontainerize a little earlier in scalar assignment, so that the value type check will actually work from the correct type check cache, rather than creating an inferior runloop to do the type check. Should very significantly speed up every $a = $b. |
10:15 | |
10:15
masak` joined
10:16
masak left
10:17
masak` is now known as masak
|
|||
masak | the "backtick dance", commonly practiced by people on Swedish public transport. | 10:17 | |
jnthn | .oO( ECONNECTIONNOTLAGOM ) |
10:18 | |
10:19
buubot_backup joined
10:21
daniel-s left
|
|||
tadzik | masak: why the external keyboard? | 10:21 | |
masak | tadzik: computer broke down during NPW. (probably due to stress.) | ||
tadzik | oh | 10:22 | |
masak | tadzik: the keyboard was rendered 2/3 unusable. | ||
tadzik | at least you can put the external keyboard on the normal keyboard and it won't press the keys below :) | ||
I always have this problem when putting notebook on a keyboard | |||
masak | it will press 1/3 of the keys below :) | ||
tadzik | ;) | ||
10:24
twinshadow left
|
|||
jnthn | Ouch. The segfault happens in the fixed size pool allocator, deep in Parrot guts, of all places. | 10:26 | |
masak | oh noes not in the pool | 10:27 | |
jnthn | Got it reproduced in the debugger here. Sadly, it doesn't make it any more obvious what's going on than the bt moritz++ gisted. | ||
masak: Yeah, it's a very odd place to hit this. | |||
10:27
twinshadow joined
|
|||
jnthn | The only patch that looks liable to have introduced this is the %_ handling one | 10:31 | |
masak | git bisect? | ||
jnthn | Well, trouble is that the segfault doesn't even happen every run | 10:32 | |
On the file I have it's liek 1 in 3 times :/ | |||
Which almost certainly means it's memory corruption. | 10:33 | ||
aha | 10:35 | ||
found a couple of lines to comment out that reliably make the segfault go away | |||
10:35
whiteknight joined
|
|||
jnthn can guess what's going on, and it would cause memory corruption... | 10:36 | ||
colomon | woah -- I just tried pull and rebuild (nom) and got a segfault in the build. I'm assuming this is probably what you guys are already looking at... | 10:37 | |
masak | std: 42.?"foo"() | 10:40 | |
p6eval | std 37a0cdd: OUTPUT«Potential difficulties: Useless use of quotes at /tmp/vPgos3mZPe line 1:------> 42.?"foo"⏏()ok 00:01 118m» | ||
10:40
xinming joined
|
|||
jnthn | colomon: Others have seen it in the spectests | 10:40 | |
colomon | right | ||
10:40
[Sec] joined
|
|||
jnthn | colomon: But now I know what's going on it's totally feazible it's show up while compiling the setting. | 10:40 | |
colomon | Looking more closely, it looks like it happened when compiling Test.pm to Test.pir. | 10:41 | |
jnthn | Also completely feasible | ||
Every time run Perl 6 code at BEGIN time we risk memory corruption. | |||
Testing a patch at the moment | 10:42 | ||
The %_ patch made an assumption that really it shoulda been able to. Turns out the fact it couldn't meant something else was busted. | 10:43 | ||
nom: BEGIN { $_ = 42; .say } | 10:46 | ||
p6eval | nom: OUTPUT«Segmentation fault» | ||
masak | o.O | ||
jnthn | That's another manifestation of the same issue. | ||
(Glad it didn't work, or my theory on what's wrong woulda been wrong...) | 10:47 | ||
masak | I just passed 300 lines with the text adventure. | ||
colomon | masak++ | 10:48 | |
masak | there's not a lot there yet, but anyone willing to play and give early feedback is most welcome to do so. | ||
github.com/masak/crypt | 10:49 | ||
oh, I have to get off this train :) | |||
o/ | |||
10:49
masak left,
kcwu left
11:00
drbean left,
Kivutarrr joined
11:05
odrm joined,
kaare_ left
11:08
daniel-s joined
|
|||
JimmyZ | felher: try KMPlayer or flash player ? | 11:11 | |
11:11
REPLeffect left
|
|||
JimmyZ | felher: any player that can open *.flv | 11:11 | |
tadzik | where do I download those? | 11:12 | |
11:13
daniel-s left
11:15
daniel-s joined
11:18
REPLeffect joined
|
|||
JimmyZ | tadzik: irclog.perlgeek.de/perl6/2011-07-06#i_4070012 | 11:19 | |
tadzik | lowndoading | 11:22 | |
11:23
Kivutarrr left,
Kivutarrr joined
|
|||
jlaire | vlc can play .flv no problem | 11:23 | |
JimmyZ | felher: it would be appreciated to upload jnthn' talk to youtube | 11:24 | |
tadzik | I cannot download them now, HTTP request sent, awaiting response... | 11:25 | |
JimmyZ | it may be outdated :( | 11:27 | |
tadzik | is there a mirror? | 11:28 | |
11:29
am0c left
|
|||
dalek | kudo/nom: 48e6bf7 | jonathan++ | src/binder/bind.c: Extra check to make sure we don't corrupt memory when handling *%_ in optimized code path. |
11:30 | |
JimmyZ | tadzik: v.ku6.com/playlist/index_4350502.html | ||
tadzik | thanks JimmyZ | 11:34 | |
JimmyZ | tadzik: again, it would be appreciated to upload jnthn' talk to youtube :) | ||
felher | JimmyZ: I guess KMplayer uses Mplayer. And each of Mplayer, Mplayer2, vlc are able to play flv. I see the first seconds of the video, but not more. But i'll just use your new link and watch them in my browser. Thnx :) | 11:35 | |
tadzik | I'll have to download it first, but I guess that's doable | ||
JimmyZ | felher: you're welcome | 11:36 | |
felher | akf & | ||
*afk & :) | |||
11:43
Kivutarrr left
11:45
whiteknight left
12:00
tokuhir__ joined
12:02
ciphertext joined
12:25
wamba left
12:33
f00li5h left
12:36
wamba joined
|
|||
pmichaud | good morning, #perl6 | 12:46 | |
jnthn | morning, pmichaud | 12:48 | |
Trashlord | good afternoon, #perl6 | ||
12:49
wamba left
12:52
wamba joined
|
|||
tadzik | good afternoon #perl6 | 12:52 | |
12:58
drbean joined
12:59
Mowah left
13:09
[Coke] left
13:11
[Coke] joined
13:12
wamba1 joined,
wamba left
13:16
Mowah joined
13:17
mberends joined
|
|||
mberends | o/ #perl6 (from London) | 13:18 | |
pmichaud | mberends: o/ | 13:19 | |
mberends | .oO( backlogging the past week is going to be quite a challenge ) |
||
pmichaud | yes, it will be. | ||
We hope to keep it challenging. :) | |||
jnthn | hi mberends | ||
dalek | kudo/nom: c23e04f | jonathan++ | src/ (2 files): Add is rw trait for routines. |
13:20 | |
kudo/nom: 6b6bc4e | jonathan++ | src/ (2 files): Get of and returns trait to set return type for routines (not checked yet). |
|||
kudo/nom: 1fa3334 | jonathan++ | src/core/ (2 files): Introspection of .returns/.of on Routine. |
|||
kudo/nom: 2f5b530 | jonathan++ | src/ (3 files): Ops for decontainerizing if non-rw sub and for type checking return values. |
|||
kudo/nom: 63e2719 | jonathan++ | src/core/ (4 files): We run into code-gen issues for routines that evaluate to something void; avoid (heh, get it) that. |
|||
kudo/nom: 9298db6 | jonathan++ | src/binder/multidispatch.h: Copy-pasto. |
|||
moritz | \o | ||
mberends | \o | 13:21 | |
pmichaud | in 63e2719, I think STORE_AT_KEY needs an is_rw | 13:22 | |
and it should probably be pir::set__1QsP to avoid the extra $value statement. | 13:23 | ||
jnthn | pmichaud: That wasn't the patch where I sprinkled those, but thanks, will add | ||
pmichaud: I think I tried that and PAST::Compiler did the Wrong Thing... | |||
Didn't I leave a comment... | |||
pmichaud | the comment says you tried 2QsP, which will be a null. | 13:24 | |
jnthn | oh, that's what's already there | ||
I could try it as 1 | |||
dalek | odel: dcfb55a | (Martin Berends)++ | c/ (3 files): odel/c] initial Configure and Makefile machinery |
13:26 | |
jnthn | ooh, I'm going to have to watch this carefully | 13:28 | |
Doubt I can build it though... .sh! | |||
dalek | odel: 665397f | (Martin Berends)++ | c/t/Test.h: odel/c/t/Test.h] initial TAP emitter for C based tests |
||
jnthn | oh, it promises a .bat :) | ||
mberends | jnthn: I was not able to test a Configure.bat, but is will come :) | ||
jnthn | mberends++ | ||
mberends | *it will | ||
it has been very pleasing how well the dlopen() et al behaved. This paves the way for a C based eval(). | 13:30 | ||
just worried about whether Win32 and its POSIX subsystem will also support it. | 13:31 | ||
moritz | and the end of the output from ./perl6 t/spec/S02-builtin_data_types/assigning-refs.rakudo | ||
I get: | |||
# FUDGED! | |||
too few arguments: 0 passed, 23198880 expected | |||
jnthn | moritz: Is that new? | 13:32 | |
dalek | kudo/nom: 6a28829 | jonathan++ | src/core/ (7 files): First round of getting us more honest with routine rw-ness. |
||
13:32
lichtkind joined
|
|||
jnthn | pmichaud: pir::set__1QsP worked | 13:32 | |
moritz | jnthn: not sure.. but the segfaults seem to have gone away | 13:33 | |
jnthn | moritz: Yeah, I fixed those. | 13:34 | |
moritz | jnthn++ | ||
jnthn | moritz: Was something in the *%_ patch | ||
moritz | jnthn: just saw it in the log | 13:35 | |
dalek | odel: 9e81523 | (Martin Berends)++ | c/t/01-toolchain/01a-cc.c: [c/t/01-toolchain/01a-cc.c] test C compiler and dynamic library loader |
||
jnthn | mberends: There's a win32 equivalent for dlopen if it doesn't work right off | 13:36 | |
13:36
im2ee left
|
|||
mberends | jnthn: yeah, there's gotta be for .DLL files, just never needed to use it before | 13:37 | |
dalek | ast: 82ca32c | moritz++ | S12-c (2 files): unfudges and refudges for rakudo |
13:38 | |
mberends | which Win32 C compiler requires the least amount of disk space? | 13:39 | |
eek, laptop battery has only 5 minutes remaining | |||
o/ | 13:40 | ||
13:40
mberends left,
im2ee joined
13:47
mberends joined
13:48
Moukeddar joined
|
|||
Moukeddar | \o Perl6'ers | 13:48 | |
dalek | kudo/nom: 5c4d4d9 | jonathan++ | src/core/List.pm: A couple more places where we missed 'is rw'. |
13:49 | |
kudo/nom: fd88893 | jonathan++ | src/core/EnumMap.pm: And one more 'is rw'. |
|||
13:56
mberends left,
mberends joined
14:00
drbean left
14:01
[Coke] left
14:02
mberends left
14:03
MayDaniel joined,
[Coke] joined
|
|||
tadzik | moritz: got a while? | 14:04 | |
14:04
Moukeddar left
|
|||
dalek | kudo/nom: f2e0b4a | jonathan++ | src/ (3 files): Make sure we don't lose scalarness of [...] and so forth that are returned, just rw-ness should be stripped. |
14:09 | |
kudo/nom: dba1c2f | jonathan++ | src/Perl6/Actions.pm: Turn on scalar decontainerization of return values, and return value type checking. Note we need to be careful to add 'is rw' now to routines that fall off the bottom with a value we expect to return in containerized form. Think I've caught all of these; testing welcome. |
|||
jnthn | break, bbs | 14:13 | |
14:15
wamba1 left
14:37
Zapelius left
|
|||
TimToady is home again | 14:38 | ||
phenny | TimToady: 08 Jul 21:14Z <sorear> tell TimToady / <fun($/)> / doesn't use <.newlex> or <.finishlex> at all, does it create a new $/ or does it use the surrounding $*CURLEX's $/ ? | ||
jnthn | wb, TimToady :) | 14:39 | |
std: sub foo { }; sub foo { } | 14:44 | ||
p6eval | std 37a0cdd: OUTPUT«===SORRY!===Illegal redeclaration of routine 'foo' (see line 1) at /tmp/VEHAcmljus line 1:------> sub foo { }; sub foo⏏ { }Check failedFAILED 00:01 118m» | ||
TimToady | the trip home yesterday was not supposed to be a redeye, but left 3 hours late, after several lightning delays and a medical emergency on board...fortunately while we were still parked... | ||
pmichaud | TimToady: o/ | ||
TimToady | so if I'm grumpy today, it's not you :) | 14:45 | |
pmichaud | ...unless it is. :) | ||
TimToady | well, not only you :) | ||
pmichaud | afk for a while -- bbl | 14:47 | |
dalek | kudo/nom: a78aaa0 | jonathan++ | / (2 files): Catch routine redeclaration in actions, rather than leaving it to IMCC to whine about. |
14:50 | |
15:12
[perlhack] joined,
MayDaniel left
15:13
[perlhack] left
|
|||
dalek | ast: 3dee80a | Coke++ | S02-magicals/dollar-underscore.t: track a nom regression. |
15:15 | |
TimToady | sorear: re why 0 is false, mostly hysterical raisins: P<6 can't really tell the difference between a string being used as a number and a number being used as a string | ||
so the P6 answer up till now on that has been "like P5" | 15:16 | ||
but since P6 *can* tell the difference between those, we could think about revising it | 15:17 | ||
if we implement val() according to spec, and change the string truth rule, then '0' would be true, but <0> would be false, since it thinks of itself as a string only secondarily | 15:18 | ||
[Coke] pokes dalek. | 15:19 | ||
TimToady | I suspect the main point at which it would fool people is my $num = prompt("Pick a number: ") | ||
unless we default prompt to val semantics or teach people to write val prompt, or given them a different prompt function that assumes val | |||
dalek | kudo/nom: 734ed25 | Coke++ | t/spectest.data: This test runs with a fudge. |
15:20 | |
jnthn | TimToady: What decides whether you are allowed to mix in to something using does? e.g. what makes Foo.new does Bar OK, but 3 does Bar not OK? It feels like some kind of immutability thing. | ||
TimToady | going the other way, it could fool people who aren't expecting my @strs = <I have 0 zebras> to use val on the 0 | ||
but both of these seem relatively minor issues | 15:21 | ||
jnthn didn't find anything on the spec | |||
(no hurry, I see you're pondering $other-issue at the moment too :)) | |||
TimToady | can anyone think of a more egregious counter-use-case? | ||
I think I'm done with "0".Bool for the moment... | |||
jnthn | I can only expect people be surprised about the '0' case because tradition has made them expect it to be false :) | ||
TimToady | but leaning towards making it True | ||
I'm trying to put my thumb on the scales of the future over the past here :) | 15:22 | ||
yes, you have to use 'but' instead to change the type of an immutable value, I think | 15:23 | ||
so it's very much an immutability thing | 15:24 | ||
jnthn | Yeah, I would expect "but" to work | 15:25 | |
Just wasn't sure how we decide immutability | |||
And it really matters now since if you mix into 0 then you've mixed into the 0 constant shared by your whole program in nom. :) | 15:26 | ||
TimToady | sorear: re scoping of $/ in //, I'm inclined to keep the rule simple the way it is, and just use the outer $/, since we've already pretty much guaranteed to clobber it by the time the // finishes, and I find named decls to be a convenient ledge on the slippery slope | 15:27 | |
the main problem here is the potential conflict with the laziness of regexen | |||
and, in fact, laziness is probably the main reason we shouldn't have just made the change we just made :) | 15:29 | ||
15:30
kaare_ joined
|
|||
TimToady | I may have to retract it... | 15:30 | |
or we put in some kind of laziness barrier to out-of-band dynvars | |||
not sure what that'd look like though | |||
we already had the problem writ small, when we could say things like my @x := gather $_ if /foo/ for @stuff | 15:32 | ||
since there's no real block there to contain a new $/ | 15:33 | ||
dalek | ast: bcdd95c | Coke++ | S02-names_and_variables/variables-and-packages.t: fudge for rakudo nom. |
||
TimToady | perhaps we should suppress non-thread-local-ish updates to $/ or $! somehow | ||
so that gather would naturally not clobber your $/ or $! | 15:34 | ||
maybe we can force a separate co-routine/thread to get its own $/ or $! | 15:35 | ||
somehow... | |||
which is kind of an argument for declaring coroutines with named decls like other languages do, ah well... :) | 15:36 | ||
not gonna go there... | |||
main problem is knowing at compile time which thunks are going to end up parallelized, when the language itself is mutable | 15:37 | ||
15:38
kcwu joined
|
|||
dalek | kudo/nom: 63f8bd7 | jonathan++ | src/ (3 files): proto auto-generation for methods, so it's now possible to write multi methods again without having to write an explicit proto. Re-uses generic instantiation get get the invocant type on the auto-gen'd proto right...a cunning use I'd not thought of for it. :-) |
15:38 | |
kudo/nom: 1e5e666 | jonathan++ | t/spectest.data: Now pass S12-methods/syntax.t again. |
|||
kudo/nom: ce6e224 | jonathan++ | src/Perl6/Actions.pm: Start to differentiate between where we need to derive a dispatcher and when we need to auto-gen a proto for lexical multis. |
|||
TimToady | maybe the dynvar nature of $/ and $! saves us here, since the control routines for gatherish things can just declare new ones | 15:39 | |
15:39
daniel-s_ joined
|
|||
TimToady | in which case the compiler doesn't need to worry about it at all | 15:39 | |
15:39
leprevost left
|
|||
TimToady | we'd just have to be careful to make builtins like gather also intercept them | 15:40 | |
15:40
huf left,
daniel-s_ left
|
|||
TimToady | sorear: so I guess the short answer is that /stuff/ won't use the users $/ as long as some control structure inside defines its own $/ | 15:41 | |
which might actually depend on how lazy the particular RE is | |||
or not, if we just assume any RE is lazy | 15:43 | ||
15:43
im2ee left
|
|||
TimToady flutters back onto the backlog log... | 15:43 | ||
15:44
im2ee joined
15:47
thou left
|
|||
TimToady wonders whether we should steal a meme from python and have a Batteries distribution that defines what any red-blooded or green-ichored programmer should expect in the standard module system... | 15:48 | ||
thinking specifically of things already in the spec, like DateTime | 15:49 | ||
but more editorially controlled than CPAN | 15:50 | ||
so that OS vendors would be expected to build up from Batteries, not just from baremetal P6 | 15:51 | ||
unless they were specifically in the business of subsetting Batteries, which should be an explicit declaration | 15:52 | ||
(of the OS vendor, not in P6) | |||
better memes than Batteries also entertained... | |||
Normal, etc. | 15:53 | ||
"Norm" is nice and short :) | |||
and sounds like a nickname | |||
jnthn | Clothed (as opposed to *bare*metal :)) | 15:54 | |
TimToady | or "Norma" | 15:56 | |
15:57
huf joined
|
|||
dalek | kudo/nom: 86fd89b | jonathan++ | src/Perl6/ (2 files): First cut of nested lexical multis, which derive a dispatcher based on the one in the outer lexical scope. |
15:58 | |
kudo/nom: 5448b49 | jonathan++ | NOMMAP.markdown: Remove completed nommap item. |
|||
lichtkind | TimToady: nah, norma is a supermarket chain in germany | 16:02 | |
16:04
tokuhir__ left
16:05
[Coke] left
|
|||
sorear | good * #perl6 | 16:07 | |
lichtkind | sorear: o/ | 16:09 | |
jnthn | hi sorear | 16:11 | |
dalek | ecs: 08b8886 | larry++ | S06-routines.pod: require parallelizers to declare $/ and $! dynvars Spurred by a question from sorear++. We need to be careful about async update of dynvars. Probably need a more general policy here eventually. |
16:12 | |
sorear | WHAT? $/ and $! are dynvars now? | 16:13 | |
TimToady | always have been | ||
sorear | jnthn: explain? | 16:14 | |
TimToady | S02:2812 | ||
jnthn | sorear: explain...what? | 16:15 | |
sorear: dynvar bit? | |||
sorear | yes | ||
jnthn | Ah | ||
Sounds familiar but... | |||
my $/ is context; # means that it can be seen dynamically too | |||
sorear | S02:2812 just talks about the validity of CALLER::<$/> | ||
jnthn | Right | 16:16 | |
sorear | I thought TimToady was saying $/ == DYNAMIC::<$/> | ||
er, CONTEXT | |||
jnthn | But if something is not marked "is context" (and all $*foo are by default) then they don't appear in CALLER | ||
Otherwise we can't optimize most lexicals down to locals/registers/whatever. | |||
my $a; foo() # foo can't use $CALLER::a | 16:17 | ||
my $a is context; foo() # foo can use $CALLER::a | |||
sorear | anyways, this "thunks declare their own $/" business is troubling to me. | ||
TimToady | eh, who said that? | ||
thunks can't declare their own $/ | 16:18 | ||
sorear | TimToady: you did. S06:38 | ||
16:18
donri joined
|
|||
TimToady | if they do, it's a decl in the outer lexical scope | 16:18 | |
"lazy constructs" is not referring to the thunk, but to the control code that potentially calls it | 16:19 | ||
dyamically | |||
*n | |||
sorear | I always thought '$/' was a lexically scoped reference. | 16:20 | |
TimToady | sure, it's a lexical, just like all dynvars are | ||
but we really need to be able to intercept async updates to those vars | |||
sorear | why? | ||
and how? | 16:21 | ||
TimToady | sanity | ||
that's what the new paragraph explains, is how | |||
things like .subst need to locate the $/ to update dynamically | 16:22 | ||
.match rather, to avoid confusing the issue | 16:23 | ||
.subst has extra $/ issues | |||
see the discussion in the backlog also | 16:25 | ||
specifically irclog.perlgeek.de/perl6/2011-07-09#i_4086805 and surroundings | 16:26 | ||
in that example reading @x could clobber $/ | 16:27 | ||
that would violate Least Surprise | |||
we can't have $! or $/ behaving that volatilely or they will be essentially useless | 16:28 | ||
sorear | TimToady: but then '$/' has to somehow find the $/ to read dynamically | 16:30 | |
TimToady: which conflicts with the notion that $/ reads the $/ in the nearest outer Routine | 16:31 | ||
TimToady | yes, and it will be properly dynamically scoped when they do | ||
sorear | or rather the nearest outer scope with a $/ | ||
sorry, I just got up and I don't understand how it's possible for $/ to be lexically and dynamically scoped at the same time. | 16:32 | ||
16:32
mberends joined
|
|||
TimToady | I don't think it's lexically scoped in any sense that is extra over other dynamic variables | 16:34 | |
some control code may have to be declared in a way that *doesn't* define a new dynamic $/ is all | |||
16:35
jack-ji left
|
|||
sorear | TimToady: so basically you're saying say $/ should be compiled like say $*foo ? | 16:36 | |
TimToady | or maybe we could have a different default for routines that look like control code, such as those that declare formal & params | ||
sorear | TimToady: what about $_ ? | ||
TimToady | that's what the spec has said for a long time | ||
$_ is handled just as it was | 16:37 | ||
sorear | where? | ||
TimToady | where does it say that? | ||
S02:2812 | 16:38 | ||
sorear | that doesn't say anything about bare $/ | ||
it only talks about CALLER::<$/> | |||
TimToady | "C<$_>, C<$!> and C<$/> are always dynamic, as are any variables whose declared names contain a C<*> twigil." | 16:39 | |
sorear | "dynamic" in that context just means "can be accessed through CALLER" | ||
TimToady | it's just that blocks use a $_ param that defaults to the outer $_ | ||
$/ and $! don't do that | 16:40 | ||
so if we, er, "simply" define the match routine not to declare $/, it will automatically find the caller's $/ | 16:41 | ||
this is essentially the same problem as returning an exit code from a forked process immediately, which requires time travel. | 16:44 | ||
async code has to return data in-band, not out-of-band | |||
there can only be one event stream between two threads, or things go non-deterministic | 16:45 | ||
and since laziness is fundamentally async, we have to force anything async into a single event stream | |||
dalek | kudo/nom: e66182f | jonathan++ | src/Perl6/Actions.pm: Toss dead code. |
16:46 | |
kudo/nom: 1c4235b | jonathan++ | src/Perl6/Actions.pm: proto routine auto-generation for lexical multis. |
|||
kudo/nom: fbe8267 | jonathan++ | t/spectest.data: Three more passing test files. |
|||
TimToady | er, that didn't come out right... | ||
and $! and $/ are fundamentally out-of-band | |||
16:48
[Coke] joined
|
|||
dalek | ast: b075ede | jonathan++ | S12-introspection/parents.t: Make S12-introspection/parents.t not depend on how type objects stringify. |
16:54 | |
16:59
wamba joined
|
|||
TimToady | jnthn++ for purging the p5-think | 16:59 | |
jnthn | TimToady: Well, also ~Any doesn't do the same thing in nom as master | 17:00 | |
nom: say Any; say ~Any | |||
p6eval | nom: OUTPUT«Any()Use of uninitialized value in string context» | ||
jnthn | Due to .gist/.Str split, I guess | ||
TimToady | there is a long history of confusing strings with types in Perl... | 17:02 | |
I know who to blame it on, at least up until several years ago :) | |||
but the mistake was propagated in parrot culture too | 17:03 | ||
jnthn | Yeah | ||
And it took a new objects implementation to really break free of it. | |||
jnthn grudgingly implement .isa('Foo') | 17:04 | ||
*implemented | |||
Though the MOP doesn't even provide it. | 17:05 | ||
TimToady | glad to see the memerot in this case :) | ||
TimToady wonders if anyone has ever used the term "memerot" before... | |||
though in this case it's been taken out and shot repeatedly, and stayed undead | 17:06 | ||
"undead memes" is probably redundant | 17:07 | ||
17:10
JimmyZ left
17:11
grey21 joined
17:16
anonymous joined
|
|||
jnthn | nom: say [Cool, [Any, [Mu]]] eqv [Cool, [Any, [Mu]]] | 17:16 | |
p6eval | nom: OUTPUT«Use of uninitialized value in string contextUse of uninitialized value in string contextUse of uninitialized value in string contextUse of uninitialized value in string contextUse of uninitialized value in string contextUse of uninitialized value in string contextBool:… | ||
jnthn | hm | ||
17:16
_jaldhar left,
anonymous is now known as Guest77419
|
|||
TimToady | alternatively, we make $! and $/ more in-band, and they just record the last return value on the user end, and the called routine doesn't have to worry about them at all, but then s/// must be a macro that desugars to a call that sets $/ on return | 17:16 | |
jnthn | rakudo: say [Cool, [Any, [Mu]]] eqv [Cool, [Any, [Mu]]] | ||
p6eval | rakudo 72d158: OUTPUT«Bool::True» | ||
jnthn likes master's answer better... | 17:17 | ||
17:17
_jaldhar joined,
Guest77419 left
|
|||
TimToady | nom: say [Cool, [Any, [Mu]]] ~~ [Cool, [Any, [Mu]]] | 17:18 | |
p6eval | nom: OUTPUT«No applicable candidates found to dispatch to for 'ACCEPTS'. Available candidates are::(Mu, Mu $topic, Mu %_)current instr.: 'ACCEPTS' pc 398913 (src/gen/CORE.setting.pir:106021) (src/gen/CORE.setting:238)» | ||
jnthn | Array.ACCEPTS sure ain't implemented | ||
eqv looks like a bunch of cheat | |||
TimToady | cirsaw related maybe? | ||
sorear | jnthn: what do you think of making $_ compile to find_dynamic_lex? | 17:19 | |
TimToady | we can probably stick with treating $_ as pure lexical, and leave it dynamic only in the sense that CALLER can see it | 17:20 | |
since everybody has a lexical $_ one way or another | 17:21 | ||
jnthn | TimToady: No, just NYI | ||
TimToady | that's not cheating, that's just laziness :) | 17:22 | |
jnthn | sorear: Feels odd...given we always have one immediately in the block | 17:23 | |
(unless I missed a proposal to change that...) | |||
TimToady | no, it's just that S02:2812 lumps $_ in as always dynamic, but it's relatively meaningless from the standpoint of code gen | 17:24 | |
we could make that clearer I suppose | |||
sorear | jnthn: blocks yes but not Codes | 17:29 | |
jnthn | sorear: ah, true | 17:30 | |
sorear | TimToady: my @x := gather take $_ if .pie for @baz | ||
TimToady | but they still have a $_ | ||
from OUTER | |||
sorear | TimToady: needs to use _gather's $_, not the Block's $_ | ||
jnthn | sorear: Thunks aren't really first class though... | ||
TimToady | doesn't for already imply that | 17:31 | |
jnthn | sorear: There's not a situation where you can have one that wouldn't see its outer's $_ | ||
afaik | |||
TimToady | does for just temporize right now? | ||
sorear | TimToady: yes | ||
TimToady | is prolly enuf | 17:32 | |
or rewrites front to ->$_{} | |||
could be ast-macro-y | 17:33 | ||
jnthn | iirc Rakudo does that rewrite. | ||
sorear | if $_ is being treated as a contextual, that makes some things nicer | ||
TimToady | esp if we ever want -> behavior on those for loops | ||
sorear | but not others | ||
17:34
ciphertext left,
grey21 left
|
|||
TimToady | シャワーにdenkenします。& | 17:36 | |
17:45
Mowah left
17:47
icwiener joined,
cooper joined
17:59
pyrexkidd left
|
|||
[Coke] | is there an implementation of enums in nom? | 17:59 | |
jnthn | no | 18:00 | |
[Coke] | thanks. | 18:01 | |
what about S12-introspection? | 18:02 | ||
18:03
[awall] joined,
[awall] left
|
|||
[Coke] | nevermind, those are failing interestingly. | 18:04 | |
jnthn | [Coke]: Working on parents.t at the moment. | 18:07 | |
cognominal_ | hi, what is the Perl 6 equivalent of Javascript Harmony proxies? wiki.ecmascript.org/doku.php?id=harmony:proxies | 18:14 | |
…if any | |||
[Coke] | argh. massive git rebase -i failure. :P | 18:19 | |
should have just done 31 commits. Is there a way to completely throw out a rebase? | 18:21 | ||
ah, whew. | |||
dalek | ast: db85667 | Coke++ | S (15 files): reflect current rakudo/nom state |
18:29 | |
Heuristic branch merge: pushed 21 commits to rakudo/nom by coke | 18:34 | ||
[Coke] | I tried to collapse the commits on nom branch and was only able to combine them down to 21 commits instead of the 3 I was hoping for. Apologies. | ||
sorear wonders what exactly TimToady is doing to his shower with the elctron microscope | 18:35 | ||
cognominal_: implementation dependant | 18:36 | ||
cognominal_: for 6model, you want to implement a new REPR and a new HOW | 18:37 | ||
cognominal_: details TBD | |||
[Coke] | jnthn++ # more passing tests. | 18:38 | |
almost worth having to merge that. :) | |||
18:38
kaare_ left
|
|||
TimToady | Jetzt habe ich ein 電顕 nicht gekauft... # corrections welcome | 18:38 | |
18:39
Bzek left
|
|||
dalek | ast: 6f1bf0c | jonathan++ | S12-introspection/parents.t: More de-stringification of parents.t. |
18:47 | |
ast: 41fda76 | jonathan++ | S (15 files): Merge branch 'master' of github.com:/perl6/roast |
|||
sorear | phenny: de en " Jetzt habe ich ein 電顕 nicht gekauft"? | 18:51 | |
phenny | sorear: The de to en translation failed, sorry! | ||
sorear | phenny: de en " Jetzt habe ich ein Substantiv nicht gekauft"? | ||
phenny | sorear: "Now I have not bought a noun" (de to en, translate.google.com) | ||
18:51
masak joined
|
|||
masak | oh hai! | 18:51 | |
sorear | o/ MASAK | ||
masak | greetings from Nowhere In Particular! :) | 18:52 | |
(it's slightly left of the middle of Sweden) | |||
sorear | *envy* | 18:53 | |
sorear is in the subtropical USA coping with a heat wave | |||
jnthn | dinner & | 18:54 | |
masak | the weather here is sunny but not intolerable. | ||
I should put in a few hours and finish crypt tonight. | |||
dalek | kudo/nom: 20abe0d | jonathan++ | src/Perl6/Metamodel/C3MRO.pm: Fix up MRO computation when there's containered stuff around. |
||
kudo/nom: bab5ed2 | jonathan++ | src/core/ (2 files): Flesh out eqv a bit more. |
|||
kudo/nom: 98baf0f | jonathan++ | src/Perl6/Metamodel/MultipleInheritance.pm: Implement :tree in .^parents. |
|||
kudo/nom: d31e835 | jonathan++ | t/spectest.data: Run S12-introspection/parents.t, |
|||
kudo/nom: 322fcc0 | jonathan++ | src/ (3 files): Implement Attribute.get_value. |
|||
masak | C3MRO sounds like a Star Wars droid. :P | 18:55 | |
also, the :tree output from .^parents looks impressive, but I can't think of a single actual use for it. | 18:56 | ||
specifically, it doesn't say to which class the methods belong, IIRC. | |||
jnthn | masak: er, .^parents returns...the parents. | 18:57 | |
Not methods | |||
:) | |||
masak | er. | 18:58 | |
good point. | |||
tadzik | Attribute.get_value, is that what we need for a nice Mu.perl? :) | ||
masak | jnthn: I was thinking of .^methods(:tree), if there is such a thing. | ||
tadzik | oh, masak-san. You want do discuss Formatting Codes a bit? | ||
masak | tadzik: sure. | ||
tadzik: wasn't .perl supposed to be the one that doesn't break encapsulation? | |||
tadzik | was it? | 18:59 | |
[Coke] | Tests: 6161 | ||
tadzik | yay! | ||
masak | yay tests! | ||
tadzik: I want to discuss formatting codes! bring it on! | 19:00 | ||
tadzik | masak: to cut the long story short: is there a more efficient way of handling formatting codes than figuring out a pod_string token, which checks every character for being a formatting code? | ||
jnthn | tadzik: (Mu.perl) yes and it handles natives automagically for you | ||
tadzik | jnthn: cute :) | ||
masak | tadzik: does every formatting code contain a '<'? | ||
tadzik | masak: yes. It's a capital letter, followed by a bunch of <'s | 19:01 | |
no, post-processing is not an option really | |||
masak | I see. | ||
tadzik | because of B<=begin block ... =end block> Pod6 allows | ||
masak | since you want a tree structure as your "result" (I presume), if I were you I'd definitely do it with a grammar. | ||
but maybe a dedicated one. | |||
i.e. one that only does the formatting codes. | 19:02 | ||
tadzik | just for formatting codes, I thought about it. But again, due to magic like I presented, they have to be handled in the grammar anyway | ||
masak | not sure I understand your example. | ||
what's it do? | |||
tadzik | oh, wait | 19:03 | |
I may have misread S26 | |||
masak | that happens to all of us, I think :P | ||
tadzik | I frequently have trouble figuring out what in S26 is an example and what is just S26 itself | ||
masak | yeah :) | 19:04 | |
tadzik | I think it may use the code I presented to bold a fragment of an example | ||
masak | you'd really want to read the HTML output... | ||
tadzik | yes, it seems so | ||
I wonder how much work I would have to do after GSoC to fully parse S26 | |||
masak | I know S26 talks about which formatting codes are to be interpreted literally and which ones are to be interpreted magically in verbatim blocks, or sump'n. | ||
tadzik | yeah, allowing only some of them suggests post-processing | 19:06 | |
masak | not necessarily. | 19:07 | |
it could also suggest having some checks in the rules in the grammar. | |||
tadzik | In particular, | ||
you can nest comment blocks in the middle of a formatting code | |||
if you look this up in S26 you would be worried too :) | |||
masak | heh :) | ||
masak looks it up | |||
tadzik tries to parse this example by hand | 19:08 | ||
I have no idea what this is supposed to represent, to be honest | 19:09 | ||
masak | are you talking about S26:1540? | ||
tadzik checks line numbers | 19:10 | ||
nope | |||
1703 | |||
masak looks | |||
tadzik | oh, I think I see what this means | 19:11 | |
B<I shall bla bla =begin comment bla bla =end comment and bla bla> | |||
insane, imho | |||
masak | I think your analysis is correct. | 19:12 | |
but it also says there that formatting codes are just a type of block. | |||
so it's all nodes in a tree, basically. | |||
tadzik | yeah, so no post-processing | ||
masak | not if you can avoid it :) | ||
I agree that the whole concept of =comment feels very meta :) | 19:13 | ||
tadzik | now =code :allow<B> bothers me | ||
masak | that's the thing you'd have to use dynvars for. | ||
tadzik | so the grammar rule itself has to figure out what kind of tokens it allows inside | ||
masak | yep. | ||
might be specific to =code, I dunno | |||
tadzik | it's for everything | 19:14 | |
masak | brb, keep talking :) | ||
TimToady | mutable derivative languages, who'da thunk? | ||
tadzik | those block options are not in my schedule, but I feel like implementing them anyway in some spare moment | ||
TimToady | well, mutated by derivation, more precisely... | 19:15 | |
just like the quote nibbler does | |||
(in STD, anyway) | |||
masak | yes. | 19:16 | |
I think this amounts to the same thing. | |||
TimToady | the big point of p6 parsing is that you can mixin new escapes and still have all the old ones | 19:18 | |
19:18
wamba left
|
|||
TimToady | and the JIT lexer is supposed to Just Work | 19:18 | |
STD actually does mix in bits of grammar roles to do things like Q:qq:w | 19:19 | ||
masak | TimToady: when you mix in new grammar into something, where do the new actions go? | ||
TimToady | yes, well, that's a sore point :) | ||
masak | yeah :/ | 19:20 | |
TimToady | "a subject of ongoing research" :) | ||
suggestions welcome... | |||
19:20
colomon left
|
|||
tadzik | okay. So if FormattingCodes are just another blocks, are they allowed, top-level in Perl 6 code? | 19:20 | |
TimToady | not all blocks are created equal | 19:21 | |
tadzik | no, for <[A..Z]>'<' is not a directive | ||
ok, I get it, kinda | |||
TimToady | niecza: { $^a } | 19:22 | |
p6eval | niecza v7-20-gd3c5fc0: OUTPUT«Unhandled exception: No value in mainline available for parameter $a at /tmp/DqRXTRiYwT line 1 (MAIN mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 1891 (CORE C887_ANON @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 1892 (CORE module-… | ||
TimToady | innersting | ||
masak | tadzik: I guess that's not the only restriction on how blocks can be nested. | ||
TimToady | niecza: if 42 { $^a } | 19:23 | |
tadzik | masak: what do you mean? | ||
p6eval | niecza v7-20-gd3c5fc0: OUTPUT«Unhandled exception: No value in mainline available for parameter $a at /tmp/UqmiJ5g38p line 1 (MAIN mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 1891 (CORE C887_ANON @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 1892 (CORE module-… | ||
TimToady | is that a compile-time or run-time error? | ||
jnthn | nom: if 42 { say $^a } # curious... | ||
p6eval | nom: OUTPUT«42» | ||
TimToady | ooh, yea | ||
hmm | |||
bad example, maybe | |||
jnthn | TimToady: Looks like runtime from the backtrace. | ||
TimToady | niecza: BEGIN { $^a } | 19:24 | |
p6eval | niecza v7-20-gd3c5fc0: OUTPUT«===SORRY!===Placeholder variable $^a may not be used here because the surrounding block takes no signature at /tmp/jTDSdW1Hzf line 1:------> BEGIN { ⏏$^a }Unhandled exception: Check failed at /home/p6eval/niecza/… | ||
TimToady | that's what I was looking for... | ||
jnthn | nom: BEGIN { $^a } # again, curious... | ||
p6eval | nom: OUTPUT«Cannot use placeholder parameters in this kind of block at line 1, near " # again, "current instr.: 'nqp;HLL;Grammar;panic' pc 23533 (src/stage2/gen/NQPHLL.pir:6314) (src/stage2/gen/NQPHLL.pm:328)» | ||
tadzik | Segmentation fun! gist.github.com/1073860 | 19:25 | |
TimToady | that block is definitely not created equal, unless it's the other ones that aren't... | ||
jnthn | Not as good an error, but compile time. | ||
tadzik | jnthn: could you take a peek? | ||
19:25
peczenyj joined
|
|||
TimToady | the niecza one is also compile time | 19:25 | |
that last one | |||
jnthn | tadzik: Two things | ||
tadzik: substr($_.name, 2, nqp::chars($_.name)) | |||
TimToady | "Check failed" | ||
jnthn | tadzik: We talked about that one the other day | ||
just use 2 arg form of substr, or you'll have to box the return value from nqp::chars | 19:26 | ||
You're feeding a Parrot object into a Perl 6 sub. The binder hates that. | |||
tadzik | oh, ok | ||
19:26
peczenyj left
|
|||
jnthn | I guess I should figure out how to make it hate it in a less segfaulty way though | 19:26 | |
TimToady | All that being said, misplaced placeholders are not checked by grammar mixin | ||
jnthn | tadzik: The other thing is that get_value needs an argument! :) | 19:27 | |
tadzik: Or it doesn't know what object to grab the attribute value for. | |||
tadzik | oh! :) | ||
TimToady | semantics tend to be the domain of dynvars instead of syntax | ||
(compiler dynvars) | |||
tadzik | is 'self' sufficient? | ||
jnthn | tadzik: yes, that's what you want in this case. | ||
tadzik: as masak said, I'm not sure if .perl is the one that should break the encapsulation though | 19:28 | ||
tadzik: Or whether only DUMP should do that | |||
tadzik | I think rakudo does that | ||
master, I mean | |||
jnthn looks around for a language designer :) | |||
masak | tadzik: it does. | 19:29 | |
(and that's wrong) | |||
jnthn | (iyo) | ||
masak | right. | ||
jnthn | (or I want a spec ref) | ||
tadzik | it should return the code that creates the same structure. How do you do that w/o breaking encapsulation? | ||
masak | to be honest, I don't remember which one of .perl and .pretty was supposed not to break encapsulation. | ||
jnthn | tadzik: Well, you can't actually return code that creates the same structure in that sense | ||
tadzik: Because .new doesn't by default accept values for privates | 19:30 | ||
(in nom) | |||
tadzik | hmm, true | ||
masak | tadzik: if constructors aren't supposed to accept values for accessor-less attrs, the point is kinda moot anywa... what jnthn said. | ||
jnthn | masak: Yeah. Depends if the point is for debugging or not | ||
tadzik | multi method DUMP(Mu:D:) { self.perl } | ||
jnthn | I suspect that DUMP - since it's uppercase - is fine to break encapsulation. | ||
tadzik | ok | 19:31 | |
jnthn | Uppercase means OMGWTF :) | ||
And .perl maybe should not | |||
And then add a DUMP(Any:D:) | |||
In Any | |||
Which otherwise delegates to .perl | |||
oh, wait | |||
no, that's silly | |||
:) | |||
hm | |||
tadzik | anyway, I get Method 'get_value' not found for invocant of class 'BOOTSTRAPATTR' | ||
jnthn | grr...does this mean we need a whole hierarchy of DUMP as well as one of perl... | 19:32 | |
tadzik | sniff sniff, is that circularity? :) | ||
jnthn | tadzik: oh heh | ||
masak | I don't *want* a standard dumping function that breaks encapsulation. am I the only one? | ||
jnthn | tadzik: Yup | ||
tadzik | well, it's good that the method I wrote is useless anyway then ;) | ||
19:32
offby1 is now known as snord
|
|||
jnthn | masak: I guess you write code that doesn't ever need to be debugged. | 19:32 | |
19:32
snord is now known as offby1
|
|||
masak | jnthn: it's not that. | 19:32 | |
jnthn: it's about making stupid things slightly inaccessible. | |||
jnthn | masak: Are you really saying "let's make anybody who wants to be able to dump the innards of an object install a CPAN module"? | 19:33 | |
tadzik | you can still break it with MOP, can't you? | ||
sorear | TimToady: BEGIN calls blast which calls block which calls newlex(0) | ||
jnthn | tadzik: Sure | ||
sorear | TimToady: { } uses pblock which uses newlex(1) | ||
tadzik | I guess that's the beginning of Data::Dumper :) | ||
masak | jnthn: no, I'm saying "to break encapsulation, do .HOW and then .get_attribute($name, $obj)" | ||
jnthn: make it a little hard :) | |||
sorear | TimToady: this sets $*CURLEX<!NEEDSIG>, which is checked by add_placeholder | ||
jnthn | masak: I think .DUMP (in uppercase) is quite clear that you're doing something "interesting" | 19:34 | |
masak | bleh | ||
tadzik | or .HOW :) | ||
sorear | TimToady: the error message in { $^a } is LTA because it's generated after inlining... | ||
jnthn | Right | ||
masak | jnthn: what good is real encapsulation if we provide all those primitives to break it? | ||
jnthn: before you know it you have lots of code parsing the .DUMP output :( | |||
tadzik | phenny "gościnność"? | ||
phenny: "gościnność"? | 19:35 | ||
phenny | tadzik: "hospitality" (pl to en, translate.google.com) | ||
masak | tadzik: the word looks like "guestishness", which kinda makes sense :) | ||
tadzik | maybe we need a role Hospitality, which just breaks encapsulation without worrying, and you can apply it to your classes if you want to :) | ||
masak | tadzik: or maybe "hostishness". | ||
tadzik | masak: it's something like that, yes :) | ||
jnthn | masak: I...find the fact that somebody would think of doing that kinda depressing. :/ | 19:36 | |
masak | if I were BDFL, I'd charge anyone wanting to add a .DUMP method with first studying encapsulation in OO for a week, and then writing a one-page essay on why it's a good thing. | 19:37 | |
jnthn | masak: If they're stupid enough to do that, they're stupid enough to install a CPAN module that lets them do the same thing and parse its output too, I suspect. | ||
masak | (it would appear I need to work on the "B" part of "BDFL") :P | ||
jnthn: yes. I'm just saying let's not encourage it in core. | |||
jnthn: the .HOW.get_attr is *needed* as a last-resort safety valve. | 19:38 | ||
jnthn: for things like serialization and object construction. | |||
jnthn: but besides that... it should be *tough* to break that encapsulation layer. | |||
"private" should mean something. | 19:39 | ||
19:39
Patterner left
|
|||
jnthn | Well, I've said what I think. I can't be bothered to waste any more time on this. | 19:39 | |
I've done the MOP bit, I'll leave @other to work out what .perl and .DUMP will and won't do. | 19:40 | ||
masak | "Perl 6 objects: more like coconuts than like grapes" | ||
TimToady | .oO(I've...got...a loverly bunch of coconuts...) |
19:44 | |
cognominal_ | sorear, thx | ||
masak | TimToady: don't know the reference, but it sounds catchy :) | ||
TimToady is wondering about syntax that supports SSA better, and incidentally makes it easy to declare SSA-style "constants" that don't take sigils | 19:46 | ||
sorear | I started with Perl because I'm allergic to languages that try to enforce good practice | ||
masak | sorear: point taken. | 19:47 | |
TimToady | suggest strongly is pretty okay though :) | ||
masak | bbl | 19:48 | |
TimToady | such as reserving my x = stuff() if x is lowercase and/or unrecognized | 19:52 | |
19:52
jevin_ left
|
|||
TimToady | or maybe tie it to ::= instead | 19:52 | |
that is, allow current constant syntax for 'my' as well, restricted to SSA semantics | |||
might be a net win, and the absense of a sigil will remind people to treat them as readonly | 19:53 | ||
just like constants, except they can be rebound next time through | |||
19:53
jevin joined
|
|||
TimToady | might be a net win (almost typed newt win...) | 19:54 | |
19:56
cognominal_ left
19:58
cognominal joined
19:59
jevin left
|
|||
sorear | TimToady: sub foo($f) { $/ := 2; $f(&say) }; $/ := 1; foo(*.($/)); # what does this print? | 20:08 | |
TimToady | I would think it prints 1 | 20:12 | |
*.($/) does not make the identity of $/ lazy | |||
or thunky | |||
and we already use * to escape the placeholder rules that disallow two levels of formals | 20:13 | ||
20:14
cognominal left
|
|||
sorear | TimToady: why does it not make the identity lazy? | 20:14 | |
TimToady | why should it? | 20:15 | |
20:15
cognominal joined
|
|||
sorear | TimToady: because you could be passing the code object to &GATHER or something | 20:15 | |
TimToady | hmm | ||
well, maybe it is lazy then--I guess that's how we expect dynvars to behave anyway | 20:17 | ||
TimToady is just shooting from a jet-lagged hip here... | |||
20:17
molaf joined
|
|||
TimToady feels a fork coming, in the chess sense... | 20:18 | ||
TimToady wonders if it's worth distinguishing $/ from $*/, and decides probably not, since most uses of $/ are implicit anyway | 20:19 | ||
one can do my $dl := $/; if one really needs to access the lexical $/, I suppose | 20:21 | ||
perhaps that implies that $/ should just be set with assignment semantics, so we avoid rebinding it too often | 20:22 | ||
tadzik | how would iterate over the characters in a string in nqp? | ||
TimToady | maybe you have to not-quite iterate... :P | 20:23 | |
20:24
wamba joined
|
|||
tadzik | :) | 20:26 | |
all that comes to my mind is substr() magic :/ | |||
jnthn | nqp: my @chars := pir::split('', 'abcde'); say +@chars | 20:27 | |
p6eval | nqp: OUTPUT«Null PMC access in add()current instr.: '_block1000' pc 0 ((file unknown):1)» | ||
jnthn | nqp: my @chars := pir::split('', 'abcde'); say(+@chars) | ||
p6eval | nqp: OUTPUT«5» | ||
jnthn | tadzik: That then iterate over the array works | ||
tadzik | oh, that works too, nice | ||
jnthn | tadzik: substr is probably nasty | ||
tadzik | yeah | ||
jnthn | tadzik: Because if it's a UTF-8 string (which it probably is) it'll scan from the start every time :/ | 20:28 | |
tadzik | yeah | ||
sorear | TimToady: why avoid binding? binding is cheaper than assingment in nom, IIUC | 20:29 | |
jnthn | sorear: True, but the gap is *much* smaller than in master. | 20:30 | |
oh, though binding was awful in master too... | |||
:/ | |||
jnthn has busted generic instantiation, which is a pain to debug :( | 20:31 | ||
masak is spent | 20:36 | ||
TimToady | better than being bought... | 20:37 | |
masak | I think so, yes. I also haven't sold out. | 20:38 | |
and I'm going to cash in on some well-earned sleep :) | |||
'night, Perl 6 knights. | |||
jnthn | night, masak | 20:39 | |
20:39
masak left
|
|||
tadzik | gah, I'm typing too slow | 20:39 | |
20:45
im2ee left
20:46
im2ee joined
|
|||
awwaiid | I just (re-)learned that niecza compiler is written in perl6 with C# only for runtime support? neat | 20:51 | |
20:54
Psyche^ joined,
Psyche^ is now known as Patterner
21:00
kst left
|
|||
TimToady | pmichaud, moritz: re irclog.perlgeek.de/perl6/2011-07-08#i_4082133 <?before \s*> is not a no-op to the lexer, since LTM follows a before in preference to what comes after it | 21:01 | |
21:06
im2ee left
|
|||
moritz | ah. | 21:20 | |
21:24
NecroWater joined
|
|||
dalek | kudo/nom: 8ff1db3 | moritz++ | t/spectest.data: 5 more passing test files |
21:24 | |
21:26
NecroWater left
21:27
odrm left
21:28
GodFather joined
|
|||
dalek | ast: 675dd78 | moritz++ | S03- (2 files): two wee rakudo unfudges |
21:30 | |
jnthn | ooh, yay, more tests. | 21:31 | |
:) | |||
moritz | Files=225, Tests=6417 | 21:32 | |
jnthn | Wow. And that's before we have regexes. :) | ||
tadzik | so it's 6418 on podparser :P | 21:33 | |
if there are no regressions | |||
dalek | ast: 6b6ba2a | moritz++ | S03-operators/eqv.t: some rakudo unfudges in eqv.t |
21:35 | |
jnthn is tinkering with generics some more | 21:36 | ||
pmichaud | TimToady: (before \s*) Makes perfect sense, thanks. | 21:38 | |
"in preference of" means "instead of"? | |||
21:42
Psyche^ joined
|
|||
moritz | nom: my ::T $foo = 3; say T | 21:44 | |
p6eval | nom: OUTPUT«Type check failed in assignment to '$foo'; expected 'T' but got 'Int'current instr.: '_block1002' pc 28 ((file unknown):0) (/tmp/Z6MiUHTh7T:1)» | ||
21:46
Patterner left,
Psyche^ is now known as Patterner
|
|||
jnthn wonders what that even means... | 21:46 | ||
nom: my ::T $foo; say T | |||
p6eval | nom: OUTPUT«Could not find sub &Tcurrent instr.: '_block1002' pc 73 ((file unknown):64254729) (/tmp/bZqSRNwwZp:1)» | ||
moritz | jnthn: ask masak. rt.perl.org/rt3//Ticket/Display.html?id=72814 | ||
jnthn | I guess he just saw NPMCA and ticketed it :) | 21:47 | |
it is, after all, always wrong | |||
moritz | jnthn: right, but I can still point a finger at him and should "he should know!!!" | 21:48 | |
jnthn | :D | 21:49 | |
tadzik | std: my ::T $foo; say T | ||
p6eval | std 37a0cdd: OUTPUT«ok 00:01 120m» | ||
Util | Is there a problem with adding .classify to nom, or is it just NYI ? | 21:50 | |
moritz | seems like a type capture | ||
tadzik++ | |||
Util: should work | |||
tadzik | moritz: I didn't do anything :) | ||
moritz | tadzik: you asked std | ||
tadzik | oh, moritz, I'll ask you something | ||
jnthn | wait, what's it capturing? :) | ||
nom: my ::T $foo; say $foo.WHAT | 21:51 | ||
p6eval | nom: OUTPUT«Cannot call a method on type variable Tcurrent instr.: 'nqp;Perl6;Metamodel;GenericHOW;find_method' pc 20734 (src/gen/perl6-metamodel.pir:4429) (src/gen/Metamodel.pm:123)» | ||
moritz | jnthn: the type of the value first assigned to the variable? | ||
jnthn | no wai | ||
tadzik | about parsing FormattingCodes, do you see any better option than making something like pod_string { [ <formattingcode> || . ]+ }? | ||
21:51
Kivutarrr joined
|
|||
GodFather | Newbie: What's wrong with this code? rule ph { abc } my $s = "abc"; print ("OK\n") if $s ~~ / <ph>/; I get error Useless declaration of has-scoped ..... | 21:52 | |
tadzik | you probably want this to be "my rule" | ||
jnthn | *my* rule ph { abc } | ||
Util | rakudo: my @a = 1..5; my %h = @a.classify({$_ %% 2}); %h.perl.say; | ||
p6eval | rakudo 72d158: OUTPUT«{"Bool::False" => [1, 3, 5], "Bool::True" => [2, 4]}» | ||
Util | nom: my @a = 1..5; my %h = @a.classify({$_ %% 2}); %h.perl.say; | 21:53 | |
p6eval | nom: OUTPUT«Method 'classify' not found for invocant of class 'Array'current instr.: '_block1002' pc 122 ((file unknown):150) (/tmp/FFFKSTPc6m:1)» | ||
tadzik | has-scoped is like a class attribute, I guess rules default to that | ||
Util | Looks NYI to me, moritz | ||
GodFather | Ok, tried that get Error Method 'ph' not found for invocant of class 'Cursor' etc | 21:54 | |
tadzik | that's a rakudobug, you probably need <ph=&ph> or something like this | ||
rakudo: my rule ph { abc }; my $s = "abc"; print ("OK\n") if $s ~~ / <ph=&ph>/ | 21:55 | ||
p6eval | rakudo 72d158: OUTPUT«OK» | ||
jnthn | or just <&ph> if you just want a match | ||
(but not to capture) | |||
GodFather | jnthn, thanks that worked | 21:56 | |
21:58
jevin joined
21:59
jevin left
22:00
drbean joined
22:01
soh_cah_toa joined
22:03
icwiener left
|
|||
moritz | [Coke]: I think it was you who asked that a few days ago... if you want accurate count of skipped spectests, run tools/test_sumamry.pl | 22:10 | |
22:13
jferrero left
22:15
jevin joined
22:16
jferrero joined
|
|||
[Coke] supposes he should get back to tests... | 22:28 | ||
moritz: oh, I was just curious. that "test=" number isn't a true count, esp. as we re-fudge things to get more files running again. That's all. | 22:29 | ||
oh - as you look at test files, try to un-skip tests - I've found a few that are todo'able or even pass. | 22:30 | ||
22:41
jevin left,
wamba left
22:49
Kivutarrr left
23:05
Kivutarrr joined
|
|||
dalek | kudo/nom: c30f5f3 | jonathan++ | src/ops/perl6.ops: Fix .VAR, which in turn was causing problems deep in generic instantiation of attributes. |
23:09 | |
kudo/nom: 12e692c | jonathan++ | src/Perl6/Metamodel/BOOTSTRAP.pm: Correct earlier patch to attribute generic instantiation. |
|||
kudo/nom: 8e8d803 | jonathan++ | src/Perl6/ (2 files): Fixes to make sure type variables can be seen inside the role body. |
|||
kudo/nom: 5aba02f | jonathan++ | src/Perl6/Actions.pm: Type variables need to defer to runtime lookup rather than being compile-time resolved in attribute lookup. |
|||
kudo/nom: 0280c83 | jonathan++ | t/spectest.data: We now pass S14-roles/submethods.t. |
|||
kudo/nom: 1f04cbc | jonathan++ | src/Perl6/Actions.pm: Also make sure mentions of generic types as terms are not resolved too early, so T.new works. |
|||
23:10
ciphertext joined
|
|||
dalek | kudo/nom: fb396ad | jonathan++ | NOMMAP.markdown: Update nommap. |
23:14 | |
23:17
dorlamm joined
|
|||
[Coke] | hurm. I'm getting conflicts trying to do this interactive rebase. I have 4 commits to the same file. Each one changes different lines in the file. If I re-order the commits in the interactive editor, it always generates a conflict. | 23:17 | |
any suggestins? | 23:18 | ||
23:29
orafu left,
orafu joined
23:32
jevin joined
23:38
lichtkind left,
molaf left
23:41
bluescreen10 left
|
|||
dalek | ast: 46ff167 | Coke++ | S1 (2 files): track rakudo/nom |
23:41 | |
23:41
bluescreen10 joined
|
|||
dalek | kudo/nom: 6d729b9 | Coke++ | t/spectest.data: list errors |
23:43 | |
kudo/nom: ec9adf4 | Coke++ | t/spectest.data: run fudged test |
|||
kudo/nom: d4a91f4 | Coke++ | t/spectest.data: errors |
|||
kudo/nom: 417acfb | Coke++ | t/spectest.data: run fudged test |
|||
23:46
f00li5h joined
|
|||
[Coke] just pushes. ;) | 23:48 | ||
jlaire | rakudo: say (1,2,3).map: *.Str() | 23:52 | |
p6eval | rakudo 72d158: OUTPUT«123» | ||
23:52
molaf joined
|
|||
jlaire | rakudo: say (1,2,3).map: *.Str().WHAT | 23:52 | |
p6eval | rakudo 72d158: ( no output ) | ||
jlaire | nom: say (1,2,3).map: *.Str().WHAT | 23:53 | |
p6eval | nom: OUTPUT«Rebuild in progress» | ||
TimToady | rakudo: say (1,2,3).map: *.Str().PARROT | ||
p6eval | rakudo 72d158: OUTPUT«StringStringString» | ||
TimToady | vm leakage | ||
jlaire | ok, that's what the local error smells like | 23:54 | |
===SORRY!=== Type objects are abstract and have no attributes, but you tried to access $!do | |||
nom: say (1,2,3).map: *.Str().WHAT | 23:55 | ||
p6eval | nom: OUTPUT«Rebuild in progress» | ||
TimToady | rakudo: say (1,2,3).map: *.Str.WHAT | 23:56 | |
p6eval | rakudo 72d158: ( no output ) | ||
TimToady | rakudo: say (1,2,3).map: *.Str.PARROT | ||
p6eval | rakudo 72d158: OUTPUT«StringStringString» | ||
23:56
Kivutarrr left
|
|||
TimToady | sounds like you tried to .() a WHAT | 23:56 | |
jlaire | Str without parens give the same error | 23:57 | |
TimToady | which should make a coercer, but maybe it doesn't | ||
ah, so it's internal | |||
yes, Str should invoke as coercion, so there's some disconnect somewhere | |||
jlaire | nom: say (1,2,3).map: *.Str.WHAT | ||
p6eval | nom: OUTPUT«Method 'count' not found for invocant of class 'Str'current instr.: '_block8724' pc 428189 (src/gen/CORE.setting.pir:119060) (src/gen/CORE.setting:2151)» | 23:58 | |
jlaire | nom: say (1,2,3).map: *.Str().WHAT | ||
p6eval | nom: OUTPUT«Method 'count' not found for invocant of class 'Str'current instr.: '_block8724' pc 428189 (src/gen/CORE.setting.pir:119060) (src/gen/CORE.setting:2151)» | ||
jlaire | nom: say (1,2,3).map: *.Str | ||
p6eval | nom: OUTPUT«Method 'count' not found for invocant of class 'Str'current instr.: '_block8724' pc 428189 (src/gen/CORE.setting.pir:119060) (src/gen/CORE.setting:2151)» | ||
TimToady | oh, yes, that's the parrot leakage | ||
23:59
envi left
|
|||
jlaire | nom: say (1,2,3).map: * | 23:59 | |
TimToady | not sure what count does there though | ||
p6eval | nom: OUTPUT«Method 'count' not found for invocant of class 'Whatever'current instr.: '_block8724' pc 428189 (src/gen/CORE.setting.pir:119060) (src/gen/CORE.setting:2151)» | ||
jlaire | oh well | ||
TimToady | oh, finding the max arity | ||
*.Str ought to return a WhateverCode |