»ö« 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.
jnthn Enough for tonight...gotta get up for $dayjob in the morning... 00:01
&
00:05 bluescreen10 joined 00:06 PacoLinux joined 00:16 drbean joined 00:17 sftp left 00:19 sftp joined 00:20 sftp left 00:35 sftp joined 00:41 rdesfo left 00:47 isBEKaml left
dalek ast: 26046d4 | Coke++ | S03-smartmatch/ (3 files):
nom fudge
00:52
00:52 fbass joined, impiou1 left 00:53 fbass left 00:56 cogno joined
dalek kudo/nom: 40aa6d5 | Coke++ | t/spectest.data:
run more tests, track failure modes.
00:56
00:57 rgrau left, fbass joined, fbass left, fbass joined 01:07 sftp left 01:13 fbass left 01:14 sftp joined 01:17 fbass joined
dalek kudo/nom: 0b11319 | Coke++ | t/spectest.data:
track failure mode
01:22
01:25 cognominal left, cognominal joined 01:33 woosley joined 01:34 whiteknight left
[Coke] getting a ton of non-zero exit statuses. 01:45
01:47 wolfman2000 left, amkrankruleuen joined
[Coke] Files=409, Tests=11767 01:49
colomon [Coke]: same her 01:52
*here 01:53
01:53 sili left
[Coke] colomon! how about getting those trig tests passing in nom? ;) 01:57
*tap tap* 02:10
colomon *hollow echo*
02:11 bluescreen10 left
[Coke] curses! 02:12
02:15 PacoLinux left 02:17 PacoLinux joined 02:20 jaldhar left
sorear how about getting trig tests in niecza? :p 02:20
02:24 stepnem left 02:26 stepnem joined 02:28 jevin left, jaldhar joined 02:31 PacoLinux left, am0c left 02:42 kfo joined 02:44 rdesfo joined 02:46 kfo_ left 02:56 rdesfo left, jevin joined 03:22 fbass left 03:27 Su-Shee left 03:28 Su-Shee joined 03:32 shinobicl_ joined 03:40 Chillance left 03:43 fbass joined 03:46 stepnem left 03:50 stepnem joined 04:10 thou joined 04:11 birdwindupbird joined 04:13 agentzh joined 04:15 fbass left 04:16 daniel-s joined 04:31 satyavvd joined
shinobicl_ hi... i know that you can get the combinations of 2 arrays using the X operator... but.. how do i combine 3 arrays? 04:39
moritz with the X operator
shinobicl_ rakudo: my @arr = <1 2>; my @arr2 =<a b c d>; my @arr3 = < + * - >; say @arr X (@arr2 X @arr3);
p6eval rakudo 922500: OUTPUT«1a1+1a1*1a1-1b1+1b1*1b1-1c1+1c1*1c1-1d1+1d1*1d1-2a2+2a2*2a2-2b2+2b2*2b2-2c2+2c2*2c2-2d2+2d2*2d2-␤»
shinobicl_ i want that each combination has exactly one element for each of the 3 arrays... 04:40
the output should start like 1a+1b+1c+..... and so on
moritz nom: say <1 2> X~ <+ * -> X~ <a b c d> X~ 04:41
p6eval nom: OUTPUT«Confused at line 1, near "say <1 2> "␤current instr.: 'nqp;HLL;Grammar;panic' pc 23611 (src/stage2/gen/NQPHLL.pir:6348) (src/stage2/gen/NQPHLL.pm:329)␤»
moritz nom: say <1 2> X~ <+ * -> X~ <a b c d>
p6eval nom: OUTPUT«1+a 1+b 1+c 1+d 1*a 1*b 1*c 1*d 1-a 1-b 1-c 1-d 2+a 2+b 2+c 2+d 2*a 2*b 2*c 2*d 2-a 2-b 2-c 2-d␤»
shinobicl_ rakudo: my @arr = <1 2>; my @arr2 =<a b c d>; my @arr3 = < + * - >; say [X](@arr,@arr2,@arr3);
p6eval rakudo 922500: OUTPUT«1 - * - + - * - d - * - + - * - c - * - + - * - d - * - + - * - b - * - + - * - d - * - + - * - c - * - + - * - d - * - + - * - a - * - + - * - d - * - + - * - c - * - + - * - d - * - + - * - b - * - + - * - d - * - + - * - c - * - + - * - d - * - + - * - 2 - * - +…
moritz the 3-array form is not implemented in rakudo master, but works in nom
shinobicl_ rakudo: my @arr = <1 2>; my @arr2 =<a b c d>; my @arr3 = < + * - >; say [X~](@arr,@arr2,@arr3); 04:42
p6eval rakudo 922500: OUTPUT«12abcd+*-␤»
shinobicl_ rakudo: my @arr = <1 2>; my @arr2 =<a b c d>; my @arr3 = < + * - >; say [X~](@arr,@arr2,@arr3,); 04:43
p6eval rakudo 922500: OUTPUT«12abcd+*-␤»
dalek kudo/nom: 5e2c0fb | moritz++ | src/core/ (4 files):
Merge pull request #35 from kboga/multi-Numeric

make .Numeric methods multis with defined invocant
04:44
04:46 odoacre joined
shinobicl_ rakudo: my @arr = <1 2>; my @arr2 =<a b c d>; my @arr3 = < + * - >; say (@arr X~@arr2) X~@arr3; 04:47
p6eval rakudo 922500: OUTPUT«1a+1a*1a-1b+1b*1b-1c+1c*1c-1d+1d*1d-2a+2a*2a-2b+2b*2b-2c+2c*2c-2d+2d*2d-␤»
shinobicl_ :D 04:48
rakudo: my @arr = <1 2>; my @arr2 =<a b c d>; my @arr3 = < + * - >; my @arr4 = "Ñ ñ" say ((@arr X~@arr2) X~@arr3) X~ @arr4; 04:49
p6eval rakudo 922500: OUTPUT«===SORRY!===␤Confused at line 22, near "my @arr4 ="␤»
dalek kudo/nom: 2bbc998 | moritz++ | src/core/List.pm:
Merge pull request #38 from ruz/nom-list-rotate

