»ö« 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 ~~⏏ Cool␤␤Parse 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«5␤6␤»
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 &not. 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 &not. 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 ~~⏏ Cool␤Parse failed␤FAILED 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 failed␤FAILED 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 context␤Use of uninitialized value in string context␤Use of uninitialized value in string context␤Use of uninitialized value in string context␤Use of uninitialized value in string context␤Use of uninitialized value in string context␤Bool:…
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 &T␤current 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 T␤current 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