»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
BenGoldberg .w manipulexity 00:48
yoleaux Sorry, I couldn't find a definition for 'manipulexity'.
ren1us for (0 .. @pulled.elems - 1) { 04:36
Is there anywhere on that line that seems to be modifying an immutable int?
Because I really don't think there is
perigrin @pulled.elems - 1 ... maybe ? 04:38
ren1us that wouldn't be modifying an int, though. it'd just be doing basic arithmetic without changing the value of an existing one 04:39
at least i assume
perigrin the assume is where I got hung too 04:40
and why there was a mabye? on the end
perigrin w/ 60 04:47
lue ren1us: are you by chance writing to $_ in the loop? 05:03
ren1us @list[$_ + $pos] = @pulled[$_]; 05:07
^ the only line in the loop
i don't think I am
(lue)
lue ren1us: only other thing I can think of is getting rid of the unnecessary parens, so for 0..@pulled.elems-1 { 05:08
(also, if you want, you can rewrite the range as 0 ..^ @pulled.elems or even ^+@pulled ☺) 05:12
ren1us i'll give it a shot, but it takes a ridiculously long time to run through each iteration and only errored about 80 iterations in last time 05:15
34 seconds per iteration, actually, lol 05:18
i should probably try to do something about that
lue If it happens in a consistent spot, you might be able to shortcut it for testing with something like 80..^+@pulled , or even just print the element of both arrays when it errors.
ren1us i know the array element, it just shouldn't really matter 05:19
but yeah i'm printing out the indexes now so that should help fix it if it happens again 05:22
lue ren1us: One last thought: if at some point in the code you do something like @list[$someplace] := 42 , you wouldn't be able to assign to that position in the list later. 05:23
ren1us I don't even know what the := operator does so I don't think I do that 05:28
lue OK, just thought I'd mention it :) . 05:30
moritz doc.perl6.org/language/containers has an explanation of := (binding) 05:34
ren1us moritz: I don't suppose you know what would be causing that error :P 05:36
moritz ren1us: sorry, I haven't seen the error, and no time to backlog 05:41
ren1us for (0 .. @pulled.elems - 1) { <--- after having run in its entirety a whole bunch of times, this line threw something about modifying an immutable int 05:46
and i'm pretty sure it's not modifying an immutable int
FROGGS_ .tell jnthn look at this weird patch, that helps a lot: gist.github.com/FROGGS/0c85c2e1363abb4a45c1 05:57
yoleaux FROGGS_: I'll pass your message to jnthn.
dwarring r: my $x = [a => 10, b => 20]; say @$x; say %$x 06:08
camelia rakudo-{parrot,jvm,moar} f8a933: OUTPUT«"a" => 10 "b" => 20␤("a" => 10, "b" => 20).hash␤» 06:09
dwarring r: my $x = {a => 10, b => 20}; say @$x; say %$x
camelia rakudo-{parrot,moar} f8a933: OUTPUT«"a" => 10 "b" => 20␤{"a" => 10, "b" => 20}␤»
..rakudo-jvm f8a933: OUTPUT«"b" => 20 "a" => 10␤{"a" => 10, "b" => 20}␤»
dwarring would expect %$x to be the same in both cases 06:10
doc.perl6.org/language/containers#F...Containers - indicates that % @ both flatten 06:14
but %$hashref doesn't flatten, whereas @$arrayref does 06:18
as does %$arrayref and @$hashref 06:26
lizmat good *, #perl6 06:47
won't be doing much here today, as I will be commuting again
life is hard :-)
&
timotimo o/ 06:49
FROGGS o/ 06:51
moritz \o 07:03
R* test summary: jsonrpc fails t/server.t, doc fails t/typegraph.t (both on parrot) 07:04
FROGGS moritz: moar is clean I suspect? 07:05
moritz FROGGS: it is
I didn't test JVM
FROGGS okay, that is at least something
you don't have to, the fails will be the same as the last months
moritz thought so 07:08
anybody interested in investigating the failures?
FROGGS interested yes 07:10
but I already do too much in parallel, so it will take time 07:11
moritz has to &work :(
ChoHag if %foo contains a bunch of class attribute values, and |args from the sub's signature contains some more, some of which will overlap with %foo's entries, can I say $bar = Bar.new(%foo, \args) and have it DTRT?
Also, is it |args in the sig to catch the arguments as is, then \args in a subsequent call to expand it to the arguments originally provided? 07:12
timotimo i think it's |args to expand it later
ChoHag I have not used containers enough for it to be second nature what does what.
moritz ChoHag: use |args to flatten something into an argument list 07:28
ren1us okay this error is starting to really annoy me
for 0..^pulled.elems { @list[$_ + $pos] = @pulled[$_]; } 07:30
is there *any* reason why that should be attempting to modify an immutable Int
moritz yes
m: my @list; @list[0] := 1; @list[0] = 42; 07:31
camelia rakudo-moar f8a933: OUTPUT«Cannot modify an immutable Int␤ in method assign_pos at src/gen/m-CORE.setting:8787␤ in sub postcircumfix:<[ ]> at src/gen/m-CORE.setting:2465␤ in block at /tmp/JcaNW2g2zX:1␤␤»
timotimo m: my @list := (1, 2, 3); @list[1] = 42;
camelia rakudo-moar f8a933: OUTPUT«Cannot modify an immutable Int␤ in method assign_pos at src/gen/m-CORE.setting:1772␤ in sub postcircumfix:<[ ]> at src/gen/m-CORE.setting:2465␤ in block at /tmp/qfVpnAPoGr:1␤␤»
ren1us i'm not using := though, or is it implied somewhere? 07:32
moritz yes
moritz calling functions binds the parameters 07:33
(it's not exactly the same as :=, but it's still binding)
timotimo aye, have "@list is copy" or "@list is rw" in your parameters
ren1us i pray this works 07:34
it's kinda funny, though, because that block runs properly over 100 times, and then almost randomly breaks
timotimo strange indeed. 07:35
ren1us oh right i was going to submit that other rakudobug 07:36
ren1us goes to do that
masak morning, #perl6 07:43
timotimo morning masak
dalek p: d7f23d9 | (Tobias Leich)++ | tools/build/MOAR_REVISION:
bump moar rev for CPointer get/set_int
07:44
kudo/nom: cce7f9f | (Tobias Leich)++ | tools/build/NQP_REVISION:
bump nqp rev for CPointer get/set_int
timotimo sometimes i get a bit frustrated at the status of rakudo when some bug or other torments users and i have no clue/time/mojo to fix it 07:46
FROGGS timotimo: I know what you mean... the cases where I can fix a bug are in the range of perhaps 20% :( 07:48
maybe even less
masak I know what you mean.
not sure how to fix that, except plodding on and occasionally gaining insights into the architecture. 07:49
dalek volaj: b73c9b0 | (Tobias Leich)++ | lib/NativeCall.pm6:
allow pointer math using OpaquePointer type

We will now see the memory address a OpaquePointer is about when calling its .gist, it is also now round-trippable by calling .perl and EVAL. Also, it will return the memory address when being used as a number, so that we can walk the bytes of a CStr or obtain addresses of Ctsructs in a list when we know their size.
07:53
volaj: 3824daf | (Tobias Leich)++ | t/04-pointers. (2 files):
add tests for new OpaquePointer methods

These tests pass on all three backends, though a most recent rakudo is required.
volaj: 2f1be0f | (Tobias Leich)++ | / (3 files):
Merge pull request #44 from FROGGS/pointer-math

allow pointer math using OpaquePointer type
vaskozl TimToady: Mr. Wall? I'm boggled by your mastery and efficiency over vim, it was amazing to watch one of your lectures. Might I be entitled to looking at some of your vimrc magic? 07:58
timotimo and with one hand only, too! 08:01
masak it's so we mere mortals will have a chance to follow along. 08:03
vaskozl: out of curiosity -- what's your own level of mastery over vim?
vaskozl uhm, I don't really know, on what scale? 08:04
it's my primary editor, that's for sure! 08:05
moritz on any scale you like, really 08:06
vaskozl it's feeble in comparison to #vim, but yet enough to answer the questions of ordinary warriors learning to find their way with vim 08:08
so I'm pretty confident with it using it for everything including note taking in all my classes for over an year now 08:09
masak vaskozl: let me put it like this: if I put you on Notepad, which features would you most miss from vim? 08:10
vaskozl my vimrc is of a second order of magnitude and is only getting bigger as I expand vims features to the path of enlightment
masak (I would never put someone on Notepad, by the way. I can be cruel, but I'm not a monster.)
vaskozl masak: / , cw($) , C-v, :s/foo/bar/ 08:11
vaskozl like the ones I use all the time.. 08:11
gg, G, C-d, C-u, dd, pp, 08:12
J, f, t, and so on so forth
ChoHag Why can't I return from inside a given inside a block which can be returned from? 08:13
vaskozl these were the ones on top of my head, oh and 0-> $
vaskozl macros would be big thing too, not to mention be able to pipe content trough programs and return it on screen 08:14
masak vaskozl: that gives me a pretty good idea -- thanks.
ChoHag masak: vim to notepad? I'd miss all of them.
From insert mode to the 64K limit they probably still haven't fixed since Windows 3. 08:15
masak m: sub foo { given 42 { when 42 { say "here!"; return } } }; foo; say "alive"
camelia rakudo-moar f8a933: OUTPUT«here!␤alive␤»
masak ChoHag: you can.
ChoHag >64K?
masak no, you can return from inside a given. 08:16
ChoHag Oh.
masak see above.
moritz ChoHag: I'm pretty sure Windows XP fixed the 64k limit in notepad
ChoHag Hmm interesting, now I can't return before the given. 08:17
vaskozl oh and I somewhat forgot: notepad doesn't run in a bloody console
ChoHag I'm sure I checked that last time I was in this function (days ago).
moritz ChoHag: what do you mean by "can't return"? 08:18
ChoHag vaskozl: For that, there's qbasic.
Is ms edit still based on qbasic these days?
Attempt to return outside of any Routine
moritz ChoHag: then the problem is that you've already returned.
ChoHag Maybe it was a sub {...} not a -> {...} when I tested.
moritz or that, yes
ChoHag Is there a difference?
moritz yes
ChoHag You can return and remain inside the function?
moritz return is bound to routines
ChoHag /block/whatever 08:19
moritz ChoHag: you can be back
m: sub f() { -> { return } }; f()()
camelia rakudo-moar f8a933: OUTPUT«Attempt to return outside of any Routine␤ in block at src/gen/m-CORE.setting:556␤ in block at /tmp/PiF9iyKH4B:1␤␤»
ChoHag Oh that's cheating.
moritz by the time the inner code block is run, you've already returned the block from f()
ChoHag The return isn't in f, it's in f() 08:20
moritz and the same can happen with lazy list generators
ChoHag I shall have to look in to that at some point.
More weird things to break...
moritz m: sub f { return map { return }, 1..10 }; my @x := f(); say 'alive'; say @x[0];
camelia rakudo-moar f8a933: OUTPUT«alive␤Attempt to return outside of any Routine␤ in block at src/gen/m-CORE.setting:556␤ in block at /tmp/4SJUV7k_ZO:1␤␤»
ChoHag Java is slow :( 08:23
moritz English is slow :(
masak Humanity is slow :(
moritz the Sun is slow :-) 08:24
vaskozl the galaxy is slow :(
moritz vaskozl: I'm glad it is
ChoHag Depends on your point of view. 08:27
vaskozl Hey, I just recompiled (or tried to) perl6, and now when I run it I get a missing dependency :/ -> gist.github.com/b77503eaa91b2f106d6b
moritz vaskozl: you might need to clean out the installation dir, and then run 'make install' again 08:28
vaskozl oh right, should I run configure.pl again?
moritz no need for that, usually 08:29
vaskozl got it, kudos
ChoHag Gah! Run test. Fail. Run with tracer statements (say <int> every other line). Success. 08:44
masak sounds like grounds for a nice meaty rakudobug. 08:46
alternatively: get off my lawn! I've been with the projects since the presence or absence of a *comment* could cause a NullPMCAccess! :P 08:47
ah, the pain.
grondilu finally managed to write a PGN grammar that kind of works: gist.github.com/grondilu/1c0ef78e5deba7ba87f4 08:48
(not tested much though) 08:50
masak grondilu++ # nice! 08:51
grondilu considers adding it to perl6-examples/parsers/ 08:52
masak grondilu: had I written a grammar of that size, I would have done it with tests.
grondilu I had hard time figuring out I should put ?? after <disambiguation> and not just ? 08:53
otherwise it just failed silently :/ 08:54
masak yes -- this is where tests help greatly. 08:59
I find the combination of grammars and tests to be quite helpful.
grondilu sure, but finding and writing examples for tests is a bit tiresome. 09:00
moritz but you do that anyway
otherwise you wouldn't know it works 09:01
you just do it ad-hoc
grondilu I made one manual test with a single game and truncated it for debugging. I know it's silly to do that but I guess I'm not used to make tests properly yet. 09:02
masak finding and writing examples for tests (a) focuses the implementation tremendously, and (b) provides excellent regression guards. 09:04
...in my experience. YMMV. 09:05
moritz grondilu: well, but you already work with some examples in your head when you write the rules
grondilu yeah but that's more typing if I do things properly. I will eventually though. 09:06
grondilu do you think it's worth making a panda-compatible module? 09:10
FROGGS the answer is always: yes 09:11
grondilu ok, I will 09:11
sergot o/ 09:17
masak \o 09:18
masak jnthn: what about origin/qast_refactor ? 09:31
timotimo: what about origin/qast_lazy_annotation ?
"what about" as in "are these branches active? should they be merged? have them been merged? should they be deleted?" 09:32
jnthn Both still contain desirable work. 09:38
yoleaux 05:57Z <FROGGS_> jnthn: look at this weird patch, that helps a lot: gist.github.com/FROGGS/0c85c2e1363abb4a45c1
masak oki 09:40
colomon_ is it just me, or is everyone having terrible problems with (parrot?) rakudo at the moment? 09:42
teodozjan colomon_ : yes 09:45
colomon: see github.com/coke/perl6-roast-data 09:46
colomon_ teodozjan++ 09:47
ChoHag It liiiives! 09:54
teodozjan ChoHag: what lives? 09:57
ChoHag Some kind of weird job scheduler thing.
teodozjan :) 09:58
timotimo i'm not actually sure what exactly the status of qast_lazy_annotation was when i left it 10:21
ren1us m: sub a(@list is copy, $l = @list.elems) { say "Elems: " ~ @list.elems; say "l: $l"; }; a(<a b c d e f g>); a(<a b c>); 10:37
camelia rakudo-moar cce7f9: OUTPUT«Elems: 7␤l: 7␤Elems: 3␤l: 7␤»
ren1us m: sub a(@list, $l = @list.elems) { say "Elems: " ~ @list.elems; say "l: $l"; }; a(<a b c d e f g>); a(<a b c>);
camelia rakudo-moar cce7f9: OUTPUT«Elems: 7␤l: 7␤Elems: 3␤l: 3␤»
ren1us rakudobug or learning opportunity? 10:38
colomon_ sure looks like a rakudobug 10:45
ren1us submits
i'm always hesitant about submitting something that seems buggy before making sure i'm not just being dumb :P 10:46
jnthn What the thunk... 10:47
colomon_ ren1us: I've made enough boneheaded mistakes in my time to be very cautious.
jnthn I think the first one goes through the slow-path binder thanks to the "is copy" 10:48
ren1us m: class A { method test(@list is copy, $l = @list.elems) { say "Elems: " ~ @list.elems; say "l: $l"; }; }; my $a = A.new; $a.test(<a b c d e f g>);
camelia rakudo-moar cce7f9: OUTPUT«Elems: 7␤l: 7␤»
ren1us woops
m: class A { method test(@list is copy, $l = @list.elems) { say "Elems: " ~ @list.elems; say "l: $l"; }; }; my $a = A.new; $a.test(<a b c d e f g>); $a.test(<a b c>); 10:49
camelia rakudo-moar cce7f9: OUTPUT«Elems: 7␤l: 7␤Elems: 3␤l: 7␤»
jnthn So the bug is probably in there.
PotatoGim test: ff 11:03
colomon_ tadzik: ping? 11:29
tadzik colomon_: pong 11:30
colomon_ tadzik: I'm trying to sort out where the dependencies are resolved in panda 11:37
I'm hoping to block reinstalling File::Find, because that seems to kill panda dead on moar 11:38
tadzik colomon_: it's in panda-app I think 11:40
colomon_ bin/panda, you mean? 11:41
or Panda::App
?
tadzik no, Panda::App
colomon_ (looks at flie) I …. don't think so? 11:43
tadzik hmmmm, let me check then 11:44
ohhh, it might be Panda.pm 11:45
github.com/tadzik/panda/blob/maste...da.pm#L117 yes
colomon_ and it's actually used at 155? 11:48
hmmm 11:49
tadzik ayes 11:52
colomon_ huh. 11:54
why does emmentaler installing File::Find to emmentaler/installlib break everything? 11:55
tadzik hm, good question
is that installlib in perl6lib? 11:56
colomon_ don't think so.
but maybe I'm wrong?
tadzik I don't know :) 11:57
but installing panda deps has always been a pain
colomon_ it's /home/smoker/emmentaler/installlib
so no
teodozjan actually panda works on moar in my install
teodozjan but it stalls infinitely on file-find.t 11:58
while run on parrot
colomon_ teodozjan: try saying -- panda install File::Find
under moar
I'm getting the parrot hang on file-find.t too, mind you 11:59
nwc10 does strace show that it's looping making system calls?
or is it CPU bound within Perl 6 code?
teodozjan I need to compile moar ... it will take moment 11:59
is moar default backend on purpose if not specified --backends? 12:01
jnthn What other flags did you pass to Configure? 12:04
I'm pretty sure --gen-moar implies --backend=moar for example
teodozjan i mean if i do --gen-parrot --gen-moar moar will be defailt 12:05
jnthn I suspect if you want to override that you can --backends=... 12:06
I suspect it's just the order it checks for the flags in Configure
teodozjan i know i can :D but I'm thinking about new users that are not sure what backends are and which to use
jnthn Well, Moar is the right backend for most new users. 12:07
Tends to be fastest for one, and if nothing else because it's what most Rakudo developers primarily develop against, so we spot breakage a bit faster. 12:08
Though daily test runs mean nothing goes unnoticed too long.
teodozjan jnthn: I would also use it if my project compiles on 12:30
jnthn teodozjan: What keeps your project from compiling on it?
teodozjan when I import JSON::RPC::Client i get could not invoke null object 12:31
jnthn ugh
OK
Is there an RT for it, or a golfed test case?
teodozjan panda install LacunaCookbuk will show you 12:32
jnthn I can look at it during the weekend, or maybe tomorrow even...
ok, thanks.
teodozjan I was thinking how to isloate that
but I'm not sure whats wrong
colomon_ tadzik: AHA!
tadzik: emmentaler is installing in the wrong place 12:33
Copying blib/lib/File/Find.moarvm to /home/smoker/.rakudobrew/moar-HEAD/install/languages/perl6/site/lib/File/Find.moarvm
tadzik ah, there we go 12:34
so whose fault is that?
panda, emmentaler?
colomon_ tadzik: looking at the code now 12:34
panda's I reckon
Panda::Installer has $.destdir 12:35
but it also has method destdir
colomon_ which doesn't even look at the value in $.destdir 12:35
tadzik lol
how could this happen 12:36
colomon_ very carefully, I presume. ;) 12:36
tadzik oh, method destdir is just for setting $!destdir
but, yeah, $.destdir then calls that method again
colomon_ setting the default
tadzik it's a miracle this works
colomon_ right
easy peasy fix, I think -- just rename the method to something else 12:37
colomon_ would do it, except he's guessing tadzik is already doing so... 12:38
colomon_ suspects this will improve emmentaler's performance, too 12:39
tadzik no, I'm not, go ahead :)
tadzik at $work
colomon_ do I have a commitbit for panda?
tadzik I hope so
if not, that'll be an easy fix too
colomon_ do not
tadzik fixed 12:40
colomon_ :)
tadzik++
tadzik colomon_++ 12:40
I just add commit bits :P
FROGGS colomon_: always keep in mind that panda should work with older rakudos... so do not follow deprecations immediately 12:44
colomon_ FROGGS: noted
FROGGS (I don't wanna be a maintainer for P5's CPAN modules fwiw) 12:45
colomon_ Hmmm… seem to have fixed that problem, but now I'm getting
Can't serialize an object of type Version
at the end of the emmentaler run
FROGGS (because that must feel like working with Linus Torvalds standing behind you) 12:46
colomon_: we had that already, you have to stringify the version first
moritz right, json doesn't like Version objects
FROGGS m: say to-json(v1.2.3) 12:47
camelia rakudo-moar cce7f9: OUTPUT«"1.2.3"␤»
colomon_ FROGGS++ # \o/
FROGGS m: say (v1.2.3).WHAT
camelia rakudo-moar cce7f9: OUTPUT«(Version)␤»
FROGGS umm
why does that work here?
I guess the rakudo internals json thingy knows how to do that 12:48
internal*
moritz wwwwwat?
FROGGS *g* 12:49
moritz multi to-json(Version:D $v, :$indent = 0, :$first = 0) { to-json(~$v, :$indent, :$first) }
indeed
FROGGS that wasn't me
(I think)
jnthn I thought the JSON thingy used to support compunitrepo stuff was hidden, not exposed?
moritz 90d26eae (Tobias Leich 2013-12-09 22:02:35 +0100 94) multi to-json(Version:D $v, :$indent = 0, :$first = 0) { to-json(~$v, :$indent, :$fir
FROGGS hmmm 12:50
dalek nda: 246ad58 | (Solomon Foster)++ | lib/Panda/Installer.pm:
Rename method destdir so it doesn't hide $.destdir.
FROGGS ahh, two days before delivering the blog post... clearly I was under pressure!
jnthn: it is not hidden... and given the usefulness of JSON... I mean, we don't become a PHP, do we? ó.ò 12:51
moritz I'm of two minds about JSON in core. But the day we have an XML parser in core, I quit.
FROGGS hehe 12:52
moritz: I will never add it, that's for sure
FROGGS we just needed a way to slurp and spurt human readable datastructures.... and I went for JSON in contrast to INI or custom crap 12:53
teodozjan we can always switch to .perl like format :)
FROGGS human readable<---
and editable
moritz .perl is perl readable :-)
FROGGS sort of
tadzik I read "edible" :O
FROGGS tadzik: what ever you want, we can implement it :P
colomon_ is not sure he wants edible data structures 12:54
jnthn I'd prefer edible functions, 'cus you can curry those...
moritz sounds tasty
tadzik :D 12:56
colomon_ I suppose you'd salt your edible hashes, too? 12:57
jnthn
.oO( I thought hashes was for smoking, not eating... )
13:01
colomon_ I dunno, I'm smoking modules right now.
jnthn
.oO( What on earth was in that corn beef hash my mum used to cook?! O.O )
13:02
FROGGS m: say (v1.2.3).perl 13:02
camelia rakudo-moar cce7f9: OUTPUT«Version.new('1.2.3')␤»
FROGGS star-m: say 1 13:04
camelia star-m 2014.04: OUTPUT«1␤»
PotatoGim test: ff 13:06
FROGGS ok 1 - ff 13:09
perl6eval: help
p6eval: help
camelia FROGGS: Usage: <(rakudo-jvm|nqp-jvm|star-j|rakudo-moar|pugs|star-p|std|niecza|p5-to-p6|nqp-parrot|b|rakudo-parrot|nqp-moarvm|star-m|sp|nPr|rPn|Prn|j|Pnr|nqp-mvm|nr|p6|star|p56|nqp|r-j|rakudo|r-jvm|nqp-p|r-m|r-p|rp|nom|r|rnP|nqp-m|nqp-j|n|rm|perl6|rj|rn|P|m|sm|p|nrP)(?^::\s) $perl6_program>
FROGGS PotatoGim: ^^
dalek ast/S26-WHY: 970bedb | (Rob Hoelz)++ | S26-TODO:
More things TODO for S26...
13:17
dalek osystem: 6441217 | grondilu++ | META.list:
adding new module

Chess-related stuff. PGN grammar
13:30
timotimo grondilu: your grammar confuses me. what is this? < + ++ # > or this? < ?? ? !? ?! ! !! > 13:39
jnthn timotimo: A way of writing an alternation of literals 13:40
['+'|'++'|'#']
But readabler
timotimo oh
right, it's a list-of-strings, didn't realize that works like that 13:41
jnthn Key is the space after the < :)
timotimo aye
grondilu notice that there is the same notation used for pieces, files and ranks 13:43
< K Q R B N > and so on
timotimo right 13:44
i ought to remember that 13:45
smls How do I make a grammer automatically die with helpful error message when it can't parse the inout string? 13:50
grondilu probably with Grammar::Debugger 13:51
timotimo that's an interesting thought; if it fails to match, mix in the debugger hooks and try matching again?
grondilu (though personally I've never managed to make it work)
jnthn smls: If you want a helpful error you actually need to produce it.
Just like the Perl 6 grammar does.
smls y can't it produce it for me? :)
jnthn How the heck does it know how to? 13:52
smls tell how far it managed to match tokens, what followed, and what it expoected to follow
jnthn The best you can do in a generic way is just say "something when wrong at this point"
colomon_ which is still quite useful...
timotimo it would be interesting if the highwater stuff could be autogenerated for user grammars
jnthn True. That's doable with a [ $ || { die "Failed to parse at " ~ $/.CURSOR.pos } ] or some variant. 13:53
That pattern works in general, though
jnthn token foo { thing(s) that we should always match one of || error handling } 13:54
timotimo can we have something that generates an eject symbol stringie thingie? 13:55
jnthn timotimo: We actually do track that stuff anyway...
For all grammars. But it's not spec'd in any way.
zengargoyle my attempt at Text::Fortune works well enough and has enough tests to start trying to pretty it up for ecosystem maybe.
smls P5 Parse::RecDescent does it: metacpan.org/pod/Parse::RecDescent...r-handling
jnthn Hm, that looks like it is doing the same highexpect thing... 13:56
Well, I guess we can try to spec a way to expose that 13:57
But still, notice that the || <error> went explicitly into the grammar.
TimToady the fuzzy bits are what you do after that to "recover"
"find next semicolon and assume it's a new statement" 13:58
jnthn Well, that's the sorry/panic distinction in the Perl 6 grammar, I guess...
TimToady yes, we don't try to find the next statement when there's a parse error 13:58
jnthn Aye. Probably sane.
TimToady that usually just produces cascading, confusing errors
jnthn MSVC is incredibly bad at knowing when to give up.
TimToady and if the parser is fast enough, you just fix the one and re-run 13:59
TimToady and if you find another such, assume there's a trend and fix all of 'em 13:59
trying to find more errors is a vestige of the days of punch cards and line printers 14:00
of course, if we just have a semantic error, we just worry and keep going 14:01
jnthn Anyway, we could expose the highexpect, but half the time I find its suggestions to be better at bulking up the error report than helping me know what's wrong...normally it's the message and the position indicator that help most. 14:03
TimToady well, worry or sorry
well, I think people learn to ignore the bits of it that don't apply 14:04
jnthn But given it's tied into the LTMer, I kinda had to put that stuff in Cursor, and so we do actually track highwater and highexpect for everything we parse...
...so if we can pick an API it's no problem to expose that.
Apart from it commits us to continue collecting the info :)
smls or make it a flag: Gramma.parse($input, :show_errors) 14:05
timotimo hmmm 14:05
smls or :fatal-errors 14:06
Also, what's the easiest way to get the line number at the cursor position? 14:07
timotimo it's a hard problem 14:11
in nqp and rakudo we read the whole file in and note the positions of newlines in a list
moritz $/.prematch.comb("\n").elems + 1 14:12
timotimo oh, that's not bad 14:12
moritz it's not fast either :-)
if you only need it for error messages, I guess that's fine 14:13
timotimo if you only do it once, it shouldn't be much slower than what we do
moritz in rakudo, we put line annotation in every statement or expression, which means we need that number *very* often, and caching it is crucial
timotimo aye 14:14
FROGGS m: use HLL::Compiler:from<NQP>; say HLL::Compiler.lineof("abc\ndef", 5);
camelia rakudo-moar cce7f9: OUTPUT«===SORRY!===␤While looking for 'HLL/Compiler.moarvm': no such file or directory␤»
FROGGS m: use NQPHLL:from<NQP>; say HLL::Compiler.lineof("abc\ndef", 5);
camelia rakudo-moar cce7f9: OUTPUT«2␤»
FROGGS \o/
timotimo ooooh, :from<NQP>
i forgot that already works
FROGGS smls: it is not really Perl 6, but it works on rakudo :o) 14:15
timotimo seems like even though we said "multiple implementations yay" at one point, that's kinda not the way it is any more 14:16
FROGGS timotimo: which is good I think
smls I think I'll go with moritz++ suggestion :)
FROGGS I mean, it is not like there is a race between several groups of like 30 devs each 14:17
moritz FROGGS: when niecza came up, we were very happy about modules that didn't use rakudo-isms 14:19
I'd like to keep it that way, to not raise the burden for new implementations (or a niecza or pugs revival) even higher
FROGGS moritz: yes, there are several benefits of having more than one impl
I just don't see it as a priority anymore
smls moritz: So what should become of modules like NativeCall which need NQP? 14:20
jnthn I'd like to keep it that way for another reason: I don't want to get Rakudo to a point where I can't refactor nqp::foo or NQP related things without breaking userland code.
FROGGS smls: the other implementations should expose an NativeCall-like interface
jnthn smls: NativeCall arguably should be "in core"...
smls I guess
zengargoyle that was my beef with old Rosetta Code examples, comments along the lines of "this is for parrot/niecza" 14:21
FROGGS zengargoyle: but that is not because it uses compiler internal stuff, this is because the needed things are only implemented on a few compilers 14:21
that'S a difference
smls: so scratch my proposal and do not use the nqp module :o) 14:22
FROGGS you might even have precomp problems when using it 14:23
FROGGS even in Perl 5 there are ppl who prefer pure Perl 5 modules over XS-based, and they only have one compiler 14:25
so sticking to pure&proper Perl 6 is the way to keep things working 14:26
smls yeah +$/.prematch.comb(/$$/) works fine 14:27
zengargoyle is using /$$/ a better idea in general than "\n"? 14:28
smls it means the number will start from 1 not 0 :) 14:29
Is there still a shorthand for die'ing without a backtrace, like « die "Message\n" » in P5? 14:30
Or is it « say "Message"; exit 1 » now?
zengargoyle i've been wondering how IO .get is handled, is everything massaged into "\n" on various platforms? 14:32
moritz smls: there isn't a shortcut (yet)
jnthn Also, probably wants to be note "Message" to get it on stderr 14:35
smls right 14:36
ChoHag Are there any modules with a half-decent or better set of tests I could plagiarise? 14:53
Now that I have something which works, I ought to try and keep it that way. 14:54
moritz lots of modules have tests :-)
for example JSON::Tiny
ChoHag Ah but how many have tests which would serve well as an example?
moritz how many? no idea 14:55
look at github.com/moritz/json/tree/master/t though
they aren't perfect, but they provide decent coverage
zengargoyle Test could use some documentation love. 14:58
moritz zengargoyle: you mean the Test module? 15:00
perlcabal.org/syn/S24.html exists, but yes, could use some love 15:01
contributions readily accepted. Hey, *your* chance to become co-author of a Perl 6 design document!
zengargoyle yes. sorta whole doc system... << perl6 --doc Test >> nor << p6doc Test >> get anything... :) 15:02
zengargoyle was truly just thinking about some POD for Test.pm (which the .pm also doesn't get installed, only the Test.mbc does, had to look in repository/lib/Test.pm) 15:04
zengargoyle is working on [email@hidden.address] 15:04
zengargoyle i really miss the ease of << perldoc Foo >> << perldoc -f foo >> which was pretty much how i learned Perl5. 15:08
ChoHag Hah! [Rendering of] S26, Documentation, is "known to be incomplete". 15:10
ChoHag zengargoyle: It wouldn't have worked so well for perl 1. 15:10
zengargoyle true, and i think part of the p6doc problem is that the p6 POD spec and tools was/are in sorta draft/NYI state. 15:11
and it's hard to write doc if the tools to use it aren't there yet. 15:12
zengargoyle remembers seeing some rogue *<> tags floating about in the doc.perl6.org pages 15:16
zengargoyle and noticing the lack of an easy to find link to faq.perl6.org 15:17
zengargoyle promises to get better at actually generating pull requests :)
ChoHag It's right there, two lines above this one.
smls maybe that should be moved to doc.perl6.org/language/faq 15:18
since it answers mostly language questions
(with "moved", I mean coverted to a p6doc POD) 15:19
masak considers .classify to be way underused 16:04
timotimo m: say "masak".comb.classify({ (^3).pick }) 16:06
camelia rakudo-moar cce7f9: OUTPUT«("0" => ["a", "s", "k"], "1" => ["a"], "2" => ["m"]).hash␤»
timotimo askam?
that's almost asakm, which would just be masak rotated once
m: say "masak".comb.classify({ (^3).pick(2) }) 16:07
camelia rakudo-moar cce7f9: OUTPUT«("0" => {"1" => ["m", "k"]}, "1" => {"0" => ["a"], "2" => ["a"]}, "2" => {"0" => ["s"]}).hash␤»
masak m: say "masak".comb.rotate.join
camelia rakudo-moar cce7f9: OUTPUT«asakm␤»
timotimo m: say "masak".comb.categorize({ (^3).pick(2) })
camelia rakudo-moar cce7f9: OUTPUT«("0" => ["m", "s", "a"], "1" => ["m", "a", "k"], "2" => ["a", "s", "a", "k"]).hash␤»
timotimo Ms. Amak Asak
masak categorizing on random stuff hadn't occurred to me.
but categorizing and binding can be highly useful.
m: my (@odd, @even) = (1..10).classify(* % 2); say @odd; say @even 16:08
camelia rakudo-moar cce7f9: OUTPUT«"1" => [1, 3, 5, 7, 9] "0" => [2, 4, 6, 8, 10]␤␤»
timotimo m: my (@odd, @even) = (1..10).classify(* %% 2); say @odd; say @even
camelia rakudo-moar cce7f9: OUTPUT«"False" => [1, 3, 5, 7, 9] "True" => [2, 4, 6, 8, 10]␤␤»
timotimo m: my \(@odd, @even) = (1..10).classify(* %% 2); say @odd; say @even
camelia rakudo-moar cce7f9: OUTPUT«===SORRY!=== Error while compiling /tmp/rzXqinR_xh␤Malformed my␤at /tmp/rzXqinR_xh:1␤------> my ⏏\(@odd, @even) = (1..10).classify(* %% 2␤ expecting any of:␤ scoped declarator␤»
timotimo m: my \(@odd, @even) := (1..10).classify(* %% 2); say @odd; say @even
camelia rakudo-moar cce7f9: OUTPUT«===SORRY!=== Error while compiling /tmp/oKLlj1fjyn␤Malformed my␤at /tmp/oKLlj1fjyn:1␤------> my ⏏\(@odd, @even) := (1..10).classify(* %% ␤ expecting any of:␤ scoped declarator␤»
timotimo i've done this once before 16:09
masak m: my (:@False, :@True) := (1..10).classify(* %% 2); say @Flase; say @True
camelia rakudo-moar cce7f9: OUTPUT«===SORRY!=== Error while compiling /tmp/VZOyurrSdl␤Variable '@Flase' is not declared. Did you mean '@False'?␤at /tmp/VZOyurrSdl:1␤------> := (1..10).classify(* %% 2); say @Flase⏏; say @True␤ expecting any …»
masak er.
m: my (:@False, :@True) := (1..10).classify(* %% 2); say @False; say @True
timotimo misses a \, no?
camelia rakudo-moar cce7f9: OUTPUT«1 3 5 7 9␤2 4 6 8 10␤»
masak \o/
timotimo ah, it doesn't
neato
i think with a pair notation we can also get the names of the arrays to stay "odd" and "even"
masak m: enum Parity <even odd>; sub parity($n) { $n %% 2 ?? even !! odd }; my (:@even, :@odd) := (1..10).classify(&parity); say @even; say @odd 16:11
camelia rakudo-moar cce7f9: OUTPUT«2 4 6 8 10␤1 3 5 7 9␤»
masak \o/
timotimo or that way
masak :)
ok, leaving for curry and beer not.
now*
timotimo m: enum Parity <enum odd>; say Parity(1);
camelia rakudo-moar cce7f9: OUTPUT«odd␤»
timotimo that is even easier
masak see you later, #perl6
timotimo than ?? !! for that
masak m: enum Parity <even odd>; sub parity($n) { Parity($n % 2) }; my (:@even, :@odd) := (1..10).classify(&parity); say @even; say @odd 16:12
camelia rakudo-moar cce7f9: OUTPUT«2 4 6 8 10␤1 3 5 7 9␤»
masak yes, a bit shorter.
smls added a parsing solution to rosettacode.org/wiki/Dinesman%27s_m...lem#Perl_6 16:13
comments/criticisms?
Other than "EVAL is evil". I could probably have used closured+currying instead, but it would have made the code much messier (and probably slower) 16:14
*closures
ren1us i suspect that i know the answer already, but am i responsible for garbage collection, or will rakudo handle that for me 16:21
moritz rakudo handles GC for you. 16:22
rurban the rakudo backends do
ren1us awesome, then i need to dig through my code to see why it's currently up to 4.2gb memory
this'll be fun lol 16:23
timotimo oh yikes 16:24
smls Does Perl 6 have built-in fork (on Unix)?
Or will it have?
timotimo you can fork with nativecall, but forking with a complicated VM is sometimes a very bad idea 16:25
ren1us just to make sure i'm not missing something, because i want to make sure i'm not thinking in terms of the wrong language
if i construct some big network of objects, that are all visible through one object, and that object falls out of scope, all the rest are automatically deallocated too, right? 16:26
(assuming no other references to them remain)
timotimo they should be, yes
are you on moarvm?
ren1us yeah 16:27
timotimo how long do those objects live?
ren1us assuming that the memory leak is where i think it is, they should exist only in one sub, so not very long
i don't suppose there are any profilers out there for p6 lol 16:28
oh wait i think i know what it is 16:29
damnit this is the problem with recursion lol
moritz there's no TCO in rakudo, afaict 16:31
timotimo right 16:32
i was about to suggest that all the objects may be promoted to the second generation, which doesn't shrink easily when objects die
ren1us you know what 16:41
i've been working on this for about 29 hours straight, i think it's time to sleep
'night 16:42
timotimo oh my 16:42
yes, that is a wise decision
moritz good night, and dream of recursive TCU 16:43
*TCO
vendethiel (what's non-recursive TCO ?) 16:45
moritz vendethiel: TCO! 16:46
vendethiel eh ? 16:46
psch hi #perl6 16:51
colomon_ o/
psch colomon_: \o
leaving out the explicit return in the golfed URI test-failure makes it run just fine, as i just found out 16:52
(i did find that out by looking at what is actually looked for with Ops.getlex, which was '&return') 16:53
psch the question probably remains the same though: why do symbols disappear (or something like that) 16:54
colomon_ is not quite awake enough to think about that, but psch++ 16:55
timotimo oi krunen, i got an hdmi adapter thingie that can be flexed to make a 90 degree angle that got left behind after the RaNIW and we think it was yours, did i already tell you about that? 17:07
colomon_ tadzik: X::AdHoc.new(payload => "Could not find LibraryMake in any of: /home/smoker/.rakudobrew/moar-HEAD/install/languages/perl6/lib, /home/smoker/.rakudobrew/moar-HEAD/install/languages/perl6/site/lib, /home/smoker/.rakudobrew/moar-HEAD/install/languages/perl6 /home/smoker/.rakudobrew/moar-HEAD/install/languages/perl6/site, .") returned from panda. but that should be a special panda error, right? 17:08
psch hrm, jdb is definitely lacking 17:43
zengargoyle hrm... is the S24-testing.pod the spec or is the rakudo/lib/Test.pm the actual spec? 17:51
zengargoyle i.e. things like <<plan *>> <<throws_ok()>> <<%*ENV<PERL6_TEST_TIMES>> etc. 17:52
tadzik colomon_: usually, yeah 17:54
what's LibraryMake?
timotimo it's a neat tool/library that makes it easier to ship .c code with your perl6 modules 17:55
tadzik nice 17:58
gtodd what is the facility in perl6 that obviates or replaces a lot of XS called NativeSomething argh 17:59
geekosaur zavolaj?
and NativeCall
gtodd NativeCall jeez
thanks
the existence of zavolaj destroyed my recall :) 18:00
gtodd I was watching the YAPC session on how easy it is to use FFI instead of XS how it might get even easier over time ... wanted to do a quick comparison 18:02
FROGGS gtodd: let me know about absurdities you hit, I am working on NativeCall right now 18:06
gtodd heh 1. it seems way too easy :) ... it must be a trick 18:07
FROGGS :o)
gtodd: easy things really are easy (and do work) 18:08
I am failing though to return a list of structs right now for example
gtodd I guess some C apps surround themselves with protection against this kind of this .... eg I won't bother trying to use perl6 to script chrome :) 18:09
gtodd ahah! PerlGameDev/SDL6 18:14
FROGGS ewww, don't look at that code! 18:15
its ugly, we have now better ways to write it
gtodd hehe still though 18:18
it looks like I do strings /usr/local/lib/libSDL2-2.0.so.0 | grep ^SDL_ > MySDL.pm6 .... then go back and fill in a few things ... waah??
"fill in a few things " :-)
FROGGS hehe
lol
*g* 18:19
zengargoyle does the general contributing workflow go like: fork github repo; create topic branch; hack...; rebase as needed; submit github pull-request
FROGGS I have to clean my SDL6 up when the nativecast lands... then it will actually work again
zengargoyle: yes
zengargoyle thinking about stealing p5 Test::* docs into p6 rakudo/lib/Test.pm as appropriate. 18:20
gtodd FROGGS I assume strings /usr/local/lib/libperl.so > p5.pm6 has been tried :) 18:22
FROGGS you could call that blitzkost I think 18:23
gtodd (strings /usr/local/lib/perl5/5.20/mach/CORE/libperl.so )
FROGGS of course some fruit always hangs lower than others 18:24
colomon_ complete smoke test on moar! \o/ 18:25
gtodd !
FROGGS \o/
retupmoca colomon_++
gtodd is that in a branch or ... 18:28
colomon_ results now visible at host07.perl6.com:8080/report # moritz++ 18:36
sergot FROGGS++ 18:38
# for helping me with moar and nativecall stuff
timotimo sergot++ for handling a quite important GSoC project 18:39
moritz colomon_++ 18:40
colomon_: how much of that is automated now?
timotimo host07.perl6.com:8080/report/ - could this be made a redirect instead of a 404? 18:41
gtodd camelia: are you there?
moritz m: say 'yes'
camelia rakudo-moar cce7f9: OUTPUT«yes␤»
psch moritz++ # faster than me
moritz timotimo: github.com/colomon/SmokeResults has the code 18:42
timotimo: (and if you don't want to patch it, you could open an issue)
psch colomon_++ moritz++ # smoke results online
moritz it seems that the detail pages are all 500er
colomon_ moritz: we've also got an issue where cle… right
moritz like host07.perl6.com:8080/project/Inline
colomon_ I think that means it's not getting through to Dancer? 18:43
moritz it gets to dancer
timotimo er
it says "powered by dancer"
so ...
moritz the error page even says "pow... "what timotimo said
colomon_ true 18:44
hmmm
moritz _censor given incorrect input: at /usr/local/share/perl/5.14.2/Dancer/Handler.pm line 107
Can't exec "panda": No such file or directory at (eval 83) line 109.
colomon_ moritz++
moritz I think those two are unrelated
colomon_ can't exec panda is the problem
moritz colomon_: fwiw as user 'emmentaler', you can say 'tmux attach' to get the console with the errors
colomon_ it uses panda to get the information on the module
moritz colomon_: and ctrl+b d to get out of tmux again :-) 18:45
colomon_ btw, I set up a public key there so I can log into emmentaler from the smoker account on my Linux box
so for the time being we can just scp the results from running it there
colomon_ is going to go ahead and try to build rakudo moar there now 18:46
gtodd does one need to use a Bag to simulate 5 rolls of 2 die(dice)? or is a list good enough ? 18:52
wait can I roll on two lists at once?
hrrmm .... say roll 5, < 1 2 3 4 5 6>
psch m: (1..6 X 1..6).pick.say 18:54
camelia rakudo-moar cce7f9: OUTPUT«1 1␤»
moritz m: say (1..6).roll(2)
camelia rakudo-moar cce7f9: OUTPUT«1 6␤»
moritz m: say (1..6).roll(5) 18:55
camelia rakudo-moar cce7f9: OUTPUT«4 1 5 6 5␤»
colomon_ a list is fine 18:56
gtodd ok when I play monopoly I get told to roll both die at once not one after the other ;-)
psch right, roll isn't pick
colomon_windows have managed to make my MBP run very slow at the moment, switching over to windows box so I can contribute to the conversation. 18:58
roll is named roll precisely because it is like rolling dice 18:59
timotimo and pick is named pick precisely because it is like picking pickles out of a jar
moritz how pickturesque :-) 19:00
gtodd :P 19:03
timotimo puns that are easy to pick up; it's how we roll. 19:04
pick up on*
colomon_windows moritz: okay, I've built panda and added rakudobrew to the path. 19:06
which works great for using panda from the command line
but doesn't seem to be helping the SmokeResults
gtodd ok I think I cut and pasted and changed this (i.e. it's my fault) from the interweb long ago: perl6 -e 'for (1..10) { my $b = { 1 => 2, 2 => 2, 3 => 2, 4 => 2, 5 => 2, 6 => 2 }.BagHash; $b.roll(2).say}'
but since it has no real mathematical or set theory or advanced perl6 IRC channel justification ... :) 19:07
say (1..6).roll(2) it is
moritz colomon_windows: the plack server doesn't yet see the updated path 19:08
colomon_windows moritz: is there an easy way to update that? 19:12
moritz colomon_windows: what should the new path look like
gtodd hmmm for (1..10) { say (1..6).roll(2) }# \o/ ..... for (1..10){ say (1..6).roll(2) } # :-( cack! lack of whitespace killed the perl 19:13
I must remember that :)
colomon_windows moritz: it needs to have /home/emmentaler/.rakudobrew/bin in it
I've put that first (as tadzik++ instructs) but I don't know how important that is 19:14
moritz server restarted, with different $PATH 19:17
cognominal A segmentation fault with rakudo on MoarVM and some questions. gist.github.com/cognominal/f1cc48cab3ca8bed4257
colomon_windows moritz: and now it works! moritz++ 19:18
cognominal this is unfinished code, but it already exhibits interesting problems as it is. 19:19
gtodd wow it seemed like say (1..6).roll(2) didn't replace ... it took me 100 rolls to get a double ... in monopoly I roll doubles 3 in row all the time (you go to jail if you do that) 19:21
psch cognominal: i think you need a default block in your CATCH 19:22
cognominal ...on a macbook with OSX 10.9.3 if this matters
moritz m: my $d = 0; for ^1000 { my ($a, $b) = (1..6).roll: 2; ++$d if $a == $b }; say $d 19:23
camelia rakudo-moar cce7f9: OUTPUT«161␤»
moritz m: say 1000 / 6;
camelia rakudo-moar cce7f9: OUTPUT«166.666667␤»
moritz gtodd: looks pretty much expected
gtodd yeah ... it's one of those human brain expectation things
moritz: or the fact that I spend so much time in jail in monopoly 19:24
cognominal psch, good ... CATCH. I need a default { } to avoid the exception to be rethrown 19:25
dwarring lizmat++, but I've still got some hash confusion... 19:33
r: my $x = {a => 1, b => 2}; my %h = %$x; say @$x
camelia rakudo-jvm cce7f9: OUTPUT«"b" => 2 "a" => 1␤Saw 1 call to deprecated code during execution.␤================================================================================␤%h = { ... } called at:␤ /tmp/tmpfile, line 1␤Please use %h = ... instead.␤----------------------…» 19:34
..rakudo-{parrot,moar} cce7f9: OUTPUT«"a" => 1 "b" => 2␤Saw 1 call to deprecated code during execution.␤================================================================================␤%h = { ... } called at:␤ /tmp/tmpfile, line 1␤Please use %h = ... instead.␤------------…»
dwarring r: my $x = {a => 1, b => 2}; my %h = @$x; say @$x
camelia rakudo-jvm cce7f9: OUTPUT«"b" => 2 "a" => 1␤»
..rakudo-{parrot,moar} cce7f9: OUTPUT«"a" => 1 "b" => 2␤»
dwarring I guess I expect %$x to flatten (which it isn't) 19:35
TimToady looks like a bug to me 19:36
colomon_windows m: say ((1..6).roll(2) xx 100).grep(* == *) 19:38
camelia rakudo-moar cce7f9: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in block at /tmp/efvMlGZ2aK:1␤␤»
dwarring ok I'll put in an RT and some tests
TimToady m: say ((1..6).roll(2) xx 100).lol.grep(* == *) 19:39
camelia rakudo-moar cce7f9: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in block at /tmp/xqIoWg4JFP:1␤␤»
TimToady m: say ((1..6).roll(2) xx 100).tree.grep(* == *)
camelia rakudo-moar cce7f9: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in block at /tmp/netxWdU6Pm:1␤␤»
TimToady m: say ((1..6).roll(2) xx 100).list.grep(* == *)
camelia rakudo-moar cce7f9: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in block at /tmp/cNzXi8pKX8:1␤␤» 19:40
colomon_windows TimToady: I'm thinking grep is hardwired to only pass one element at a time
TimToady hmm, likely
colomon_windows m: say ((1..6).roll(2) xx 100).grep(* == 3)
camelia rakudo-moar cce7f9: OUTPUT«3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3␤»
colomon_windows yeah
TimToady m: say ((1..6).roll(2) xx 100).map: { $^a == $^b ?? $a !! () } ) 19:41
camelia rakudo-moar cce7f9: OUTPUT«===SORRY!=== Error while compiling /tmp/S8kOxOU396␤Unexpected closing bracket␤at /tmp/S8kOxOU396:1␤------> xx 100).map: { $^a == $^b ?? $a !! () } ⏏)␤»
TimToady m: say ((1..6).roll(2) xx 100).map: { $^a == $^b ?? $a !! () }
camelia rakudo-moar cce7f9: OUTPUT«1 5 5 4 1 5 5 1 6 2 3 2 1 3 4 5 1 2 1␤»
colomon_windows TimToady++ 19:42
m: say +((1..6).roll(2) xx 100).map: { $^a == $^b ?? $a !! () }
camelia rakudo-moar cce7f9: OUTPUT«100␤»
colomon_windows "\
:\
TimToady m: say ((1..6).roll(2) xx 100).map: { $^a == $^b ?? $a !! () }.list.elems
camelia rakudo-moar cce7f9: OUTPUT«No such method 'count' for invocant of type 'Int'␤ in method reify at src/gen/m-CORE.setting:7677␤ in method reify at src/gen/m-CORE.setting:7589␤ in method reify at src/gen/m-CORE.setting:7589␤ in method reify at src/gen/m-CORE.setting:7589␤…»
TimToady m: say ((1..6).roll(2) xx 100).map({ $^a == $^b ?? $a !! () }).list.elems 19:43
camelia rakudo-moar cce7f9: OUTPUT«100␤»
colomon_windows not filtering out () ?
TimToady m: say ((1..6).roll(2) xx 100).map({ $^a == $^b ?? $a !! () }).perl
camelia rakudo-moar cce7f9: OUTPUT«((), 4, (), (), (), (), (), (), 1, (), (), (), 3, (), 4, (), (), (), (), (), (), (), (), (), (), (), (), 2, (), 4, (), (), 3, (), 1, (), (), (), (), (), 5, 1, (), (), (), (), 2, (), (), (), (), (), (), (), (), 4, 4, (), 5, 1, (), (), 4, (), (), (), (), (),…»
TimToady m: say ((1..6).roll(2) xx 100).map({ $^a == $^b ?? $a !! () }).list.perl
camelia rakudo-moar cce7f9: OUTPUT«((), (), (), (), (), (), (), 5, (), (), (), 5, (), (), (), 1, (), (), (), 1, (), (), (), (), (), 6, 5, (), (), (), (), (), (), (), 2, 2, 2, (), (), (), (), (), (), 1, (), (), (), 1, (), (), (), (), (), 4, (), 1, (), (), (), (), (), (), (), (), (), (), (), …»
dwarring lizmat++ for uncovering %$x bug 19:44
TimToady m: say (list ((1..6).roll(2) xx 100).map({ $^a == $^b ?? $a !! () })).perl 19:45
camelia rakudo-moar cce7f9: OUTPUT«((), (), 6, (), (), 3, (), (), (), 6, 2, (), (), 2, (), 5, (), 1, (), (), (), (), (), (), 4, (), (), (), (), (), (), 5, (), (), (), (), (), (), 5, (), (), (), (), (), (), (), 1, (), (), 1, 4, (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), …»
TimToady that's just wrong
colomon_windows m: say ((1..6).roll(2) xx 100).map({ $^a == $^b ?? $a !! () }).grep( *.defined ).perl
camelia rakudo-moar cce7f9: OUTPUT«(4, 4, 6, 6, 5, 1, 2, 3, 3, 6, 2, 4, 2, 1, 2, 5).list␤»
timotimo m: .say for ((1..6).roll(2) xx 100).map({ $^a == $^b ?? $a !! () })
colomon_windows m: say ((1..6).roll(2) xx 100).map({ $^a == $^b ?? $a !! () }).grep( *.defined ).elems
camelia rakudo-moar cce7f9: OUTPUT«2␤4␤2␤1␤5␤2␤5␤1␤4␤1␤3␤1␤5␤3␤5␤2␤6␤4␤3␤»
rakudo-moar cce7f9: OUTPUT«19␤»
colomon_windows 19 doubles out of 100 rolls is pretty normal
should be ~16 ideally...
m: say ((1..6).roll(2) xx 1000).map({ $^a == $^b ?? $a !! () }).grep( *.defined ).elems 19:46
moritz m: say (flat ((1..6).roll(2) xx 100).map({ $^a == $^b ?? $a !! () })).perl
camelia rakudo-moar cce7f9: OUTPUT«163␤»
rakudo-moar cce7f9: OUTPUT«(3, 1, 6, 4, 5, 1, 4, 5, 3, 6, 6, 5, 4, 2, 3, 2, 6, 5, 2, 3).list␤»
TimToady m: my @a; @a.push: ((1..6).roll(2) xx 100).map({ $^a == $^b ?? $a !! () }); say @a.elems
moritz colomon_windows: I think TimToady++ meant list() not flattening out the ()
camelia rakudo-moar cce7f9: OUTPUT«13␤»
colomon_windows moritz: right, I knew that, I was just finishing my original thought.
moritz but list() isn't flat()
TimToady well, maybe list doesn't commit between slurpy and lol
TimToady okay 19:47
TimToady hopes to wake up from his nap soon 19:48
say <a b c>.WHAT 19:49
timotimo damn, am i existing only in someone's dream *again*? 19:50
TimToady m: say <a b c>.WHAT
camelia rakudo-moar cce7f9: OUTPUT«(Parcel)␤»
TimToady m: say <a b c>.list.WHAT 19:50
camelia rakudo-moar cce7f9: OUTPUT«(List)␤»
TimToady m: say <a b c>.flat.WHAT
camelia rakudo-moar cce7f9: OUTPUT«(List)␤»
gtodd TimToady: camelia is going to come alive and challenge us all to craps 19:53
and we are going to lose ...
colomon_ 's only useful craps-playing ability is to be able to (badly) sing the craps songs from Guys and Dolls and Porgy and Bess. 19:58
pippo m: my $cmd = 'ls'; qx/$cmd/; 20:08
camelia rakudo-moar cce7f9: OUTPUT«qx, qqx is disallowed in restricted setting␤ in sub restricted at src/RESTRICTED.setting:1␤ in sub QX at src/RESTRICTED.setting:9␤ in block at /tmp/dANCryb6Hd:1␤␤»
pippo Hello perl6. How can I get a variable interpolated into qx/.../ ? 20:09
TimToady use qqx instead 20:10
timotimo aye, or use q:x:c and wrap the variable in { }
pippo TimToady: timotimo: thank you!
dalek ast: fcf699a | (David Warring [email@hidden.address] | S02-types/flattening.t:
test @ % flattening of arrayrefs and hashrefs
20:53
timotimo what, arrayrefs? hashrefs?
dwarring yup!! 20:58
exposed by lizmat's fix
was there before, but counteracted by the other bug 20:59
timotimo aren't we past that?
dwarring is my terminology wrong? 21:00
timotimo possibly; please explain to me what it means in this case?
jnthn We don't really have a concise alternative terminology 21:01
I could say "itemized hash" or "itemized array" perhaps
dwarring $x = [1,2,3]; # hashref
jnthn I hope you meant arrayref :P
timotimo what, there's no hash in there
dwarring ah yes
jnthn
.oO( or itemized array :P )
I don't mind folks calling it arrayref/hashref, tbh. Mostly 'cus I don't have a better suggestion :) 21:02
dwarring $hashref = {a => b}; $arrayref = [1,2]
timotimo arrayref and hashref calls some really bad thoughts into my head :P
geekosaur sounds p5-y 21:05
FROGGS it is
dwarring is it better to say 'itemized' array/hash?
FROGGS this would be more correct
timotimo i'd prefer that, but i've never p5'd 21:06
FROGGS but ~ref isnt that bad
timotimo how is %hash = { a => "b" }; not also a hash ref? :P
everything ref's in perl6
.o( refs? )
masak 'night, #perl6 21:08
FROGGS nice, I can precompile Archive::Tar noe 21:08
now*
jnthn yays 21:09
timotimo oh, that's good. but what changed?
FROGGS my code :P
timotimo ah, hehehe
FROGGS see github.com/FROGGS/p6-Archive-Tar/c...655e681524
timotimo oh, that's an interesting pattern 21:10
FROGGS fault5 here shows the use-use-require bug: github.com/FROGGS/frame_inc
I hope I do not get slapped by TimToady for that 'BEGIN try require' :P 21:11
jnthn wishes "use-use-require" didn't immediately play in his head as an awful cover of "ice-ice-baby" 21:17
FROGGS *g*
ahhh, tssss
timotimo in my head, it doesn't sound similar enough 21:18
dalek ast: f08c5ba | (David Warring [email@hidden.address] | S02-types/flattening.t:
terminology arrayref => itemized array etc
21:22
timotimo thank you :) 21:23
dwarring np :)
pippo good night perl6! 21:26
colomon_ okay, for now module smoke tests run in rakudo-m on my linux box and the results are automatically uploaded to host07.perl6.com:8080/report 21:44
carlin oh :( Crypt::Bcrypt is failing 21:46
hmm, failing prereqs but NativeCall and LibraryMake are passing... 21:47
colomon_: what backend is used?
colomon_ carlin: moat 21:48
moar
carlin hmm, that should be working
colomon_ In this case I think failing prereqs may mean panda was fatalling confused
carlin ah
jnthn X::IO::Dir.new(path => "/home/smoker/emmentaler/.panda-work/1404422275_363", os-error => "Failed to open dir: 2") 21:49
colomon_ or rather, to be more precise, non-Panda error
carlin a case of pandamonium
jnthn yeah, that looks...curious...
colomon_ so the smoker doesn't know what stage it failed in.
colomon_ hmm, it does build successfully for me with a different account on the same box 21:53
colomon_ luckily has gotten much better at running emmentaler on a small subset of the full list of projects 21:53
timotimo these OS Errors could really get a little more specific as to what those numbers mean ... 21:53
timotimo "perl6 is all about good error messages. except all errors that come from the OS. you need man pages from random syscalls for those. which syscall? i don't know, better check all of them to be sure!" 21:53
jnthn timotimo: Yeah...should be a way to make it into a string. 21:55
psch gist.github.com/peschwa/e5aee72dcce9d4b60ec1 # some jdb-output, if anyone has an idea 22:07
afaiu, the outer chain seems to look ok
is '&return' a sensible target for a static lookup?
colomon_ carlin: gist.github.com/colomon/3e1199d6086e981716c8 22:08
jnthn yes, it should find it in the setting
which is an outer scope 22:09
psch i also noticed that the &return call in line 22 of the first file isn't the only thing that breaks, &die breaks in the same spot as well
psch jnthn: the setting is outer from GLOBALish? 22:11
i.e. i was wrong and the outer chain breaks (at least) one element before it should? 22:12
psch also, tc.curFrame.oLex has a null element where i think $*DISPATCHER should be, i don't know if that's significant 22:15
carlin colomon_: it says it installed LibraryMake in /home/smoker/emmentaler/installlib/lib/ but in the error it doesn't seem to be looking for deps in that directory :s 22:18
colomon_ yes 22:19
colomon_ carlin: I wonder if the problem is in calling your Build.pm 22:26
Yeah, I'm betting that's it. 22:32
colomon_ github.com/tadzik/panda/blob/maste...der.pm#L57 22:33
carlin Auth::Pam::Simple which uses LibraryMake seems to have the same problem 22:34
colomon_ yes
carlin are installed deps not being made available during Build time
colomon_ I think they're not being made available during Build.pm time
colomon_ if you look at the code at that link above, it requires Build.pm right into the executing copy of Panda. But I think (though possibly I'm wrong) it doesn't do anything to make sure the current panda can see the emmentaler install directory 22:37
jnthn psch: GLOBALish isn't a lexical scope 22:49
psch: Though UNIT is, and the UNIT scope contains GLOBALish. There should be one more scope beyond that.
psch jnthn: right, so i have confirmed your first hunch with some 6 hours of jdb debugging :) 22:50
let's see how long it takes me to find out what to do where to try and repair it! 22:51
jnthn Last time I saw an issue like this, it related to github.com/rakudo/rakudo/blob/nom/....nqp#L1686 22:54
The comment there is actually oudated, though; the JVM is also using the same codepath as Moar there these days.
jnthn oh, and the other place was github.com/rakudo/rakudo/blob/nom/...r.nqp#L298 22:56
psch thanks, i'll look around from there tomorrow and see if i can do anything about this 22:57
for today it's good night o/
jnthn OK; thanks for looking at it 22:58
'night
jnthn gets some rest also 23:09
lizmat made it to London but spent too much time in pubs there to make any sense anymore right now 23:54