List.rotate
shinobicl_ rakudo: my @arr = <1 2>; my @arr2 =<a b c d>; my @arr3 = < + * - >; my @arr4 = <Ñ ñ>; say ((@arr X~@arr2) X~@arr3) X~ @arr4; 04:51
p6eval rakudo 922500: OUTPUT«1a+Ñ1a+ñ1a*Ñ1a*ñ1a-Ñ1a-ñ1b+Ñ1b+ñ1b*Ñ1b*ñ1b-Ñ1b-ñ1c+Ñ1c+ñ1c*Ñ1c*ñ1c-Ñ1c-ñ1d+Ñ1d+ñ1d*Ñ1d*ñ1d-Ñ1d-ñ2a+Ñ2a+ñ2a*Ñ2a*ñ2a-Ñ2a-ñ2b+Ñ2b+ñ2b*Ñ2b*ñ2b-Ñ2b-ñ2c+Ñ2c+ñ2c*Ñ2c*ñ2c-Ñ2c-ñ2d+Ñ2d+ñ2d*Ñ2d*ñ2d-Ñ2d-ñ␤»
04:56 thou left, thou joined 05:00 colomon left 05:05 SHODAN joined
dalek ast: 86b9677 | moritz++ | S10-packages/use-with-class.t:
fix scoping bug in use-with-class.t, fudge for rakudo
05:07
ast: 6b7d57d | moritz++ | S12-introspection/can.t:
correct and unfudge can.t
05:10
shinobicl_ rakudo: my @arr = <1 4>; my @arr2 =split ' ', @arr.fmt("%02d"); for (@arr2) { say $_ ~ '.' } 05:12
p6eval rakudo 922500: OUTPUT«01.␤04.␤»
dalek ast: 138a8a5 | moritz++ | S32-array/rotate.t:
fudge rotate.t for rakudo
05:13
kudo/nom: 69b7e56 | moritz++ | t/spectest.data:
three more passing test files
05:14
05:16 satyavvd left 05:34 soh_cah_toa left 05:37 envi joined
shinobicl_ rakudo: my @weekdays = <;WDAY=> X~ <Mon Fri>; my @months = <;MNTH=> X~ <JAN FEB AUG>; my @time = <;TIME=> X~ <12:30 18:00>; my @weeks = <;WNUM=> X~ <1 3>; my @instants = (((@months X~ @weeks) X~ @weekdays) X~ @time); say @instants.perl 05:38
p6eval rakudo 922500: OUTPUT«[";MNTH=JAN;WNUM=1;WDAY=Mon;TIME=12:30", ";MNTH=JAN;WNUM=1;WDAY=Mon;TIME=18:00", ";MNTH=JAN;WNUM=1;WDAY=Fri;TIME=12:30", ";MNTH=JAN;WNUM=1;WDAY=Fri;TIME=18:00", ";MNTH=JAN;WNUM=3;WDAY=Mon;TIME=12:30", ";MNTH=JAN;WNUM=3;WDAY=Mon;TIME=18:00", ";MNTH=JAN;WNUM=3;WDAY=F…
shinobicl_ rakudo: my @weekdays = <;WDAY=> X~ <Mon Fri>; my @months = <;MNTH=> X~ <JAN FEB AUG>; my @time = <;TIME=> X~ <12:30 18:00>; my @weeks = <;WNUM=> X~ <1 3>; my @empty = <NONE=> X~ (); my @instants = (((@months X~ @weeks) X~ @weekdays) X~ @time) X~ @empty; say @instants.perl 05:42
p6eval rakudo 922500: OUTPUT«[]␤»
shinobicl_ :(
05:44 mj41 joined 05:45 jaldhar left
dalek ast: 12a16dc | moritz++ | S06-multi/type-based.t:
fudge type-based.t for rakudo
05:49
05:51 jaldhar joined
moritz nom: say 'a b c d'.subst(/\w/, 'x', :x(1)) 05:51
p6eval nom: OUTPUT«x b c d␤»
05:52 thou left
moritz nom: say 'a b c d'.subst(/\w/, 'x', :x(0..1)) 05:52
p6eval nom: OUTPUT«a b c d␤»
moritz nom: $_ = 'abc'; s/a/b/; .say 05:57
p6eval nom: OUTPUT«Method 'clone' not found for invocant of class 'Sub'␤current instr.: '_block1002' pc 94 ((file unknown):57384547) (/tmp/9OOza5T8Yk:1)␤»
dalek kudo/nom: e658f0d | moritz++ | / (2 files):
run type-based.t, fix an unrelated thinko
06:02
06:06 Mowah joined
dalek ast: c8d241c | moritz++ | S05-substitution/subst.t:
fudge subst.t for rakudo
06:11
kudo/nom: f373c17 | moritz++ | t/spectest.data:
two more test files
06:15
06:20 koban joined 06:21 wtw joined 06:22 im2ee joined 06:25 jaldhar left, jaldhar joined 06:37 shinobicl_ left
moritz rakudo: say ~[\<] 1, 2, 3 06:40
p6eval rakudo 922500: OUTPUT«Bool::True Bool::True Bool::True␤»
moritz rakudo: say ~[\<] 1, 2, 0, 5, 6, 7 06:41
p6eval rakudo 922500: OUTPUT«Bool::True Bool::True Bool::False Bool::False Bool::False Bool::False␤»
06:42 mj41 left 07:06 lue joined 07:27 PacoLinux joined 07:29 jaldhar left
dalek kudo/nom: 190f28d | moritz++ | src/core/metaops.pm:
implement chaining reduce metaop
07:32
07:33 fbass joined, fbass left
dalek ast: bb4a8e7 | moritz++ | S05-mass/stdrules.t:
fudge stdrules.t for rakudo
07:35
ast: 9c74a37 | moritz++ | S03-metaops/reduce.t:
fudge reduce.t for rakudo
07:36 fbass joined 07:37 fbass left
dalek kudo/nom: c0ac660 | moritz++ | t/spectest.data:
run reduce.t
07:37
mberends read stdrules as strudles, hmm :) 07:40
07:47 mj41 joined, PacoLinux left 07:50 Trashlord left 07:52 Trashlord joined
jnthn monring, #perl6 07:58
08:08 [particle] left
tadzik morning #perl6 08:09
moritz good morning everybody 08:16
yes, strudels are a good idea, in general :-)
jnthn mmm 08:18
moritz: did type-based.t need extra fudges?
moritz jnthn: yes 08:19
jnthn oh, I see the patch
moritz jnthn: some for narrowness of slurpies, some for constraints
jnthn ok 08:21
ugh, slurpy narrowness? Thought I fixed that recently.
moritz nom: multi f() { 1 }; multi f(*$x, *@a) { 2 }; say f() 08:23
p6eval nom: OUTPUT«1␤»
moritz nom: proto mmd(*@) {}; multi mmd () { 1 }; multi mmd (*$x, *@xs) { 2 }; say mmd(); say mmd(1, 2, 3); say mmd(1..3) 08:25
p6eval nom: OUTPUT«Nil␤Nil␤Nil␤»
moritz wtf?
oh
nom: proto mmd(*@) {*}; multi mmd () { 1 }; multi mmd (*$x, *@xs) { 2 }; say mmd(); say mmd(1, 2, 3); say mmd(1..3)
p6eval nom: OUTPUT«1␤2␤2␤»
moritz it helps to have the proto redispatch :-)
dalek ast: 91f1c57 | moritz++ | S06-multi/type-based.t:
it helps to have the proto re-dispatch to its candidates
08:27
moritz jnthn: never mind the slurpy narrowness :-)
jnthn moritz: yeah 08:31
S06-multi/proto.t does need nom fixes (plan to do them soon), but it also has similar out-of-dateness.
Comment I don't want to see in production code: 08:34
//ToDo add security
o.O
tadzik erm
jnthn gonna be a long day at $dayjob :)
08:38 dakkar joined 08:44 Alias joined 08:55 wamba joined 09:07 rgrau joined 09:09 donri joined 09:13 fbass joined, fbass left 09:18 awoodland joined 09:21 am0c joined 09:26 im2ee left 09:37 cosimo joined
moritz nom: say :2('101') 09:40
p6eval nom: OUTPUT«NYI form of number litereal encountered␤current instr.: 'nqp;Perl6;Actions;rad_number' pc 85504 (src/gen/perl6-actions.pir:30844) (src/Perl6/Actions.pm:2995)␤»
moritz nom: Perl6::Actions::radcalc(10, '123') 09:41
p6eval nom: OUTPUT«Could not find symbol 'Perl6::Actions::&radcalc'␤current instr.: 'die' pc 700249 (src/gen/CORE.setting.pir:164645) (src/gen/CORE.setting:370)␤»
moritz nom: use Perl6::Actions; Perl6::Actions::radcalc(10, '123') 09:42
p6eval nom: OUTPUT«Could not find Perl6::Actions in any of: lib, lib, /home/p6eval/.perl6/lib, /home/p6eval/nom/install/lib/parrot/3.6.0-devel/languages/perl6/lib, .␤current instr.: 'nqp;Perl6;ModuleLoader;load_module' pc 3651 (src/gen/perl6-moduleloader.pir:1416) (src/Perl6/ModuleLoader.pm:91…
09:43 im2ee joined
jnthn nom: BEGIN { @*INC.push('blib') }; use Perl6::Actions; 09:44
p6eval nom: OUTPUT«get_attr_str() not implemented in class 'Undef'␤current instr.: 'nqp;Perl6;SymbolTable;load_module' pc 4832 (src/gen/perl6-symboltable.pir:1532) (src/Perl6/SymbolTable.pm:180)␤»
jnthn ah, yes.
Didn't fix the using NQP modules thing up yet.
09:46 Mowah_ joined 09:54 mj41 left
jnthn Today's discovery: I find graphical merge tools too confusing. :) 09:56
dalek ast: fcecec7 | moritz++ | S02- (2 files):
rakudo (un)fudges
10:00
10:06 timbunce joined
moritz nom: say :16<a> 10:13
p6eval nom: OUTPUT«Invalid character 'a' in number literal␤current instr.: 'nqp;Perl6;Actions;_block1888' pc 32972 (src/gen/perl6-actions.pir:11076) (src/Perl6/Actions.pm:3842)␤»
moritz wtf
sorear nom: say :16<A> 10:15
p6eval nom: OUTPUT«10␤»
10:15 [particle] joined
moritz nqp: say(try { 1 }) 10:15
p6eval nqp: OUTPUT«1␤»
tadzik nom: multi foo($a where { $a > 0 }) { 1 }; foo(5) # nyi?
p6eval nom: OUTPUT«Nominal type check failed for parameter '$a'; expected Any but got Mu instead␤current instr.: 'infix:<>>' pc 713206 (src/gen/CORE.setting.pir:172036) (src/gen/CORE.setting:1674)␤»
moritz sorear++ 10:16
10:17 cosimo left
dalek ast: 7353f94 | moritz++ | S02-literals/radix.t:
make test plan in radix.t dynamic, since I do not know if fudge miscounted or not
10:26
tadzik moritz: any comments on my gsoc checklist? 10:27
moritz tadzik: where can I find it?
sorry, didn't backlog yet
tadzik moritz: github.com/tadzik/gsocmess/issues 10:29
dalek kudo/nom: c61a8d5 | moritz++ | / (2 files):
fix radcalc, generate errors with line numbers, run tests
10:33 REPLeffect left, REPLeffect joined
mberends tadzik: in issue #4 in the above checklist, is Polish a verb or a nationality? ;) 10:37
jnthn tadzik: (constraint issue) yeah, that's why they're still on the punch card :) 10:43
mberends: Well, now we have sockets, we could go off to Google Translate and have it turn the text output into Polish ;)
10:44 colomon joined
mberends jnthn, tadzik: Pod::To::Text::Polish.pm ;) 10:45
10:46 Chillance joined
jnthn Then we have one that calls .flip on the result, Pod::To::Text::ReversePolish :) 10:46
tadzik mberends: it's a verb :) 10:49
mberends jnthn: touché
10:51 SHODAN left
jnthn :P 10:58
11:04 pernatiy left
moritz tadzik: (sorry, was off for lunch) list looks good, I can't attest its completeness though without a thorough cross-check with the proposal 11:17
tadzik: have you tried parsing S26 with rakudo?
tadzik moritz: no, not yet 11:20
I'll rather have everything officialy in the proposal ready, then play with the optional things
hence the list
moritz ok
$ ./perl6 ../specs/S26-documentation.pod
Error while reading from file: Malformed UTF-8 string
now that was quick
tadzik hah 11:22
oh, it will parsefail in pod too, we don't support config options yet 11:23
as in =begin code :allow<B> 11:24
11:25 rgrau left 11:26 Woodi joined
moritz oh, S26 is written in latin1 11:28
any objections to converting it to UTF-8?
tadzik nope
moritz it parsefails in line 3 already 11:29
=begin without matching =end at line 3, near "=comment\nT"
tadzik interesting 11:30
dalek ecs: fb1ceb2 | moritz++ | S26-documentation.pod:
convert S26 from Latin-1 to UTF-8

No semantic changes or anything, just a dumb recode
tadzik will investigate in a second 11:31
dalek kudo/nom: 083287a | tadzik++ | / (2 files):
Small tunes in Pod::To::Text, sanitize newline handling, interpret package declarators correctly
11:33
tadzik moritz: I suppose it's because of the fact, that because of the lack of block options <pod_content> fails, and so we get a panic somewhere 11:34
moritz: what I'm now trying is copying S26 to S26-mini, block after block, and seeing when it'll fail 11:35
and fixing Pod::To::Text accordingly
I miss Str.indent :/ 11:36
no, no easy to bring back 11:37
11:37 MayDaniel joined
moritz so, recruite a minion to bring it back :-) 11:38
didn't flussence++ write the code originally? (hint, hint :-) 11:39
flussence it's plain perl6, go ahead and copy+pase it to nom if you want :)
s/se/ste/ 11:40
tadzik moritz: it depends on this ($a where {...}) signatures
that's why I didn't bring it back today
flussence oh, right. Forgot I did all that fancy stuff in it :(
moritz tadzik: ok
jnthn Note those probably work with placeholders just fine 11:41
11:46 pernatiy joined
tadzik heh, I can parse 2% of S26 :) 11:59
takadonet morning all
tadzik copypasting the remaining 98%...
takadonet: morning
moritz: yes, parsing fails on =begin code :allow<B> 12:00
is there anything like "anything that constructs a pair" in Grammar?
moritz look in the vincinity of token colonpair 12:01
12:02 woosley left
jnthn quotepair is a little more restricted version of that and may be more suitable 12:02
tadzik how about :nested? 12:04
takadonet Can anyone help me figure out why my @!grid attribute cannot be changed? gist.github.com/1133863
moritz takadonet: which rakudo are you running? master? 12:05
or nom? 12:06
12:06 rdesfo joined
takadonet NIecza 12:06
moritz oh
takadonet but having the same issue if using master
it does not run under nom yet
moritz so what's the problem?
takadonet @!grid attribute does not keep it value after returning from placeNumber method 12:07
12:07 ab5tract joined
takadonet it return back to the original value set by build method 12:07
since both master and Niecza give the same issue, I assume its my mistake 12:08
tadzik moritz: gist.github.com/1133875 part of S26 without the colopairs
moritz takadonet: in master I think the type constraint on @!grid will prevent it from working anyway 12:09
takadonet: but more interesting, have you debugged it to the point where you're sure that it ever assigns something to @!grid[$something] ? 12:10
takadonet moritz: I removed the type constraint and still does not work. Yes , since placeNumber is a recursive call and the final case where $pos ==81 , I print out @!grid and the answesr are there. However, once the call returns, the values are gone 12:12
12:13 properly joined
moritz takadonet: problem is line 33 12:17
takadonet: there you undo any modification to @!grid that you've done before 12:18
takadonet ohhh!
wow.... 12:19
now I feel like an idiot ... 12:20
moritz takadonet: I hope you know that you can't solve sudokus with that algorithm, generally speaking 12:21
takadonet I see, the original Java code that I copied, had that line but instead of returning thru all the call stack, the final base case just throws an exception
moritz: I know
just was copying the rosetta stone Java solution
moritz ah, so it uses that for backtracking
takadonet ya 12:22
so I really do need to throw an exception for this to work
this is really a horrible solution 12:23
moritz it is
12:23 woosley joined
pmichaud good morning, #perl6 12:23
takadonet was mostly just for practice
moritz good am, pm
takadonet pmichaud: morning
I might still post the solution on rosetta stone so we have something for now. Probably make a new solution sometime this week 12:24
moritz takadonet: fwiw when I started my sudoku solve in p6 I loved the way you can compress two nested loops into one 12:26
jnthn monring, pmichaud
moritz takadonet: github.com/moritz/perl6-Sudoku/blo...oku.pm#L30
takadonet moritz: cool :) 12:28
mberends good morning pmichaud, takadonet
takadonet mberends: morning 12:29
moritz takadonet: note that my sudoku module has some bugs and limitations I never bothered to debug
takadonet moritz: I'll be probably borrowing some of your code. 12:30
moritz takadonet: feel free :-) 12:31
I mean, it has a license, but if that's not permissive enough for RC, I can change that to something more permissive 12:32
tadzik with the commit below, we parse the first 30% of S26 :) 12:37
dalek kudo/nom: 62bd6a7 | tadzik++ | src/Perl6/Grammar.pm:
Allow colonpairs to appear after Pod block declarations
kudo/nom: 77c62ce | tadzik++ | lib/Pod/To/Text.pm:
[Pod::To::Text] Generate proper output for Tables and Comments, fix output for Named blocks
moritz \o/ 12:38
tadzik: what's missing?
tadzik moritz: I found a bug
moritz: gist.github.com/1133928 causes the parsefail
moritz nom: class Sudoku::Constraint { }; class Sudoku { }
p6eval nom: OUTPUT«error:imcc:Multiple declarations of lexical 'Sudoku'␤␤ in file '(file unknown)' line 54751767␤»
tadzik so maybe the code block should have non-greedy match inside, eh?
but would that help if we have <.panic> just after the content? 12:39
jnthn moritz: Ran out of awakeness when refactoring symbol table last night... ;-)
moritz: I fix the above later. :)
moritz jnthn: ok
tadzik yes, it's already non-greedy
but I think I know how to fix this 12:40
moritz tadzik: don't you need to check the indention level before you decide if something is a terminator or not?
tadzik moritz: I probably do, never thought about that before
I'll recheck the spec 12:41
12:42 properly left
tadzik CC 12:42
oops
12:43 SHODAN joined 12:44 im2ee left, MayDaniel left 12:46 drbean left
tadzik moritz: yeah, S26 mentions only the content of a block to be "indented as you wish" 12:49
so the closing delimiter is probably supposed to not be indented
moritz aye
oh, today is Tuesday, #phasers day! 12:50
jnthn :)
Well remembered!
moritz that's... not bad for my standards :-) 12:51
tadzik :)
is it preferred to pre-report so the actual #phasers time can be dedicated to discussion only? 12:54
jnthn tadzik: Don't feel strongly either way. 12:56
tadzik jnthn: I'm just curious if it's preffered to pre-report even if you'll be on time 12:57
jnthn moritz: BTW, after last night's fixes, X::Foo style decls in the setting should work. See IO::Socket for example
colomon yow, getting one of the least helpful error messages ever from nom 13:00
moritz nom: say X::Base
p6eval nom: OUTPUT«Rebuild in progress␤»
colomon well, messiest, anyway
moritz that one? :-)
which reminded me, I wanted to improve the build thingy on p6eval server 13:01
colomon gist.github.com/1133976 multiplied by about a thousand. (takes up more than 50% of the scrollback on my terminal window) 13:02
with a maximum recursion depth exceeded message at the top.
moritz colomon: are you trying to hack something in the setting?
colomon trying to add Complex.asin
moritz we've discussed that yesterday, something very weird is going on there, probably not your fault 13:03
colomon sure, never thought my numeric code could legitimately cause an infinite stream of Stringy calls. ;) 13:04
jnthn colomon: There's a compile-time stringification bug somewhere. 13:05
colomon: Hard to track down. :( Spent a couple of hours on it yesterday.
colomon it just doesn't help figure out what my innocent-looking math code is doing wrong. :)
jnthn It's probably not. 13:06
It's probably something to do with using complex literals in the setting or something.
moritz right, you can't use 1i or so in the setting
colomon oh. yeah, there is a complex literal in there. hmmm
moritz needs to be Complex.new(0, 1) 13:07
jnthn Yeah. That any many things are hitting the same issue.
It's happening somewhere in the intersection of dynamic compilation, method dispatch and multi dispatcher derevation. Not an easy intersection of things to debug.
colomon looks like it is indeed the -1i 13:08
jnthn Note that using complex literals inside complex may be a little fun... :) 13:10
Manageable fun though. 13:11
But for now use Complex.new
moritz well, 1i tries to construct the object right away
jnthn Right 13:12
But Str is a multi-method and those aren't composed until saga end.
dalek albot: 5bdd571 | moritz++ | build-scripts/ (3 files):
prepare to install nom
13:13
13:21 jaldhar joined 13:23 bluescreen10 joined 13:27 jman_ joined 13:28 shinobicl left 13:29 shinobicl joined 13:35 shinobicl left
[Coke] was "litereal" intentionally punny, btw? I find it distracting. 13:39
moritz where?
13:40 jman_ left
[Coke] you just ran a test from spectest.data that used to throw that error. 13:40
PerlJam heh. "litereal" 13:42
13:42 wamba left
moritz [Coke]: no, just a typo 13:43
[Coke] it is a good typo. ;)
[Coke] reruns the test suite to see if moritz++'s litereal update unbreaks any other tests. 13:44
moritz but the error message is bogus anyway 13:45
because it's not a literal
13:45 rdesfo left 13:46 rdesfo joined 13:47 Mowah_ left
dalek kudo/nom: 67f3c06 | moritz++ | src/Perl6/Actions.pm:
improve a NYI error message
13:48
tadzik this makes us parse the first 85% of S26 :) 13:51
[Coke] tadzik++ 13:52
dalek kudo/nom: 769ae7d | tadzik++ | / (2 files):
Disallow closing delimiters indented more than opening delimiters
13:55
moritz tadzik: that's good news 13:57
13:58 _twitch joined
jnthn tadzik: Wow, good going. 14:13
14:16 cosimo joined
jnthn beats .Net's reflection stuff into submission to achieve Great Evil. 14:18
The .Net Type type is an example of how *not* to factor meta-space. :/
14:20 ab5tract left 14:22 _twitch left, wtw left 14:24 noganex left 14:25 Moukeddar joined
Moukeddar hi o/ 14:26
tadzik hello Moukeddar 14:28
Moukeddar how are you doing Sir? 14:29
tadzik pretty nice :) 14:30
how is your Perling? 14:31
sorear good * #perl6
moritz o/ sorear
Moukeddar the syntax feels a bit weird 14:32
tadzik any particular syntax?
o/ sorear
14:33 hanekomu joined
Moukeddar just the whole thing :) 14:33
14:33 M_o_C joined
Moukeddar coming from C# 14:33
[Coke] moritz++ # reclaimed a few more spectests. 14:34
dalek kudo/nom: 04a9e65 | Coke++ | t/spectest.data:
run more tests, track failure modes
14:35
14:37 noganex joined 14:42 Trashlord left, daniel-s left 14:47 mentesan joined
mentesan hi all 14:47
moritz hello 14:48
nom: say <a b c>.Int 14:50
p6eval nom: OUTPUT«Rebuild in progress␤»
moritz uhm
dalek albot: c842a4a | moritz++ | evalbot.pl:
actually use the installed nom
14:52
14:52 birdwindupbird left 14:53 p6eval left, p6eval joined, ChanServ sets mode: +v p6eval
moritz nom: say <a b c>.Int 14:53
14:53 koban left
moritz hello? 14:53
p6eval nom: OUTPUT«Rebuild in progress␤»
moritz perl6: say <a b c>.Int 14:54
p6eval rakudo 922500, niecza v8-45-g366d65b: OUTPUT«3␤»
..pugs: OUTPUT«*** No such method in class Array: "&Int"␤ at /tmp/lPG6nYJggs line 1, column 5 - line 2, column 1␤»
14:55 mentesan left
moritz nom: say 1 14:56
p6eval nom: OUTPUT«1␤»
14:59 PacoLinux joined
takadonet nom: say 2 15:01
p6eval nom: OUTPUT«2␤»
TimToady ooh, progress!
takadonet we're good :)
15:02 kaare_ joined 15:04 MayDaniel joined
moritz nom: say 4 15:04
p6eval nom: OUTPUT«4␤»
moritz look, it's exponential!
takadonet ! 15:07
jnthn decommute & 15:08
15:08 Trashlord joined, am0c left, Moukeddar left 15:09 im2ee joined 15:10 cosimo left 15:18 thou joined 15:27 im2ee left
dalek kudo/nom: e8e3340 | tadzik++ | src/Perl6/Grammar.pm:
Fix handling colonpairs in Pod directives. Makes us fully parse S26
15:31
moritz \o/ 15:32
takadonet WHAT! 15:33
tadzik++
tadzik :)
that was easy :)
mberends Awesome!
tadzik well, it parser in a sense that it has no parse errors. The resulting output is still far from perfect
flussence new objective: figure out another way to make S26 break tadzik's code while staying within spec :) 15:34
tadzik hey! 15:35
:)
colomon ugh. getting trig tests to work in nom is non-trivial. :( 15:38
tadzik phasers in 3:20? 15:41
colomon errr... sounds right? 15:42
15:43 woosley left
tadzik okay 15:43
I never know with this DST :) 15:44
15:44 agentzh left
colomon tadzik: same here, actually, which is why I say "sounds right" instead of yes. ;) 15:46
tadzik :)
nom: say <a b c>[1..*-1] 15:48
p6eval nom: OUTPUT«b c␤»
15:51 shinobicl joined, noganex_ joined 15:52 noganex left
shinobicl rakudo: my %a_hash; %a_hash{'KEY-A'} = 'A'; %a_hash{'KEY-B'} = 'B'; say defined %a_hash{'KEY-A'} && defined %a_hash{'KEY-C'}; say defined (%a_hash{'KEY-A'} & %a_hash{'KEY-B'}); 15:55
p6eval rakudo 922500: OUTPUT«Bool::False␤Bool::True␤»
shinobicl rakudo: my %a_hash; %a_hash{'KEY-A'} = 'A'; %a_hash{'KEY-B'} = 'B'; say defined %a_hash{'KEY-A'} && defined %a_hash{'KEY-B'}; say defined (%a_hash{'KEY-A'} & %a_hash{'KEY-C'});
p6eval rakudo 922500: OUTPUT«Bool::True␤Bool::True␤»
shinobicl nom: my %a_hash; %a_hash{'KEY-A'} = 'A'; %a_hash{'KEY-B'} = 'B'; say defined %a_hash{'KEY-A'} && defined %a_hash{'KEY-B'}; say defined (%a_hash{'KEY-A'} & %a_hash{'KEY-C'}); 15:56
p6eval nom: OUTPUT«Rebuild in progress␤»
tadzik bbl 15:59
dalek kudo/nom: 90e9c38 | tadzik++ | lib/Pod/To/Text.pm:
Couple of more fixes to make the output generated from S26 more pleasant to read
16:00
pmichaud nom: say <a b c>[1..*] # checking 16:01
p6eval nom: OUTPUT«Rebuild in progress␤»
16:03 im2ee joined
colomon woah, just had a zillion test fails on nom 16:06
jnthn home
colomon ugh, out of date t/spec
16:08 Alias left 16:11 kanishka joined 16:19 wamba joined 16:26 im2ee left 16:28 pernatiy left
moritz nom: say '1' 16:33
p6eval nom: OUTPUT«1␤» 16:34
shinobicl nom: my %a_hash; %a_hash{'KEY-A'} = 'A'; %a_hash{'KEY-B'} = 'B'; say defined %a_hash{'KEY-A'} && defined %a_hash{'KEY-B'}; say defined (%a_hash{'KEY-A'} & %a_hash{'KEY-C'}); 16:37
p6eval nom: OUTPUT«Bool::True␤Bool::True␤»
dalek ecza: 3603f44 | diakopter++ | / (8 files):
implement IO r,w,x,o methods
16:38
16:38 isBEKaml joined
diakopter phenny: tell sorear I pushed IO.r .w .x .o 16:38
phenny diakopter: I'll pass that on when sorear is around.
sorear I saw \o/ 16:39
phenny sorear: 16:38Z <diakopter> tell sorear I pushed IO.r .w .x .o
diakopter unfortunately it doesn't appear RWXO are possible
sorear diakopter: why not?
diakopter bindings for that syscall don't exist 16:40
actually O is possible
sorear diakopter: no bindings for access? 16:41
diakopter not that I can find
I suppose access can be reimplmented since theoretically I can query /etc/group 16:42
and I know the effective user id
sorear you don't want the effective user id, do you? 16:43
diakopter er yes, sorry, meant real user id
sorear my copy of Mono.Unix.Native.Syscall has an access() method
moritz evalbot rebuild nom 16:44
p6eval OK (started asynchronously)
moritz evalbot rebuild nom
p6eval OK (started asynchronously)
sorear is it very new?
moritz evalbot rebuild nom
p6eval OK (started asynchronously)
diakopter sorear: seems it's actually eaccess
sorear moritz: note, you've just tripled the length of time people will have to wait... each rebuilder is blocking on the same mutex
moritz sorear: wouldn't it make sense not to allow a rebuild if the lock file can't be obtained? 16:45
isBEKaml sorear: that is, it's not async? :)
sorear isBEKaml: it's async relative to IRC
isBEKaml sorear: nice. :-)
moritz nom: say 1
p6eval nom: OUTPUT«1␤»
sorear diakopter: -r -w -x -o should use eaccess
diakopter I know 16:46
sorear diakopter: -R -W -X -O should use access
diakopter there's no "eaccess" bindings in Mono.Unix.Native.Syscall
so I concluded that "access" there is actually eaccess
sorear diakopter: How did you implement -rwxo?
ah 16:47
diakopter do you think that's a reasonable assumption?
sorear diakopter: access in Syscall is access in LIBC, according to the pinvoke []
diakopter oh
sorear man eaccess says "This function is nonstandard"
diakopter then there's no eaccess possible
sorear letme check what Perl does 16:48
lots of #ifdefs here 16:52
5 possible implementations
diakopter :)
sorear on Digital UNIX, uses an extended flag to access EFF_ONLY_OK 16:53
if eaccess available, eaccess
if accessx available /* AIX */, use that
if setresuid and setresgid available, temporarily set real ids to effective and use access
otherwise stat() and check S_IWUSR etc 16:54
diakopter setresuid and setresgid aren't available from Mono.Unix.UnixEnvironment ; you can set effective ones though 16:55
sorear Syscall has setresuid and setresgid 16:56
diakopter that doesn't seem to be a very threadsafe technique
16:57 awoodland left
diakopter I guess I'll stat() and check S_IWUSR etc 16:59
niecza: say IO.x
p6eval niecza v8-45-g366d65b: OUTPUT«Unhandled exception: Unable to resolve method x in class IO␤ at /tmp/xZWSCRvjoa line 1 (MAIN mainline @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1983 (CORE C930_ANON @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1984 (CORE module-CORE @ 57… 17:00
dalek kudo/nom: c33f355 | (Solomon Foster)++ | src/core/R (2 files):
Add Real.Rat with optional tolerance and optional tolerance to Rat.Rat.
17:03
17:04 Trashlord left
moritz colomon: why does Rat.Rat need an optional tolerance? 17:04
colomon so that you can call Real.Rat with an actual tolerance and have it do the right thing
17:05 Trashlord joined
isBEKaml nom: my $x = 7 % 2; say $x; 17:05
p6eval nom: OUTPUT«1␤»
jnthn colomon: If you don't use the value you can just do Real $? 17:08
colomon: And the binder will ignore the arg and not have the binding cost 17:09
colomon ah, good to know.
17:09 MayDaniel left
jnthn nom: sub foo($?) { }; foo(); foo(1); 17:09
p6eval nom: OUTPUT«In signature parameter, '$?', it is illegal to use '?' twigil at line 1, near ") { }; foo"␤current instr.: 'nqp;HLL;Grammar;panic' pc 23611 (src/stage2/gen/NQPHLL.pir:6348) (src/stage2/gen/NQPHLL.pm:329)␤»
jnthn d'oh
std: sub foo($?) { }; foo(); foo(1);
p6eval std 516268a: OUTPUT«ok 00:01 121m␤»
jnthn hm 17:10
Wonder if std parses it correct or just doesn't whine :)
17:10 dakkar left
moritz std: sub foo($?bar) { } 17:11
p6eval std 516268a: OUTPUT«===SORRY!===␤You may not use the ? twigil in a signature at /tmp/LKeDm2_sw5 line 1:␤------> sub foo($⏏?bar) { }␤ expecting twigil␤Parse failed␤FAILED 00:01 119m␤»
jnthn moritz: Yeah, it gets it right...think I see why 17:12
Trying a patch. 17:13
dalek albot: c160421 | moritz++ | / (2 files):
Some targets don't need to obtain lock files, because their build scripts are smart enough

Also remove the case of $executer being a coderef, which doesn't seem to happen in evalbot.pl. YAGNI applies.
17:14 cosimo joined 17:15 p6eval left, p6eval joined, ChanServ sets mode: +v p6eval
moritz evalbot rebuild nom 17:15
p6eval OK (started asynchronously) 17:16
moritz nom: say 1
p6eval nom: OUTPUT«1␤»
moritz \o/
jnthn \o/ 17:17
moritz++
17:21 am0c joined 17:23 tokuhirom joined
dalek albot: 04077a8 | moritz++ | / (2 files):
refactor locking a bit, and only rebuild if a lock file can be obtained
17:23
17:24 p6eval left, p6eval joined, ChanServ sets mode: +v p6eval
moritz has the feeling that evalbot could use a good refactor at some point :-) 17:25
evalbot rebuild std
p6eval OK (started asynchronously)
moritz evalbot rebuild std
p6eval OK (started asynchronously)
moritz ah, that one just runs a 'make', which finished kinda fast
evalbot rebuild rakudo 17:26
p6eval OK (started asynchronously)
Util colomon: pong
moritz and that one also checks if it actually needs to build
evalbot rebuild niecza
p6eval OK (started asynchronously)
moritz evalbot rebuild niecza
p6eval NOT OK (maybe a rebuild is already in progress?)
17:26 masak joined
masak \o/ #perl6 17:26
moritz hello masak 17:27
17:27 bluescreen10 left
masak moritz: I forgot to say, but I liked your simplifications on the MAIN spec. 17:27
moritz masak: nice :-) 17:28
17:28 bluescreen10 joined
jnthn o/ masak 17:28
masak \o
colomon Util: you were saying something a week or two ago about revisiting the implementations of the Complex trig functions? 17:34
17:35 perlhack joined
Util colomon: yes; some of the work is already in a branch 17:35
but that is in Parrot, not Perl 6.
colomon Util: what's the story?
Util A GSOC student filed a bug, and I hit the same problem while trying to hammer down Win32 bugs... 17:36
17:36 mj41 joined
Util Some of the Hyperbolic trig functions may be incorrect along the branch cuts, especially arccosh which may be wrong in part of the unit circle too. 17:38
17:38 perlhack left
Util My explorations were muddied by the fact that Mathematica, Darwin's Clib, and GNU Clib disagree on the canonical values of some the the multi-valued functions. 17:40
It *may* be the case that all of those three, *and* Parrot's implementation of the functions in Complex, all give *correct* answers, and that the multi-valued functions just need to have a more understanding is() to check the answers during testing... 17:42
I don't know yet, though.
17:42 impious joined, impious left
Util Just curious? 17:43
17:47 hanekomu left, TiMBuS left 17:48 TiMBuS joined
colomon Util: well, thought as long as we were (re-) implementing the functions in nom and niecza, and you were doing research on it, we ought to pay attention to you. 17:48
17:49 pernatiy joined
colomon sorry for disappearing there for a minute, had to fetch a small child who had just let himself out of the house and administer a time out. 17:49
17:50 fbass joined 17:51 fbass left 17:52 fbass joined 17:56 molaf_ left
dalek kudo/nom: 7c9b08a | jonathan++ | src/Perl6/Grammar.pm:
Fix twigil parsing to be in line with STD.
17:57
tadzik is back
17:57 fbass left
masak tadzik! \o/ 17:57
jnthn evenin', tadzik
moritz if anybody notices any evalbot oddness in the next few days, please tell 18:00
I've touched more of its code today than I would have liked :-)
tadzik :) 18:01
masak: have you seen the fully-parsed S26 today? :)
masak tadzik: oh wow no I haven't!
dalek ecza: 30c9d82 | diakopter++ | lib/ (3 files):
actually implement -R -O -W -X -o and stub in -r -w -x
18:02
tadzik the NYI formatting codes still look stupid, but it seems fine aside from it
masak: just perl6 --doc ~/your/s/26
18:03 M_o_C left
masak tadzik: making nomz. will try later :) 18:03
tadzik ok :) 18:04
18:08 zby_home_ joined
Util colomon: I am on-site with a new client until tonight, and therefore intermittant myself; no worries. 18:12
I will let you know how my experiments work out, and also take a look at the Complex implementations in nom and Niecza, later this week.
Is there a log of any discussion on your planned re-implementation of Complex?
colomon Util: well, there are no complex trig implementations in either, yet. ;)
[Coke] wonders if having a perl6 copy called "perldoc" that just forced --doc to be set would be useful. 18:13
Util Ah, yes, now I remember looking at Rakudo master and noticing that pieces were... missing :)
18:13 pernatiy left
colomon Util: the only thing I've heard is a repeated theory that I would be the one to implement the Complex trig functions. 18:13
TimToady are you hoping to disprove this theory? :) 18:14
Util So you will be wanting my notes? Or are you already Zen Master of the domain? 18:15
colomon++ # just on spec :)
colomon TimToady: apparently not hard enough, as I started working on it this morning. ;)
diakopter TimToady alive
colomon Util: I am SO not Zen Master of the domain. I would love your notes.
Util colomon: It will be later in the week, but I will provide them. 18:17
colomon I mean, I have a okay overall understanding of the area (I think), but I looked up all the formulas on wikipedia when I did the first implementation. ;) 18:18
18:23 fbass joined 18:24 Mowah left 18:26 Trashlord left 18:28 Trashlord joined
[Coke] runs perldoc on S26. o/ 18:30
[Coke] tries not to be like his analysts; the immediate next step is to complain about all the things that can be fixed now! ;)
18:40 hanekomu joined, fbass left 18:41 pernatiy joined 18:42 am0c left
tadzik moritz: around? 18:59
moritz tadzik: yes
tadzik: remember to report at #phasers in about 1min :-)
dalek kudo/nom: d441931 | (Solomon Foster)++ | src/core/Rat.pm:
Use "Real $?" for the Rat.Rat optional parameter which is ignored. jnthn++
19:00
tadzik moritz: I'm thinking about DOC use right now, I tried something along of a rule like 'DOC' \h+ <?before 'use'> and then checking %*COMPILING<%?OPTIONS><doc> in the action method, but it makes no sense for the actual using happens in the grammar rule. So I thought, maybe something like [ %*COMPILING<%?OPTIONS><doc> && 'DOC' \h && {my $*YES_CONTINUE := 1}] at the beginning of statement_control:sym<use>, and 19:02
then checking $*YES_CONTINUE before the actual loading, or something?
moritz tadzik: or maybe it's just DOC <blast>, and check if <blast> matched a 'use' statement, and if yes executed immediately 19:04
can <blast> parse 'use Foo;' ? 19:05
tadzik yes, that's the use for it
as in 'DOC use Pod::To::Text'
not much different from DOC INIT { use } 19:06
jnthn suspects s/BEGIN/INIT/
er
the other way around :)
tadzik mebbe 19:07
tadzik is not really fond of 'DOC use', as a spec thing
it's just like "oh, there's a possibily to move 'use' out of your custom DOC INIT, if you want to" 19:08
not really useful imho
jnthn nom: use Test; say Test 19:09
p6eval nom: OUTPUT«Test()␤»
jnthn nom: DOC INIT { use Test }; say Test
p6eval nom: OUTPUT«arglist case of use not yet implemented at line 1, near "}; say Tes"␤current instr.: 'nqp;HLL;Grammar;panic' pc 23611 (src/stage2/gen/NQPHLL.pir:6348) (src/stage2/gen/NQPHLL.pm:329)␤»
moritz well, you need something wich 1) happens at compile time, only in the context of DOC and 2) isn't in a separate scope, because import is lexical
jnthn nom: DOC INIT { use Test; }; say Test
moritz I think that 'DOC use MyDocModule;' is useful for that
p6eval nom: OUTPUT«Test()␤»
jnthn Bug.
moritz not a blocker for gsoc though, IMHO 19:10
jnthn No, it's not
I don't have a good answer off hand
I'll ponder it a bit. :)
tadzik I don't get it. DOC use is only useful if the module you use is used later in DOC INIT, or DOC OTHER_PHASE, in which case you could as well stick the use inside of the phaser and save typing 19:11
moritz tadzik: unless that module wants to modify the grammar, or something 19:13
tadzik hmm, mebbe
ok
moritz: I don't get the "check if <blast> matched a 'use' statement, and if yes executed immediately" part :) 19:15
as in: put <statement_control> in there, and if it's not /^use/ issue a parsefail? 19:16
moritz no
just a sec
tadzik ok, no hurries
jnthn Note that as soon as "use" is parsed, it takes action.
tadzik I know' 19:17
jnthn By the time you know you've parsed a use in the node above, you've already used.
tadzik that's the problem
moritz ah
then forget what I said
tadzik so I thought about modifying use itself
so put a [ 'DOC' \h* $*HAS_DOC := 1] and then check $*HAS_DOC just before loading, and do not load if it's not set 19:18
well, no. Do not load, if it's set, and there's no --doc
moritz yes, something like that
tadzik so modifying use. Ok
19:27 soh_cah_toa joined
tadzik done, spectesting and pushign 19:27
moritz ++tadzik 19:28
tadzik oh wait, it's wrong :) 19:29
it's late for boolean logic 19:30
pmichaud $*HAS_DOC should probably be $*IN_DOC
since it's not "has" anything.
jnthn aye
tadzik I actually used $*DOC_USE 19:31
then unless $*DOC_USE && !%*COMPILING<%?OPTIONS><doc>
masak niecza: sub foo($x) { PRE { $x %% 2 }; return $x - 1; POST { $x !%% 2 } }; say foo(10)
p6eval niecza v8-45-g366d65b: OUTPUT«Unhandled exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.␤ at System.Collections.Generic.Dictionary`2[System.String,System.Reflection.FieldInfo].get_Item (System.String key) [0x00000] in <filenam…
masak hm.
er.
niecza: sub foo($x) { PRE { $x %% 2 }; return $x - 1; POST { $_ !%% 2 } }; say foo(10) 19:32
p6eval niecza v8-45-g366d65b: OUTPUT«Unhandled exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.␤ at System.Collections.Generic.Dictionary`2[System.String,System.Reflection.FieldInfo].get_Item (System.String key) [0x00000] in <filenam…
masak sorear: can I submit this as a Niecza issue?
moritz wouldn't see why not 19:33
19:38 shinobicl left
masak does it, then 19:40
19:53 mj41 left 19:58 im2ee joined 20:00 timbunce left
diakopter looks for something else "quick/easy" to tackle in niecza 20:01
masak diakopter: temp! :) 20:02
diakopter hah 20:03
masak too easy? maybe 'let', then. I've been wanting that one for a long time :) 20:04
now that many phasers are in place, it should even be within reach.
diakopter unfortunately for me, I don't understand enough about let and phasers 20:06
pmichaud careful playing with phasers... one might get burned.
:-)
masak one might get burned early on... or very late. 20:08
TimToady let is just like temp, except it puts the restorer in UNDO instead of in LEAVE
masak well, there you go. 20:09
diakopter I don't understand enough about temp also :)
colomon I thought phasers were more likely to stun you...
TimToady (or in the case of temp $*foo, puts the hoister into KEEP)
er, let $*foo
dalek ecza: b1a06ff | diakopter++ | lib/ (3 files):
fix the build; sigh
20:10
diakopter evalbot: rebuild niecza 20:11
halp 20:12
p6eval: rebuild niecza
evalbot control rebuild niecza
evalbot rebuild niecza 20:13
p6eval OK (started asynchronously)
20:15 timbunce joined
diakopter niecza: IO.X 20:15
p6eval niecza v8-45-g366d65b: OUTPUT«Unhandled exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.␤ at System.Collections.Generic.Dictionary`2[System.String,System.Reflection.FieldInfo].get_Item (System.String key) [0x00000] in <filenam…
diakopter urp
niecza: say 3.IO.x
p6eval niecza v8-45-g366d65b: OUTPUT«Unhandled exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.␤ at System.Collections.Generic.Dictionary`2[System.String,System.Reflection.FieldInfo].get_Item (System.String key) [0x00000] in <filenam… 20:16
diakopter uh oh
now what did I do
TimToady niecza: say "Rebuild in progress"
p6eval niecza v8-45-g366d65b: OUTPUT«Unhandled exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.␤ at System.Collections.Generic.Dictionary`2[System.String,System.Reflection.FieldInfo].get_Item (System.String key) [0x00000] in <filenam… 20:17
diakopter maybe I broke the build in more ways than I know
TimToady
.oO(Meta-Rebuild in progress)
diakopter TimToady: I don't suppose you could explain the fallback algorithm perl uses for -x,-r,-w when eaccess etc aren't available 20:19
20:19 molaf joined
diakopter or maybe point me to a filename somewhere 20:20
dalek kudo/nom: 3462af1 | tadzik++ | src/Perl6/Grammar.pm:
Implement DOC use
TimToady pp_sys.c 20:21
pmichaud tadzik: for a one-level flag like $*DOC_USE, easier would be to simply capture the 'DOC' into a subcapture
$<doc>=[ 'DOC' \h* ] 20:22
diakopter TimToady: yikes; it switches effective uid temporarily; that doesn't seem threadsafe
pmichaud and then look for the subcapture
tadzik pmichaud: oh, probably, yes
will do that
TimToady diakopter: I believe this was mentioned earlier as a problem with that approach
in fact, you said it 20:23
diakopter yes; I'm running out of choices
TimToady let's see, there's always forking off another process, then sending the info back through a pipe 20:25
not something you wanna do on every -r though...
TimToady will nap upon it 20:26
diakopter poor mono doesn't emulate it
I wonder what parrot/rakudo do
[Coke] needs to turn off "parrot" as a word of interest in this channel. 20:27
pmichaud I think that rakudo does "nyi" for that. :) 20:28
(Parrot also.)
diakopter but it does do -r -w -x I thought
which is supposed to use effective uid/gid 20:29
oh, I guess they're fudged 20:30
in filetest.t 20:31
tadzik is it just me, or ./perl6 --doc -e 'DOC use Test;' does run HORRIBLY slow for some reason? 20:32
like, 8 times slower than withouth the --doc?
masak 'night, #perl6
diakopter n
tadzik oh, that's maybe the loading of Pod::To::Text and so 20:33
nom: use Test; use Pod::To::Text
20:33 masak left
p6eval nom: ( no output ) 20:33
jnthn tadzik: Oh, I think we don't install the pre-compiled versions of those. 20:34
tadzik it's 7.5 seconds for me
jnthn So if you're hitting the install somehow...
tadzik I don't install nom on my machine
jnthn ok
Is it far faster without --doc?
20:35 Khisanth left
pmichaud looks like Parrot implements "real uid" access checks, and not "effective uid" 20:35
tadzik jnthn: yes, a lot
diakopter pmichaud: same for mono 20:36
tadzik jnthn: see gist.github.com/1135126
and it's not because of DOC use, commenting it out doesn't help
20:37 kanishka left, Khisanth joined
jnthn hmm 20:38
tadzik adding use Pod::To::Text and copypasting the default phaser still doesn't slow things down that much
I'll compare the pir output
pmichaud where is the --doc switch handled, ooc?
tadzik well, --doc generates over 200% the pir
206 lines vs 442 lines
pmichaud: it depends on what do you mean by handled. There are checks for '%*COMPILING<?OPTIONS><doc> from time to time 20:39
dalek kudo/nom: 1ec5883 | tadzik++ | src/Perl6/Grammar.pm:
Use a subcapture instead of a dynvar in DOC use handling, pmichaud++
20:42
20:43 im2ee left 20:44 Khisanth left 20:47 kaare_ left
dalek odel: 5fa7d52 | (Martin Berends)++ | c/ (2 files):
odel/c] fix a memory leak in t/01c-osthreads.c detected up by valgrind
20:52
20:58 Khisanth joined
dalek ecza: dd8c40b | diakopter++ | lib/Builtins.cs:
copy Perl 5's emulate_eaccess algorithm for -r -w -x
20:59
20:59 fbass joined 21:02 timbunce left 21:07 timbunce joined 21:18 fbass left
tadzik g'night #perl6 21:19
jnthn night, tadzik
21:20 Vlavv` joined 21:22 Vlavv left 21:39 bluescreen10 left 21:44 Psyche^ joined 21:45 zby_home_ left 21:46 drbean joined 21:48 Patterner left, Psyche^ is now known as Patterner 21:55 isBEKaml left
diakopter sorear: ping 22:03
niecza: say 1
p6eval niecza v8-48-gb1a06ff: OUTPUT«Unhandled exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.␤ at System.Collections.Generic.Dictionary`2[System.String,System.Reflection.FieldInfo].get_Item (System.String key) [0x00000] in <filenam… 22:04
diakopter gah
Util rakudo: my $m = [ [1,2,3], [4,5,6], [7,8,9] ]; my @a = $m.list>>.list; say @a.perl;
p6eval rakudo 922500: OUTPUT«[1, 2, 3, 4, 5, 6, 7, 8, 9]␤» 22:05
Util rakudo: my $m = [ [1,2,3], [4,5,6], [7,8,9] ]; my @a = $m.list>>.flat; say @a.perl;
p6eval rakudo 922500: OUTPUT«[1, 2, 3, 4, 5, 6, 7, 8, 9]␤»
Util nom: my $m = [ [1,2,3], [4,5,6], [7,8,9] ]; my @a = $m.list>>.list; say @a.perl;
p6eval nom: OUTPUT«Array.new(1, 3, 2)␤»
Util nom: my $m = [ [1,2,3], [4,5,6], [7,8,9] ]; my @a = $m.list>>.flat; say @a.perl;
p6eval nom: OUTPUT«Array.new(5, 4, 6)␤»
Util Known problem with nom?
22:06 Reaganomicon joined
pmichaud nom: my $m = [ [1,2,3], [4,5,6], [7,8,9] ]; say $m.perl; 22:07
p6eval nom: OUTPUT«[[1, 2, 3], [4, 5, 6], [7, 8, 9]]␤»
22:07 whiteknight joined
pmichaud nom: my $m = [ [1,2,3], [4,5,6], [7,8,9] ]; say $m.list 22:07
p6eval nom: OUTPUT«1 2 3 4 5 6 7 8 9␤»
pmichaud nom: my $m = [ [1,2,3], [4,5,6], [7,8,9] ]; say $m.list.perl 22:08
p6eval nom: OUTPUT«Array.new([1, 2, 3], [4, 5, 6], [7, 8, 9])␤»
pmichaud nom: my $m = [ [1,2,3], [4,5,6], [7,8,9] ]; say $m.list>>.flat.perl
p6eval nom: OUTPUT«Array.new(1, 2, 3)␤»
pmichaud nom: my $m = [ [1,2,3], [4,5,6], [7,8,9] ]; say ($m.list>>.flat).perl
p6eval nom: OUTPUT«Array.new(5, 4, 6)␤»
pmichaud nom: my $m = [ [1,2,3], [4,5,6], [7,8,9] ]; say ($m.list.flat).perl
p6eval nom: OUTPUT«Array.new([1, 2, 3], [4, 5, 6], [7, 8, 9])␤»
pmichaud nom: my $m = [ [1,2,3], [4,5,6], [7,8,9] ]; say ($m.list>>.flat).perl 22:09
p6eval nom: OUTPUT«Array.new(5, 4, 6)␤»
pmichaud weird.
looking.
nom: my $m = [ [1,2,3], [4,5,6], [7,8,9] ]; say ($m.list."dispatch:<hyper>"()).perl
p6eval nom: OUTPUT«Not enough positional parameters passed; got 1 but expected at least 2␤current instr.: 'dispatch:<hyper>' pc 750498 (src/gen/CORE.setting.pir:190619) (src/gen/CORE.setting:654)␤»
pmichaud nom: my $m = [ [1,2,3], [4,5,6], [7,8,9] ]; say ($m.list."dispatch:<hyper>"('flat')).perl
p6eval nom: OUTPUT«Array.new(8, 9, 7)␤»
pmichaud oh!
22:12 alester left
sorear diakopter: pong 22:12
Util has *no* insight into pmichaud's insight 22:13
diakopter sorear: I think perhaps "using Mono.Unix.Native;" broke something in Builtins.cs
jnthn Util: Me either. :)
But I look forward to seeing the patch. :)
pmichaud well, it's somewhat of a question of "what do you expect to happen there?"
jnthn pmichaud: I'm guessing there's an itemize happening somewhere 22:15
pmichaud actually, it's that an itemize *isn't* happening. 22:16
jnthn oh.
ah, I see
It's doing a list assignment.
pmichaud right.
dalek ecza: 3517be9 | diakopter++ | lib/Builtins.cs:
fix the build for realz
pmichaud I can force it to itemize... but then that would totally negate the point of the .flat
diakopter evalbot rebuild niecza
p6eval OK (started asynchronously)
jnthn ah, yeah 22:17
the number of result elements != the number of elements we started with, if it's gonna work.
diakopter niecza: saliveay
p6eval niecza v8-50-g3517be9: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'saliveay' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 685 (CORE die @ 2) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1136 (STD P6.comp_unit @ 36)…
diakopter er
niecza: say "liave"
pmichaud well, I suspect @result[...] = is wrong anyway.
p6eval niecza v8-50-g3517be9: OUTPUT«liave␤»
pmichaud I'm guessing it needs to go into a list instead of an array. 22:18
diakopter niecza: say IO.x
p6eval niecza v8-50-g3517be9: OUTPUT«Unhandled exception: CORE IO.x may not be used in safe mode␤ at /home/p6eval/niecza/lib/CORE.setting line 0 (CORE IO.x @ 0) ␤ at /tmp/uV0DPCuojs line 1 (MAIN mainline @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1991 (CORE C938_ANON @ 2) ␤ at /ho…
sorear diakopter++
diakopter: I was pretty conservative with the "is unsafe" decorators 22:19
I'm not sure how much we *really* need to block
pmichaud have to fetch dinner -- will fix when I return. My guess is that the results should go into an RPA that then gets turned into a list (with flattening as appropriate) 22:20
sorear almost all mutating syscalls except exit() and similar, naturally
pmichaud or, perhaps more likely, the results go into an RPA that gets turned into a Parcel
sorear also reading files
but I can't tell offhand if -x is a security risk
pmichaud anyway, I'll fix it shortly. 22:21
sorear maybe I should ask the person whose security is threatened :D diakopter, you own(FSVO own) host04, right?
jnthn pmichaud++
TimToady niecza: use Test
p6eval niecza v8-50-g3517be9: ( no output )
TimToady niecza: use Test; say "alive"
p6eval niecza v8-50-g3517be9: OUTPUT«alive␤»
TimToady hmm, fails here 22:22
diakopter git pull again
just fixed
TimToady did, the build was broke before
now just 'make test' is
diakopter hm
TimToady I get: Unable to resolve method shift in class Str 22:23
diakopter mono run/Niecza.exe -e 'say "lib".IO.x'
TimToady that returns true
diakopter /o/
TimToady trying a make clean 22:24
diakopter make test wfm
TimToady fixed
diakopter sorear: github.com/sorear/niecza/issues/47 can be closed I'm sure 22:25
TimToady must be a missing dependency if a make clean fixes
s/must/likely to/
22:25 bbkr1 left 22:26 timbunce left
sorear TimToady: it's more insidious than that; the dependency calculator breaks if there are files left around from a previous incompatible revision of the .nam format 22:26
I should probably add a version number to that at some point
TimToady well, that's sort of a missing dependency :) 22:27
22:27 bbkr joined
diakopter TimToady: I ended up doing setreuid/setregid and back 22:28
sorear diakopter: closed
diakopter sorear: now all it needs is the ~~ :x syntax for filetest.t to pass largely 22:29
dalek ast: 63327ca | jonathan++ | S12-subset/multi-dispatch.t:
Update test to follow latest proto semantics.
sorear well that's trivial 22:30
diakopter trivial for you
TimToady I imagine it already has the syntax; it's the semantics it needs... 22:31
diakopter niecza: say IO ~~ :e # yes
p6eval niecza v8-50-g3517be9: OUTPUT«Bool::False␤»
diakopter (doesn't try to invoke the method) 22:32
22:32 Chillance left
TimToady niecza: say Pair.can('ACCEPTS') 22:32
p6eval niecza v8-50-g3517be9: OUTPUT«Bool::True␤»
sorear that's because it's calling Mu.ACCEPTS
22:32 rdesfo left
sorear wait, no, it's calling Any.ACCEPTS 22:32
TimToady niecza: say "foo" ~~ :chars
p6eval niecza v8-50-g3517be9: OUTPUT«Bool::False␤» 22:33
sorear and then "foo" === :chars
TimToady right
niecza: say "1" ~~ :chars
p6eval niecza v8-50-g3517be9: OUTPUT«Bool::False␤»
TimToady um 22:34
right
sorear niecza: my $p = :chars; say $p ~~ $p
p6eval niecza v8-50-g3517be9: OUTPUT«Bool::True␤»
TimToady niecza: say 1 ~~ :chars
p6eval niecza v8-50-g3517be9: OUTPUT«Bool::False␤»
TimToady niecza: say 1 ~~ 1
p6eval niecza v8-50-g3517be9: OUTPUT«Bool::True␤» 22:35
22:35 saaki left
TimToady niecza: say 1 ~~ 1.chars 22:35
p6eval niecza v8-50-g3517be9: OUTPUT«Bool::True␤»
dalek kudo/nom: 73ee1ee | jonathan++ | / (17 files):
Add archetypes, which provide a way for a meta-object to describe the things the types it describes can be used for, or can provide related types for. Replaces the .is_generic mechnism, and adds a few more things, including a way to ask a subtype for its underlying nominal type.
kudo/nom: 9d9f42c | jonathan++ | src/Perl6/Metamodel/SubsetHOW.pm:
Missing decontainerize.
kudo/nom: 71168e4 | jonathan++ | src/Perl6/Actions.pm:
Handle non-nominal types used in the nominal parameter type slot; start preparing for fixing generics handling in the binder a little more.
kudo/nom: c954899 | jonathan++ | t/spectest.data:
Run S12-subset/multi-dispatch.t.
diakopter sorear: what is niecza missing that makes its "Basic File IO" entry in Features not be green
sorear diakopter: close and most of the other handle operators 22:36
niecza: say (1.?"pie"()).perl
p6eval niecza v8-50-g3517be9: OUTPUT«Potential difficulties:␤ Useless use of quotes at /tmp/nkLGOT2TXG line 1:␤------> say (1.?"pie"⏏()).perl␤␤Nil␤» 22:37
sorear niecza: say (1."sqrt"()).perl
p6eval niecza v8-50-g3517be9: OUTPUT«Potential difficulties:␤ Useless use of quotes at /tmp/DUkKh7kjsD line 1:␤------> say (1."sqrt"⏏()).perl␤␤1␤»
sorear niecza: say (1.?"sqrt"()).perl
p6eval niecza v8-50-g3517be9: OUTPUT«Potential difficulties:␤ Useless use of quotes at /tmp/xHCTrEoE1w line 1:␤------> say (1.?"sqrt"⏏()).perl␤␤1␤»
sorear I've added a Pair.ACCEPTS
now testing
TimToady also lines() doesn't do anything with filenames on the command line 22:38
diakopter gather take my $l while ($l = self.get).defined; 22:39
TimToady, including with .IO ?
sorear diakopter: you think it could use more parens?
diakopter heh no
just pasting it
Util pmichaud++
TimToady gather makes its own parens 22:40
so you don't need 'em for the while modifier
TimToady thinks
Util (independent of implementation) If I have a AoA, and want to completely
flatten it, is there a "best way" among .flat>>.flat, .flat>>.list,
.list>>.list, .list>>.flat, or something completely different?
TimToady Util: .tree is supposed to do that, but nobody's implemented it 22:41
diakopter sounds like a feature item
TimToady diakopter: I don't know what you mean by: including with .IO ? 22:42
diakopter I guess I was asking for an example of your command line
TimToady lines with no argument implicitly opens filter style
sorear Util: probably { $_ ~~ Array ?? map(&?BLOCK, @($_)) !! $_ }
dalek ecza: 785e335 | sorear++ | lib/CORE.setting:
Implement Pair.ACCEPTS
22:43
diakopter I don't know what filter style is 22:44
TimToady filenames on command line or STD if none specified
STDIN
Util sorear, TimToady: thanks! 22:45
TimToady lines works with <file but not just file
Util When implemented in Rakudo and Niecza, I want to change part of RC Matrix-exponentiation_operator from:
my $size = 1; for ^$m X ^$m -> $i, $j { $size max= $m[$i][$j].Str.chars; }
to:
my $size = [max] 1, $m.tree».chars;
TimToady well, except we probably will change that one to use real shaped arrays when we have 'em 22:46
what we need is the visit-every-leaf semantics somewhere handy 22:47
which was specced somewhere... 22:48
Util visit-every-leaf would be quite nice 22:49
TimToady seems that Enumerable used to mean that, or some such 22:50
pmichaud okay, now that I've done my errand and thought about it, I feel an inconsistency in the hyperops 22:51
Util traverse() is in S06, but it is an example of "Unpacking tree node parameters", not a language feature in itself.
pmichaud if @a>>++ recursively applies ++ to any Iterables in @a, does the same hold true for @a>>.foo ?
22:51 pothos_ joined
TimToady but it's specced to return the same structure 22:52
pmichaud right, so is the same true for @a>>.foo ?
i.e., it returns the same structure?
22:53 wolfman2000 joined, pothos left, pothos_ is now known as pothos
TimToady I'd think the best that could do is turn sub-arrays into sub-parcels 22:54
in any case, we don't actually want to flatten the 2-D array in this case
but just treat it like a 1-D array temporarily
or just visit each leaf
pmichaud I don't follow. 22:55
maybe I need to read the backscroll a bit
TimToady Util's code above
pmichaud my $m = [ [1,2,3], [4,5,6] ]; $m>>.flat 22:56
22:57 fbass joined
pmichaud shouldn't preserve the AoA structure? 22:57
i.e., it should become ( (1,2,3), (4,5,6) ) ?
similarly
my $m = [ [ 1, [2,3] ], [4,5,6] ]; $m>>.flat produces ((1,(2,3)), (4,5,6)) ?
on a related note, S03:4251 talks about "tree node types with C<Iterable> semantics" providing visitation on each node... but I have no idea what that should actually look like. 23:00
i.e., many operations want to work on the leaves and preserve structure (meaning they don't apply to the Iterable itself) 23:01
TimToady I guess the problem is that, while ». visits, it doesn't flatten, so you have to do a gather/take to flatten the results such that [max] could work on it
23:02 hanekomu left
dalek atures: fc7813d | diakopter++ | features.json:
fix wrong perl6advent link
23:04
TimToady perl6: my $m = [ [1,2,3], [4,5,6] ]; say [*] gather $m».map: { take $_ }
p6eval niecza v8-50-g3517be9: OUTPUT«720␤»
..rakudo 922500: OUTPUT«1␤»
..pugs: OUTPUT«decodeUTF8': bad data: '\187'␤1␤»
TimToady niecza++
flussence just realised @a».?foo is a thing
TimToady sure, though .map should work on pretty much anything 23:05
pmichaud nom: my $m = [ [1,2,3], [4,5,6] ]; say [*] gather $m>>.map: { take $_ }
p6eval nom: OUTPUT«Null PMC access in push_pmc()␤current instr.: '_block13920' pc 785377 (src/gen/CORE.setting.pir:207766) (src/gen/CORE.setting:2974)␤»
pmichaud hmmm
nom: my $m = [ [1,2,3], [4,5,6] ]; say [*] gather { $m>>.map({ take $_ }) }
p6eval nom: OUTPUT«Null PMC access in push_pmc()␤current instr.: '_block13920' pc 785377 (src/gen/CORE.setting.pir:207766) (src/gen/CORE.setting:2974)␤»
TimToady if that's going to be a common pattern we should tell hyper not to reconstruct the new value in sink context (which a gather supplies) 23:06
pmichaud yeah
TimToady How to Write the Visitor Pattern in Perl 6
pmichaud ...if we can somehow know we're in sink context :-P
TimToady you can know this one statically 23:07
flussence rakudo: my @a = (4, 'q', False); say @a».?sqrt
p6eval rakudo 922500: OUTPUT«200␤»
pmichaud wait
why wouldn't that be simply? 23:08
my $m = [ [1,2,3], [4,5,6] ]; say [*] gather $m>>.take
TimToady er, cause I didn't know .take was implemented yet
pmichaud it might not be... is there a .take ? 23:09
TimToady dint useta was
pmichaud seems weird to use .map there, though, if it applies mainly to the leaves
TimToady perl6: my $m = [ [1,2,3], [4,5,6] ]; say [*] gather $m».take
p6eval pugs: OUTPUT«decodeUTF8': bad data: '\187'␤720␤»
..rakudo 922500: OUTPUT«Method 'take' not found for invocant of class 'Array'␤ in <anon> at line 22:/tmp/xWVszOzWLn␤ in 'List::Bool' at line 1:src/metamodel/RoleToInstanceApplier.nqp␤ in 'prefix:<!>' at line 502:src/gen/core.pm␤ in 'reducewith' at line 375:src/gen/core.pm␤ in main pr…
..niecza v8-50-g3517be9: OUTPUT«Unhandled exception: Unable to resolve method take in class Int␤ at /tmp/t7h5KPQDOk line 1 (MAIN C1_ANON @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1611 (CORE hyperunary @ 56) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1602 (CORE hyperunary …
TimToady perl6: my $m = [ [1,2,3], [4,5,6] ]; say [*] gather take«($m) 23:10
23:10 dorlamm joined
p6eval niecza v8-50-g3517be9: OUTPUT«Unhandled exception: System.IndexOutOfRangeException: Array index is out of range.␤ at Lexer.Run (System.String from, Int32 pos) [0x00000] in <filename unknown>:0 ␤ at Lexer.RunDispatch (Niecza.Frame fromf, Niecza.P6any cursor) [0x00000] in <filename unkn… 23:10
..pugs: OUTPUT«decodeUTF8': bad data: '\171'␤*** ␤ Unexpected "\171($"␤ expecting "::", dot, ":", "(", term postfix, operator or ","␤ at /tmp/JomdOe7Uyy line 1, column 50␤»
..rakudo 922500: OUTPUT«===SORRY!===␤Confused at line 22, near "say [*] ga"␤»
TimToady perl6: my $m = [ [1,2,3], [4,5,6] ]; say [*] gather take« $m
p6eval niecza v8-50-g3517be9: OUTPUT«Unhandled exception: System.IndexOutOfRangeException: Array index is out of range.␤ at Lexer.Run (System.String from, Int32 pos) [0x00000] in <filename unknown>:0 ␤ at Lexer.RunDispatch (Niecza.Frame fromf, Niecza.P6any cursor) [0x00000] in <filename unkn…
..pugs: OUTPUT«decodeUTF8': bad data: '\171'␤*** ␤ Unexpected "\171"␤ expecting "::", dot, ":", "(", term postfix, operator or ","␤ at /tmp/mgUcMuS74d line 1, column 50␤»
..rakudo 922500: OUTPUT«===SORRY!===␤Confused at line 22, near "say [*] ga"␤»
TimToady boom, boom, boom :D
pmichaud $m<<.&take maybe?
er, >>
TimToady likely 23:11
pmichaud nom: my @a = 1..10; @a>>.&say; # curious
TimToady perl6: my $m = [ [1,2,3], [4,5,6] ]; say [*] gather $m».&take
p6eval nom: OUTPUT«1␤5␤2␤7␤9␤10␤4␤3␤8␤6␤»
niecza v8-50-g3517be9: OUTPUT«720␤»
..pugs: OUTPUT«decodeUTF8': bad data: '\187'␤720␤»
..rakudo 922500: OUTPUT«9␤»
TimToady good guess, rakudo, but no
pmichaud nom: my $m = [ [1,2,3], [4,5,6] ]; say [*] gather $m>>.&take;
p6eval nom: OUTPUT«Null PMC access in push_pmc()␤current instr.: '_block13920' pc 785377 (src/gen/CORE.setting.pir:207766) (src/gen/CORE.setting:2974)␤»
pmichaud hmmph 23:12
I wonder where that Null PMC is coming from. must be in gather/take somewhere.
nom: my $m = [ [1,2,3], [4,5,6] ]; say (gather { $m>>.&take });
p6eval nom: OUTPUT«1 2 3 4 5 6␤»
pmichaud nom: my $m = [ [1,2,3], [4,5,6] ]; say [*] (gather { $m>>.&take });
p6eval nom: OUTPUT«Null PMC access in push_pmc()␤current instr.: '_block13920' pc 785377 (src/gen/CORE.setting.pir:207766) (src/gen/CORE.setting:2974)␤»
pmichaud nom: my $m = [ [1,2,3], [4,5,6] ]; say [*] (gather { $m>>.&take }).eager; 23:13
p6eval nom: OUTPUT«720␤»
pmichaud nom: my $m = [ [1,2,3], [4,5,6] ]; say [*] (gather $m>>.&take ).eager;
p6eval nom: OUTPUT«720␤»
pmichaud nom: my $m = [ [1,[2,3]], [4,5,6] ]; say [*] (gather $m>>.&take ).eager;
p6eval nom: OUTPUT«240␤»
pmichaud hmmmmm 23:14
so, back to my earlier question... >>.foo preserves structure when applied to iterables?
q! 23:15
ww
TimToady S03:4124 is what the spec says 23:19
which is why I said it could downgrade a structure to parcels, but not remove them
pmichaud when would we downgrade, though? 23:20
always?
what about nested hashes?
TimToady that would depend on whether the method in question is applied to the old leaves or the new ones 23:22
sorear wonders what language was used in the latest parrot-dev post, with .| and .^ as operatos
TimToady doing it to the new ones would seem to violate S03:4124
pmichaud "new ones"? I'm not following again. 23:23
TimToady I don't think you can call any method on something that hyper will see as a sub-iterable, since the point of a hyper is to distribute a scalar over iterables 23:24
so ».flat should be a no-op
it only ever calls .flat on the leaves 23:25
we need .tree if we want to stop recursing at some level 23:27
23:31 wamba left
pmichaud if I'm reading you correctly, I agree totally. I'm taking from this that >>.foo preserves the structure (which I think is fine and consistent and good) 23:31
jnthn pmichaud: While we're on this topic, I'm not sure that dispatch:<hyper> is going to quite work out. (more) 23:32
@obj>>.?foo also needs to work
I was thinking maybe >> there results in us re-writing to a closure of some kind
And then we take the same path as e.g. @obj>>.++ 23:33
TimToady I was trying to say that if ».flat were able to recursively flatten, it would have to be applied to the result of applying it to the leaves, not recursively to the old structure, which is what hyper does
something like postorder vs preorder 23:34
jnthn: seems reasonable, though perhaps hot-pathable 23:35
jnthn TimToady: Given the thingy that implements >> can be statically known, a sufficiently clever inliner may be able to unpick the thing. 23:37
TimToady well, correct first, then fast 23:38
jnthn aye
TimToady much as it galls me to say it :)
jnthn pmichaud: think tadzik's patch earlier busted the build
Got a fix here. 23:39
It's interleaved with a couple of other commits but I suspect they're harmless...
...so pushed.
pmichaud jnthn: guess what, I think that >>.?foo already works :-) 23:40
dalek kudo/nom: c5e94c1 | jonathan++ | src/ (3 files):
Pass generic nominal flag down to binder.
kudo/nom: 130bab8 | jonathan++ | src/Perl6/Grammar.pm:
Seems tadzik's last patch was a little off and managed to break the build; this unbreaks it.
kudo/nom: cb738d9 | jonathan++ | src/binder/bind.c:
Make (::T, T) style signatures work properly in the binder.
pmichaud nom: my @a = 1,2,3; say @a>>.?succ
p6eval nom: OUTPUT«2 3 4␤»
jnthn pmichaud: OK, then I musta mis-reviewed your patch. :)
pmichaud: er
nom: my @a = 1,2,Mu; say @a>>.?succ
p6eval nom: OUTPUT«2 3␤»
pmichaud :-)
jnthn nom: say Mu.succ
p6eval nom: OUTPUT«Method 'succ' not found for invocant of class 'Mu'␤current instr.: '_block1002' pc 63 ((file unknown):136) (/tmp/Q9Lpv7y2KR:1)␤»
jnthn pmichaud++
jnthn should not doubt :) 23:41
pmichaud it's the same way that >>.&var is working
it's calling dispatch:<var>
from within dispatch:<hyper>
jnthn oh!
pmichaud in the case of >>.?method
jnthn oh, clever. :)
pmichaud it's calling dispatch:<.?> (or whatever)
23:41 molaf_ joined
jnthn TimToady: btw, will you be at the hackathon on Saturday in Riga? 23:42
pmichaud jnthn: unlike the previous implementation of hyper-dispatch, nom's implementation actually grabs the name from the underlying PAST::Op node instead of always using the parsed name 23:44
jnthn pmichaud: Yeah, I noticed. :)
pmichaud (although it's failing a bit with .>>.foo, which needs some fixing.
er, .>>.++ I mean 23:45
.>>.foo probably works fine
nom: my @a = 1,2,3; say @a.>>.succ
p6eval nom: OUTPUT«Confused at line 1, near "say @a.>>."␤current instr.: 'nqp;HLL;Grammar;panic' pc 23611 (src/stage2/gen/NQPHLL.pir:6348) (src/stage2/gen/NQPHLL.pm:329)␤»
pmichaud oh, guess not.
jnthn std: my @a = 1,2,3; say @a.>>.succ
p6eval std 516268a: OUTPUT«ok 00:01 122m␤»
23:45 molaf left
jnthn hmmmmm 23:46
(::T, T) things in multi-dispatch are...interesting.
23:47 dorlamm left
jnthn thinks he'll leave that for tomorrow :) 23:50
23:51 amkrankruleuen left 23:52 amkrankruleuen joined 23:57 saaki joined