»ö« 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.
00:02 bkbk left
timotimo oh yes! i made it work! 00:02
the diff is scary-small. but i didn't put the changes to the perl6 script in yet
someone needs to do the equivalent changes for windows 00:03
oh my, the create-jvm-runner script is daunting 00:05
TimToady rn: say map { $_.substr(0, *-2) => $_.substr(1) }, <foo bar>; 00:07
camelia niecza v24-88-g1f87209: OUTPUT«Unhandled exception: Unable to resolve method substr in type Any␤ at /tmp/3AMUsXB1zx line 1 (ANON @ 4) ␤ at /tmp/3AMUsXB1zx line 1 (mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4579 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting l…
..rakudo 45fb1b: OUTPUT«"f" => "oo" "b" => "ar"␤»
TimToady rakudo (and niecza) should be recognizing the implicit reference to $_ by .substr, methinks 00:09
timotimo hey TimToady. froggs and me were discussing wether or not <-[@arr]> should throw "null regex not allowed" if @arr happens to be empty; or wether or not <-[]> should throw that, too.
00:11 Pleiades` left 00:15 mst___ is now known as mst, mst left, mst joined
TimToady what makes you think you can interpolate an array there? 00:15
btw, S04:1639 on the issure of .substr implying use of $_ to suppress hash composing 00:16
synopsebot Link: perlcabal.org/syn/S04.html#line_1639
timotimo froggs suggested i could 00:17
i didn't know better :)
TimToady <-[abc]> treats abc as a list literal chars, so <-[@arr]> would match @, a, or r
should probably warn on the duplicate r too 00:18
timotimo okay, that's sensible
00:19 Pleiades` joined
TimToady nr: say "I am an @array!".comb(/<-[@arr]>/) 00:19
camelia rakudo 45fb1b, niecza v24-88-g1f87209: OUTPUT«I m n y !␤»
TimToady nr: say "I am an @array!".comb(/<-[@arr]>/).join
camelia rakudo 45fb1b, niecza v24-88-g1f87209: OUTPUT«I m n y!␤»
timotimo depart& 00:21
00:54 berekuk left 01:40 FROGGS_ joined 01:44 FROGGS left 01:54 BenGoldberg joined 02:20 Ben_Goldberg joined 02:22 fridim_ left, BenGoldberg left 02:25 BenGoldberg joined, btyler joined 02:27 Ben_Goldberg left 02:45 skids joined 02:52 orafu left 02:53 OuLouFu joined, OuLouFu is now known as orafu 02:55 Pleiades` left 02:57 Pleiades` joined 03:00 PacoAir joined 03:03 PacoAir left 03:04 PacoAir joined 03:09 PacoAir left 04:16 BenGoldberg left 04:29 Psyche^ joined, btyler left 04:32 Psyche^_ left 04:50 birdwindupbird joined 05:09 Woodi joined 05:33 xilo left 05:47 SamuraiJack joined 05:56 abnorman left 06:08 benabik left 06:15 kingbeast left 06:45 kaleem joined
FROGGS_ TimToady: is /<-[]>/ supposed to throw a "Null regex not allowed" ? 06:49
06:50 FROGGS_ left 06:57 avuserow left 06:58 avuserow joined, iSlug joined 07:09 jtpalmer_ joined, anocelot joined, rhr joined 07:11 FROGGS joined 07:13 iSlug left 07:14 jtpalmer left, anocelot_ left, rhr_ left 07:20 iSlug joined, iSlug left, iSlug joined 07:26 sqirrel joined 07:59 domidumont joined 08:05 Rotwang joined 08:06 daxim joined 08:07 benabik joined 08:08 fhelmberger joined 08:13 fhelmberger left 08:19 donaldh left 08:22 domidumont left 08:23 berekuk joined, donaldh joined, fhelmberger joined 08:24 domidumont joined, berekuk left 08:25 berekuk joined
mathw o/ 08:26
08:28 fhelmberger left 08:30 fhelmberger joined 08:34 fhelmberger left, dakkar joined, fhelmberger joined 08:35 dayangkun joined 08:36 dayangkun left
JimmyZ hello 08:39
moritz \o JimmyZ, mathw, * 08:40
08:41 donaldh left
mathw lo moritz, JimmyZ 08:41
08:47 DrEeevil joined, bonsaikitten left 08:48 robinsmidsrod left, robins joined 08:49 robins is now known as robinsmidsrod, Myk267 joined 08:50 donaldh joined 09:02 Rotwang left 09:06 donaldh left
hoelzro holy crap do I love Perl 6 regexes. 09:13
that is all. 09:14
mathw :) 09:18
hoelzro does Parcel not support {}? 09:25
I'd like to extract a sub-sub-match ($<timespec><hours><value>) 09:26
09:28 eternaleye left
hoelzro (here's the source code: gist.github.com/hoelzro/6019135) 09:30
09:31 donaldh joined
moritz Parcel is purely positional 09:34
hoelzro: note that rakudo is behind the time here (more) 09:35
<hours>?
that's a quantifier
so rakudo, by old spec, generates a List (or Parcel) of matches here
new spec says that ? is special cased, and create a sub-Match right away
hoelzro but it *should* be generating something that supports {}?
<hours>? doesn't mean "optionally match the hours regex"? 09:36
moritz that's what I'm just telling you
it does
so it's a 0 or 1 quantifier
hoelzro oh, ok
good
moritz and it used to be that all quantifiers generated lists
hoelzro I see
soo...I have to access sub-sub-matches by index, then? 09:37
moritz $<hour>[0]<your submatch here> 09:38
hoelzro I see 09:39
moritz and if you change the ? to a **0..1 then your code won't break when rakudo adapts to the new specs 09:42
hoelzro hmm
so under the new specs, how will it change? just $<hour><value>? 09:43
FROGGS ? is not a list quantifier anymore... it was changes in march or april in nqp/rakudo 09:46
nr: say "abc" ~~ /$<hour>=[ \w ]?/ # there is no zero as a key 09:49
camelia rakudo 45fb1b, niecza v24-88-g1f87209: OUTPUT«「a」␤ hour => 「a」␤␤»
FROGGS nr: say "abc" ~~ /$<hour>=[ \w ]**0..1/ # compared to this
camelia rakudo 45fb1b, niecza v24-88-g1f87209: OUTPUT«「a」␤ hour => 「a」␤␤»
FROGGS ?
09:53 eternaleye joined
FROGGS r: my regex value { \w }; my regex hour { <value>**0..3 }; "abc" ~~ /<hour>?/; say $<hour>[0] # this shows it 09:54
camelia rakudo 45fb1b: OUTPUT«(Any)␤»
FROGGS r: my regex value { \w }; my regex hour { <value>**0..3 }; "abc" ~~ /<hour>**0..1/; say $<hour>[0] # this shows it
camelia rakudo 45fb1b: OUTPUT«「abc」␤ value => 「a」␤ value => 「b」␤ value => 「c」␤␤»
FROGGS but I am curious why this doenst give an array: 09:55
r: "abc" ~~ /$<hour>=[ \w ]**0..1/; say $<hour>[0]
camelia rakudo 45fb1b: OUTPUT«(Any)␤»
FROGGS r: "abc" ~~ /$<hour>=[ \w ]**0..1/; say %<hour> # rakudobug me thinks 09:57
camelia rakudo 45fb1b: OUTPUT«「a」␤␤»
FROGGS r: "abc" ~~ /$<hour>=[ \w ]**0..1/; say @<hour> # rakudobug me thinks
camelia rakudo 45fb1b: OUTPUT«「a」␤␤»
FROGGS r: "abc" ~~ /$<hour>=[ \w ]**0..1/; say &<hour> # rakudobug me thinks
camelia rakudo 45fb1b: OUTPUT«「a」␤␤»
FROGGS std: "abc" ~~ /$<hour>=[ \w ]**0..1/; say &<hour> # rakudobug me thinks
camelia std c2215f0: OUTPUT«ok 00:01 46m␤»
hoelzro is there a builtin for executing an external command? like Perl 5's system()? 09:59
FROGGS r: qx(`ls`) 10:00
camelia rakudo 45fb1b: OUTPUT«===SORRY!===␤Unable to parse expression in argument list; couldn't find final ')'␤at /tmp/zDnqVAWTnI:1␤------> qx(⏏`ls`)␤ expecting any of:␤ argument list␤ prefix or term␤ prefix or meta-prefix␤»…
FROGGS r: qx(ls)
camelia rakudo 45fb1b: OUTPUT«===SORRY!===␤Undeclared routines:␤ ls used at line 1. Did you mean '&lc'?␤ qx used at line 1␤␤»
FROGGS hmmmm
hoelzro without slurping output?
10:02 berekuk left
FROGGS r: run("ls") 10:02
camelia rakudo 45fb1b: OUTPUT«run is disallowed in restricted setting␤ in sub restricted at src/RESTRICTED.setting:2␤ in sub run at src/RESTRICTED.setting:8␤ in block at /tmp/xwo8PhhFni:1␤␤»
FROGGS hoelzro: ^^
hoelzro ah, thanks!
FROGGS my qx() was bogus, it a sub call
10:10 berekuk joined 10:20 grondilu joined
grondilu How can I use a variable as a quantizer? my $k = 2; say "foo" ~~ / o ** $k /; # does not work 10:21
FROGGS grondilu: NYI 10:23
grondilu ahh, too bad :/
timotimo it's not much of a consolation, but you can create a new regex each time with eval or you can put an assertion after it that asks for the right amount :| 10:24
FROGGS r: my $k = 2; say eval "'foo' ~~ / o ** $k /"; # :/
camelia rakudo 45fb1b: OUTPUT«「oo」␤␤»
grondilu used that ^ 10:31
timotimo is cobbling together a "make install" target for jvm 10:32
10:43 Bzek joined
donaldh timotimo: I started looking at that too. 10:48
timotimo oh, how far along were you?
i'm able to execute the "perl6" script from anywhere now
tadzik AWW YISS 10:49
timotimo but it doesn't look into install/ and i'm pretty sure not everything that should be in there is yet
jnthn afternoon o/
donaldh timotimo: Updated ConfigureJVM.pl and started updating Makefile-JVM.in
timotimo oh, what did you hav eto do in ConfigureJVM.pl? 10:50
donaldh timotimo: absolute path references to nqp_prefix and reusing create_jvm_runner to put a runner with absolute paths in install/
jnthn timotimo: Note that (if you didn't already) NQP has a different runner in the build directory and in the install
donaldh jnthn: tho the need for differences is less in rakudo.
10:51 bruges joined
donaldh I wrote create_jvm_runner to be reusable when we need an install target. 10:51
jnthn OK, works for me :)
10:51 dmol joined
timotimo an important part of the whole thing was this patch: gist.github.com/timo/3976562cdf50eb045d98 10:51
donaldh timotimo: I guess you figured out how to get perl6 to work outside of build dir, yes?
timotimo yes, i did
donaldh blib needs to be on classpath 10:52
timotimo yes, but not only that
you also need --setting=$PREFIX/CORE
otherwise it won't find the setting
donaldh jnthn: any reason for using -Xbootclasspath/a ?
jnthn donaldh: Yes. 10:53
donaldh: Avoids an indy bug... :S
donaldh oh
I've been running core setting build from within Eclipse just using a normal classpath. 10:54
timotimo the classpath doesn't enter into it
oh, maybe the patch i linked above makes it work? hold on.
nope. it doesn't look in the right place unless you specify it 10:55
donaldh timotimo: I updated ConfigureJVM.pl to change $config{'nqp_prefix'} to an absolute path with Cwd::realpath
timotimo note that you have to actually execute some code like say "hi" in order for it to try to load the core setting 10:56
donaldh yep
timotimo and you were able to make it work without a --setting? 10:57
donaldh not sure, building
timotimo does the nqp_prefix actually land somewhere in the code itself?
otherwise i don't know how that's supposed to help 10:58
donaldh nqp_prefix gets substituted into NQP_PREFIX in the Makefile
Then when we create a jvm runner, it will include absolute paths to the NQP jars.
timotimo ah. yes, in my experience that's not enough 10:59
i'll point you at a bit of code, hold on
10:59 pecastro left
donaldh timotimo: I'm not saying it is enough :-) just that it's necessary 10:59
timotimo ah. yes indeed. 11:00
so, find_setting in ModuleLoaderVMConfig will look at the search paths, which default to . and blib/
with the patch i linked to above, it will also look into all the classpaths
donaldh I'm assuming that we don't want to copy the NQP references into rakudo install dir. After all, they are likely to be the same PREFIX.
timotimo so it's enough to add that patch i have above and add the absolute path to the directory that the .setting.jar is in to the classpath 11:01
that's right
donaldh wonders if using a PERL_HOME property would be better than overloading the classpath.
timotimo all you need to do to fix that is change vm_search_path in ModuleLoaderVMConfig.nqp and change the ModuleLoader to look there, too, for all the other things 11:02
you seem to be more knowledgable about this topic, so i'll gladly let you go ahead and propose a pull-request :) 11:03
donaldh :)
11:05 pecastro joined
timotimo if you have any more questions about my setup just let me know 11:05
donaldh wonders if we can reduce the duplication between ModuleLoader.nqp (nqp) and ModuleLoaderVMConfig.nqp (rakudo)
timotimo well, the VMConfig gets mixed into the ModuleLoader 11:06
oh, er 11:07
i should probably have read the part in the parens :)
donaldh gets confused by the duplicate filenames 11:10
timotimo: I'll propose a pull request later today. Will use your patch to vm_search_paths for now. 11:11
timotimo cool! :) 11:12
tadzik: have you been experimenting on panda on rakudo.jvm so far?
donaldh wonders where we should put CORE.setting.jar in the install dir 11:13
tadzik timotimo: not yet. How could I have run it without being able to run perl6 outside of rakudo directory? :) 11:14
timotimo massive cheating :) 11:16
copy all the contents of the rakudo directory into every directory that will ever be your cwd :)
tadzik aww :) 11:17
jnthn donaldh: The install directory may well need some more structure than it has today :) 11:18
donaldh jnthn: indeed 11:19
:)
jnthn Segregating .jars produced from NQP and those produced from Perl 6 code would be one way, since that's where the module loader boundaries are...
donaldh Is lib used for Perl 6 generated jars and blib for nqp generated jars ? 11:24
timotimo no 11:25
i don't think jars should go in lib
jnthn No, lib is Perl 6 source code for some modules that we include
timotimo doesn't "blib" mean "binary libs" or something?
as in "compiled"
moritz it does
jnthn oh...seems we do end up putting the jar in there too
timotimo yeah, we do:(
jnthn blib is where the compiler goes, though
Perl6::Grammar's JAR, etc. 11:26
donaldh tho afaik we never add lib to a search path
11:26 cognominal joined
jnthn Right, -Ilib is used 11:28
donaldh ah, I see, in t/harness
jnthn Note that on Parrot we have github.com/rakudo/rakudo/blob/nom/...fig.nqp#L2 and on JVM there's not an equivalent thing so far, iirc.
That is, adding a couple of search paths based on install location. 11:29
donaldh Okay, so should I look at the parrot layout and replicate that? 11:30
jnthn Perhaps somewhat, but note that we don't need to do all that complexity 11:31
For one, I don't think we need the version thing (which exists because bytecode is not compatible between Parrot versions, whereas JVM bytecode is stable). 11:32
But yeah, some kind of bin/ and lang/nqp/... and lang/perl6/... could work out.
donaldh notes that nqp install dir does not have bin/ 11:33
jnthn donaldh: Right, it's all flat today 11:35
11:36 amkrankruleuen joined, amkrankruleuen left, amkrankruleuen joined
donaldh I'll scrape around for tuits for an nqp patch too. 11:36
Am assuming that nqp and perl6 will likely end up in the same install PREFIX. 11:37
jnthn I think it's that way today on Parrot, at least. 11:38
donaldh do we have the equivalent of parrots %conf on JVM ? 11:39
11:39 colomon joined
jnthn There's an nqp::jvmproperties() op, iirc 11:40
11:41 benabik left
timotimo indeed, we currently use that to get the java.class.path, no? 11:41
11:41 benabik joined
FROGGS donaldh: github.com/MoarVM/MoarVM/commit/6b...f8abe9f5eb 11:42
that is for uname though
donaldh thx 11:43
11:43 dmol left 11:44 Bzek left
donaldh well there's nqp::jvmclasspath and nqp::jvmgetproperties - cool. 11:45
JimmyZ jnthn: ping
jnthn is investigating the wrap.t failure at the moment
JimmyZ: pong
JimmyZ jnthn: what's different between assignunchecked and assign? I can't see the difference in the codes 11:46
moritz would guess that assign does a type check, and assignunchecked doens't
jnthn What moritz said.
Also rw check.
JimmyZ didn't see the typecheck 11:47
jnthn Which container impl were you looking at?
They look different in Rakudo.
They probably don't for code_pair
JimmyZ jnthn: nqp on parrot
moritz I guess nqp doesn't do type checks on variables 11:48
(only on routine calls)
so they would be identical
JimmyZ well, I see they in 67-container.t
jnthn Well, nqp doesn't have scalar containers either really :) 11:49
code_pair is what is used to implement Rakudo's Proxy type.
JimmyZ the test has assignunchecked and assign
11:49 sqirrel left
JimmyZ so I'm confused 11:50
jnthn It's checking both ops exist, but I'm guessing for code_pair it isn't looking for them to behave differently.
timotimo hm. how do i apply a role { method IS_NODAL { True } } into a method from nqp code? i can't just $codeobj.HOW.mixin($codeobj, role { ... }), can i?
jnthn See container.c in Rakudo for an example where things differ.
timotimo: Well, if you do that you mix in an NQP role...when it probably should be a Perl 6 one. 11:51
timotimo indeed
jnthn timotimo: But don't do it this way
timotimo: I think we should keep it just as an integer flag on the routine. 11:52
timotimo maybe i should give Routine or perhaps Method an is_nodal
jnthn timotimo: We already have an int $!rw. But that only needs one bit; we can use that field more smartly as a general routine flags one.
timotimo i do that in BOOTSTRAP.pm i guess?
jnthn Yeah, could do.
timotimo ah. i can surely multipurpose that field
moritz (and rename it in the process) 11:53
timotimo yeah
and make extra sure it doesn't check for field-is-non-null where it should mask it first
jnthn yeah, it's checked in C code in some places (and Java code too) I think
JimmyZ jnthn: PMC *target = decontainerize(interp, $1); in set_invocation_spec and set_container_spec, Is it useless? Sorry, I'm a bit confused too... 11:54
:(
moritz why would it be useless?
if you do something like my $x = sub () { }; $x() 11:55
timotimo jnthn: i probably should define a name for the bit mask constants; where would i put something like that?
moritz it'll try to invoke the container
so you need to decontainerize to get the actual code object
JimmyZ moritz: because I'd not see target was used there
hmm, I just see the java one, it looks like not be used 11:56
moritz PMC *target = decontainerize(interp, $1); 11:58
if ($1->vtable->base_type == smo_id) {
11:58 rindolf joined
moritz it should probalby use target instead of $1 here 11:58
JimmyZ the jvm backend didn't use decontainerize
moritz: if so, there will a example code to explore this bug? 12:00
jnthn timotimo: You'll probably need to do 'em separately in the C/Java as well as in the NQP code... 12:12
timotimo: There's no "constant" decl in NQP just yet.
timotimo OK 12:14
what string do i have to search for to find mention of the rw field in the c and java code?
because just rw doesn't give me any of that
jnthn ->rw in the C code, perhaps 12:15
$!rw in the Java code
timotimo i'll have a few looks, thanks! 12:16
JimmyZ waits for jnthn++'s answer 12:17
jnthn JimmyZ: The use of $1 instead of target looks like a thinko; otoh, it's probably not likely we'll hit the issue... 12:18
timotimo there's a HINT_ROUTINE_RW, can i safely replace that with HINT_ROUTINE_FLAGS? i put the flags field in the very same spot the rw one was in in the bootstrap code
jnthn timotimo: yes
timotimo good 12:19
JimmyZ jnthn: so you'd like to remove that line?
jnthn JimmyZ: We can do. 12:20
JimmyZ good, thanks very much
jnthn grr...wrap.t has multiple different ways to go wrong, it seems
jnthn did fix one of them and is up to test 30 now... 12:21
12:22 skids left
[Coke] parrot release away. 12:22
timotimo jnthn: did you read the comments about invokedynamic? how much invokedynamic is in rakudo.jvm so far? because a friend of mine is working on this alternative jvm called "avian" that is currently able to run scala and if we get rid of invokedynamic (which is supposedly broken beyond repair at the moment anyway) we could try to get it to run on that as well :)
moritz huh, invokedynamic is broken? 12:23
jnthn timotimo: I did some benchmarks while adding invokedynamic, and it did help.
timotimo in java 7, it's usually slower than using reflection manually
jnthn timotimo: However, some usages of it that I'd expected might be faster were not, so it takes some care to work out where it helps or doesn't... 12:24
timotimo: It's almost certainly gonna have to improve in the next JDK 'cus they're using it for Java 8 lambdas.
timotimo i hear they are going for a complete rewrite of invokedynamic
jnthn Yes, my understanding was they were doing a re-implementation, but same API. 12:25
timotimo hopes a full spectest will bring any issues with the $!rw to $!flags rewrite to light
yes, indeed
jnthn I believed it was fairly far along, though.
timotimo i don't know about the status of it 12:27
12:29 benabik left, ajr joined 12:30 ajr is now known as Guest98414, Guest98414 is now known as ajr_
timotimo is pleasantly surprised 12:32
12:34 konundra joined, colomon left
timotimo if someone mixes in a role that is "is nodal", it shouldn't infect the class, right? 12:35
Conjecture: we can assume is nodal on methods declared in a class that is Iterable, to save having to mark every method as nodal. Or we provide a pragma within a lexical scope that assumes is nodal, so we can use it inside Any as well - so i've marked Any as nodal, does that suffice? i'm not 100% sure about the "is Iterable" part of that definition 12:36
jnthn I think it's Iterable itself that'd need marking as "is nodal" 12:37
Oh, maybe Any too...
timotimo: I think that we want to apply the nodality to methods at composition time. 12:38
timotimo: oh, hm...
timotimo i put the code to do it into add_method of MethodContainer
jnthn timotimo: Any doesn't want the marker to inherit, while Iterable does...
timotimo i thought that problem would be solved with the proto thing, where if a proto is declared in an "is nodal" it should be nodal, but if a subclass that's not nodal re-implements it, it shouldn't be 12:39
but i may be hallucinating.
anyway
> say (<a b c>, <d e f>)».elems
3 3
> say (<a b c>, <d e f>)».[0]
a d
\o/ 12:40
moritz \o/ indeed! 12:41
timotimo in a few secs it'll work with hashes, too 12:44
12:45 PacoAir joined 12:46 benabik joined
timotimo say { "A" => (1, 2, 3), "B" => (5, 6, 7) }>>.[0] => ("A" => 1, "B" => 5).hash 12:48
12:59 SamuraiJack left
jnthn Got all but the last 2 tests of wrap.t passing :) 13:00
dalek ast: 643ab0e | (Timo Paulssen)++ | S02-lexical-conventions/unspace.t:
add a test for unspace between function and arguments
13:01
FROGGS jnthn: same for me with bigint.t :o)
timotimo ossum :) 13:02
jnthn Fixed S14-traits/routines.rakudo.jvm also
FROGGS swagger
timotimo was about to ask if that 1 failure was my fault :D
oh. should Block get a nodal method, too? 13:07
r: say Routine.^mro
camelia rakudo 45fb1b: OUTPUT«(Routine) (Block) (Code) (Any) (Mu)␤»
tadzik listens to Swagger
13:07 colomon joined
timotimo i suppose i should move it up from Routine into Block, no? perhpas even into Code?! 13:07
can a block be marked nodal? 13:08
doesn't seem to make much sense
jnthn No, think it's Routine level 13:10
timotimo good. i'll add a nqp::can guard to the exploding code.
jnthn +1 13:11
timotimo should Positional be nodal, too, i wonder? 13:12
er, associative i mean
dalek p: 937f6e4 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/IndyBootstrap.java:
Fix invocant-unshift handling.

Was exposed by wrap.t, but could have come up in a variety of ways.
13:20
kudo/nom: 5e36364 | jnthn++ | src/Perl6/Metamodel/Dispatchers.nqp:
Add missing decontainerize.
13:21 smash_ is now known as smash
colomon jnthn++ 13:22
13:26 Ulti_ is now known as Ulti
dalek ast: 4ffb15f | jnthn++ | integration/error-reporting.t:
Rakudo JVM fudge updates.
13:27
timotimo n: my @a = ( { key => "val" }, { key => "val" },{ key => "val" } ); say @a>>.<key>; 13:31
camelia niecza v24-88-g1f87209: OUTPUT«Unhandled exception: Cannot use hash access on an object of type Str␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /home/p6eval/niecza/lib/CORE.setting line 355 (Any.at_key @ 9) ␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /tmp/OTeHg9ObIm line 0 (ANON @ …
timotimo looking for suggestions for things to test for nodality 13:32
i marked Parces "is nodal", is that sensible? seems sane to me at least. 13:37
github.com/timo/rakudo/compare/nodal - would be interested in a review 13:39
13:40 domidumont left 13:41 kaleem left 13:42 rindolf left 13:49 skids joined 13:52 bluescreen10 joined, jaldhar left 13:55 rindolf joined
colomon thinks JVM must be getting very close to 99% now.... 13:57
13:58 benabik left, benabik joined
timotimo it should, yeah 14:00
FROGGS well, it already was at 98.51%
[Coke] I didn't see any improvement from the post-run commits yesterday, though I might have made a mistake during the run manually 14:02
timotimo huh, when was that?
colomon I'm showing us up ~90 passing tests since yesterday 14:03
colomon just discovered the comment "THIS IS A TESTING HACK!!!!!" in his shipped production code. :( 14:04
[Coke] colomon: including the commits from this morning?
colomon [Coke]: yes
but I'm not sure exactly when yesterday my reference run was 14:05
[Coke] r: say (25794 + 90) + 26183 # 90 more than yesterday? 14:06
r: say (25794 + 90) / 26183 # 90 more than yesterday?
that's 98.85
camelia rakudo 45fb1b: OUTPUT«52067␤»
rakudo 45fb1b: OUTPUT«0.988580␤»
[Coke] need 38 more to crack 99
moritz what's the Unicode character that folks use in tags of their Perl 6 talks? 14:09
ah
.uni 蝶
.u 蝶
yoleaux No characters found
moritz oh, and is it correct that YAPC EU speakers don't have to pay any conference fees (and thus don't have to buy a ticket)? 14:10
moritz just booked flight and hotel 14:12
jnthn moritz: Yes, provided you're giving a full-length talk
moritz: (e.g. non-lightning)
moritz: act.yapc.eu/ye2013/price/index.html
timotimo what'll your talk be about, moritz? :) 14:13
moritz exceptions and error reporting 14:15
timotimo cool. that contains the "user-oriented stacktrace" you came up with ~half a year ago? 14:16
moritz must prepare slides :-)
timotimo: yes
timotimo i like that :)
moritz and I plan to talk a bit about the culture 14:17
"LTA error? bug!"
timotimo just yesterday i bragged about that fact to my local functional programmer's meetup group 14:22
14:24 xilo joined
timotimo sub foo does business-as("frobbing the data") - looks pretty good :) 14:25
[Coke] github.com/mame/quine-relay ... wow. 14:26
moritz or maybe sub foo() is reponsible-for('frobbing the data') { }
[Coke] (quine) no perl6, but does include pasm 14:27
14:27 btyler joined
FROGGS [Coke]: yeah, but it is a bit scary too 14:27
timotimo oh, that's even nicer
moritz well, from a compiler writer's perspective it's not all too scary 14:28
you need two things
1) a way to write a quine in one language, and have it do whatever you want
2) know how to encode strings in each language, and print to STDOUT
and then you can go backwards, and generate the code for each stage 14:29
timotimo can you encode unary numbers into the amount of languages the quine goes through before it does something special?
moritz hm, but that doesn't quiet tell you to make it quine in the end
14:33 benabik left 14:34 benabik joined
dalek ast/nodal_tests: 5e6d3e1 | (Timo Paulssen)++ | S03-metaops/ (2 files):
nodal-hyper.t: first bunch of nodality tests
14:36
timotimo github.com/rakudo/rakudo/pull/180 - i started a discussion-pullrequest for nodality 14:37
14:39 perigrin_ is now known as perigrin
timotimo github.com/rakudo/rakudo/pull/178 - this is ready to merge as well (the nqp ops in questioon have been in nqp for 5 days as well) 14:39
dalek kudo/nom: ffe7588 | (Timo Paulssen)++ | src/core/IO.pm:
use nqp::file{read,writ,execut}able/fileislink on parrot and jvm
14:42
kudo/nom: 62b50c0 | (Tobias Leich)++ | /:
Merge pull request #178 from timo/rwxl_nqp_ops

use nqp::file{read,writ,execut}able/fileislink on parrot and jvm
timotimo thank you :D 14:43
14:43 mucker joined
FROGGS timotimo: somebody else should decide about #180 though... 14:43
timotimo yes, i was asking for a discussion, rather than an immediate merge (there really ought to be a bit you can set to make that clear) 14:44
FROGGS yeah, and I cant even discuss about it :P
mucker quick query, I want to develop a forthish langhage. Can I go for nqp ?
FROGGS well, actually I could but it wouldn't be more than babbling
moritz mucker: having thought about it for 10 seconds, I don't see a big obstacle 14:45
but that doesn't mean too much
mucker moritz: C bindings are the only problem I see 14:46
moritz you might need some cleverness wrt argument passing, because the stack isn't exposed directly
14:46 jmpy joined
colomon forth doesn't need argument passing… just make an array that acts as The Stack and you should be good, I'd reckon. 14:47
timotimo rakudo offers pretty good NativeCall reprs, so i suppose you could copy a bit of what rakudo does for your forth-ish language
mucker timotimo: that's great !
timotimo (disclaimer: i don't actually know much except that our nativecall module is really nice) 14:48
mucker if it works may i'll put it for julython
jnthn NativeCall in Rakudo is a language sugar layer; the primitives for C interop are in nqp :) 14:50
FROGGS (and it really is sweet)
mucker how is the jvm branch ? 14:51
FROGGS mucker: 98.5%+
mucker awesome 14:52
timotimo github.com/rakudo/rakudo/pull/173 - wait, this isn't merged yet?
FROGGS I'm not sure though how well nativecall is yet
timotimo i thought it was!
timotimo investigates
yeah, it was.
jnthn arnsholt++ is working on NativeCall support for NQP on JVM. 14:53
mucker: It's not a branch these days, either. :)
timotimo i wonder why github didn't notice.
mucker jnthn: can you make a gh-pages branch. I can contribute some notes there ? 14:54
14:56 colomon left
donaldh jnthn: do you know if arnsholt has committed anything for NativeCall support on JVM ? 14:57
jnthn: also, does it make sense to refactor Ops.java into multiple files before it gets any bigger? 14:59
e.g. FileOps, NativeCallOps, etc.
jnthn mucker: gh-pages? 15:03
donaldh: Not sure, but I think when I last talked with him about it, the native call ops were gonna go off in a separate file.
mucker jnthn: in github every project can have a static website in gh-pages branch
15:07 notjack joined
arnsholt donaldh: In my (stealth) branch, I'm making a NativeCallOps.java 15:08
donaldh arnsholt: stealth as in fork ? 15:09
arnsholt++ 15:10
arnsholt Nah, just an unpushed branch
donaldh :)
arnsholt It's all a bit unstructured and ugly ATM, so I'm keeping it unpushed
FROGGS .oO( ahh sssss push it )
meh
arnsholt I'll push it once I have something that works a tiny bit
FROGGS :o)
jnthn mucker: Hm, we don't currently have docs there though, and it's probably not good to start putting them in two different places. 15:11
15:11 konundra left 15:20 kaare__ joined
hoelzro is there a way in Actions install_method to determine what "kind" of method is being installed? 15:20
ex. regex, rule, method, submethod, etc
FROGGS .WHAT should tell you, no? 15:21
rr: say (my regex { \w }).WHAT; say (my sub { }).WHAT; say (my method { }).WHAT; say (my submethod { }).WHAT 15:22
r: say (my regex { \w }).WHAT; say (my sub { }).WHAT; say (my method { }).WHAT; say (my submethod { }).WHAT
camelia rakudo 62b50c: OUTPUT«(Regex)␤(Sub)␤(Method)␤(Submethod)␤»
FROGGS r: say (my regex { \w }).WHAT; say (my sub { }).WHAT; say (my method { }).WHAT; say (my submethod { }).WHAT; say (my rule { }).WHAT
camelia rakudo 62b50c: OUTPUT«(Regex)␤(Sub)␤(Method)␤(Submethod)␤(Regex)␤»
hoelzro FROGGS: calling .WHAT on what, though? 15:23
on $code?
FROGGS I'd guess so... exactly are you (in code)?
where* 15:24
hoelzro Actions.pm
around like 2734
in install_method
FROGGS Perl6::Actions?
hoelzro yes 15:25
in rakudo
(I had an idea for a "friendlier" error message)
15:25 kaleem joined
jnthn $code.HOW.name($code) is probably safer. 15:26
FROGGS meh 15:28
2 minutes too late -.-
15:29 YoungFrog joined
[Coke] I will have to kick off the java run slightly later than normal today, jnthn, so you have another 90m or so before I start it. just in case, you know. 15:30
15:30 rindolf left
FROGGS hehe 15:30
15:31 ajr_ left
moritz hoelzro: fwiw the "correct" think to do is to throw a typed exception, and simply pass the code object to it 15:32
hoelzro: and then the method message of that exception type can use the type
15:32 ajr joined
hoelzro er, I guess this is a warning message 15:33
so that might change things up a bit
15:33 ajr is now known as Guest75894, Guest75894 is now known as ajr_
moritz hopes not 15:33
it could be that we don't have p6 level exceptions for those though
jnthn You can worry_typed or so 15:34
hoelzro well, here's what I'd like to add
jnthn (once having added the exception)
hoelzro consider this: sub foo { regex bar { ... } }
Rakudo complains Useless declaration of a has-scoped method in mainline
so I'd like it to say: "Useless declaration of a has-scoped method in mainline (did you mean 'my regex bar'?)" 15:35
moritz oh oh oh
that's still LTA
hoelzro LTA?
moritz how about 'Useless declaration of a has-scoped regex(sic) inside a subroutine"?
less than awesome
to the casual observer it's not clear that regexes are methods 15:36
hoelzro I see
moritz so we should say 'regex' instead of 'method'
and it's not in the mainline either
hoelzro ok, makes sense
moritz if you dont' want to add that detection, just say "outside of a class, role or grammar" or so
FROGGS you can still add the "did you meant to do..."
hoelzro hell, I didn't realize that they were methods until I saw that error message =)
I knew they were sub-like, though
FROGGS: that's what I'm really concerned about 15:37
I had to scratch my head for a few minutes before realizing what I'd done wrong
FROGGS yes, same happened here
15:39 fhelmberger left
hoelzro so I thought it would be a simple fix for me, who has only a passing familiarity with the Rakudo source =) 15:40
15:40 colomon joined 15:47 kaleem left 15:48 jmpy left 15:55 crazedpsyc joined 16:01 daxim left 16:05 konundra joined
grondilu rosettacode is down? 16:21
16:25 SamuraiJack joined 16:28 mls left 16:31 sqirrel joined
TimToady yes, been down since last night, I think 16:31
16:32 ajr_ left 16:38 rindolf joined
TimToady FROGGS: there's no regex inside the [] of <-[]> to be a null regex; it's just an empty list of characters to (not) match 16:39
FROGGS k, understand 16:40
timotimo TimToady: in case you didn't see already, my PR for nodality is up and there's a few remaining questions
jnthn So it's equivalent to <?> I guess
TimToady no, that's 0-width, so really equivalent to . 16:41
jnthn oh
yeah :)
TimToady <![]> would be equivalent to <?> 16:42
er,wait
yeah, I think so, but lemme drink some caffeine to see if I wake up
jnthn ;) 16:43
TimToady timotimo: I will look at it, assuming there's a link in the backlog somewhere.
had to take an extra antihistimine last night, and it's taking extra long to wear off... 16:44
FROGGS TimToady: linky: github.com/rakudo/rakudo/pull/180 16:46
16:46 FROGGS left
TimToady strongly suspects there is now a link in the backlog... :) 16:47
16:53 abnorman joined 16:56 sqirrel left, donaldh left
diakopter .tell FROGGS www.hanselman.com/blog/MakingABette...dLine.aspx 17:04
yoleaux diakopter: I'll pass your message to FROGGS.
17:08 FROGGS joined, dakkar left
FROGGS . 17:12
yoleaux 17:04Z <diakopter> FROGGS: www.hanselman.com/blog/MakingABette...dLine.aspx
diakopter heh 17:13
lizmat good *, #perl6! 17:17
17:17 kaare__ is now known as kaare_
lizmat checking on backlog, I find potential issues with some tests I've written on the JVM: irclog.perlgeek.de/perl6/2013-07-16#i_7332646 17:17
however, if I look at the roast data of today, I don't see any errors 17:18
but I also don't see any changes in the test files
diakopter which roast data 17:19
lizmat github.com/coke/perl6-roast-data/b...ummary.out
17:19 SamuraiJack_ joined 17:21 SamuraiJack left 17:22 pecastro_ joined
colomon lizmat: I'm getting failures in that file right now 17:23
diakopter lizmat: I think [Coke] hasn't run it since then 17:24
lizmat could you gist them for me?
17:24 pecastro left 17:25 birdwindupbird left
colomon lizmat: gist.github.com/colomon/6022597 17:25
lizmat colomon++
colomon lizmat: looking at the code, I'm not sure is_deeply is appropriate for those tests. 17:26
colomon isn't sure it isn't, either. he is confused, mostly 17:27
lizmat ah, why not? Maybe I'm too used to Test::More's is_deeply ?
17:27 stevan_ left 17:28 SamuraiJack_ left
colomon truth be told, I never use is_deeply 17:29
it's calling eqv to compare the two sides -- does that make sense? 17:30
might be we're looking at an infix:<eqv> bug in jakudo
lizmat no, actually, I think I know why they're wrong 17:31
colomon is listening 17:32
colomon is listening to a 4-year-old sing the music from the attack on the Death Star in Star Wars
lizmat gist.github.com/lizmat/6022675 17:33
could you try that?
17:33 Rotwang joined 17:34 SamuraiJack_ joined, mucker left 17:35 pecastro_ is now known as pecastro 17:36 kaare__ joined
colomon oh! 17:36
wait a minute
lizmat
.oO( counting down )
colomon this totally looks like a sort issue 17:37
though with that change it works
lizmat you mean, my patch did not fix the problem ?
ok, pushing :-)
dalek ast: cd2d064 | (Elizabeth Mattijsen)++ | S32-hash/delete-adverb.t:
Remove hash key order dependency, spotted while testong on rakudo.jvm
colomon but why does it work? seems like that change should make it worse, not better 17:38
17:38 kaare_ left
lizmat afaik, %h{*} is really the same as %h{ %h.keys } 17:39
at least current implementation wise
moritz shouldn't it be the same as %h ?
diakopter that expands? 17:40
moritz aye
diakopter hunh.
colomon lizmat: either way, aren't you relying on the order of the keys in the hash being stable?
17:40 domidumont joined
diakopter .tell yoleaux gtfo 17:41
lizmat well, I'm assuming Perl 5's new hash key order behaviour
[Coke] lizmat: the run hasn't been done yet today.
the roast version is fixed, though, so that fix won't help today's run. :)
jnthn: I'm about to pull the trigger. 17:42
colomon lizmat: isn't writing hash tests that depend on *any* key order behavior incorrect?
lizmat colomon: Perl 5 guarantees that the order of "keys" and "values" is the same while no changes are made to the hash 17:43
but can be different in different runs, or even on different hashes being set up the same way
TimToady .tr ジャー区道 17:46
lizmat if the consensus is that anything related to order in hashes should be tested with a "sort" around it, I can do that :-)
TimToady enobot
lizmat
.oO( seems to be a hard one to translate )
[Coke] r: say 3
camelia rakudo 62b50c: OUTPUT«3␤»
[Coke] ah, she's back. awesome.
lizmat .tr ジャー区道 17:47
[Coke]: that's Camelia, yoleaux seems to be AWOL
FROGGS yoleaoux is still absent
17:48 ChanServ sets mode: +o diakopter
diakopter (inviting yoleaux) 17:48
(oh yeah, don't need to do that)
17:48 diakopter sets mode: -o diakopter
notjack perl6: say 'foo' ~~ /<[a-z] - [a-z]>/; 17:51
camelia niecza v24-88-g1f87209: OUTPUT«===SORRY!===␤␤Unsupported use of - as character range; in Perl 6 please use .. at /tmp/hEMkN140R8 line 1:␤------> say 'foo' ~~ /<[a-z⏏] - [a-z]>/;␤␤Parse failed␤␤»
..rakudo 62b50c: OUTPUT«===SORRY!===␤Unsupported use of - as character range; in Perl 6 please use .. for range, for explicit - in character class, escape it or place as last thing␤at /tmp/wqz308_zTD:1␤------> say 'foo' ~~ /<[a-⏏z] - [a-z]>/;␤»…
notjack perl6: say 'foo' ~~ /<[a..z] - [a..z]>/;
camelia rakudo 62b50c, niecza v24-88-g1f87209: OUTPUT«Nil␤»
17:52 colomon left 17:53 stevan_ joined 17:54 stevan__ joined
FROGGS perl6: say 'foo' ~~ /<[a..z] - [a..eg..z]>/; # I am a bit curious about the space chars around - 17:54
camelia rakudo 62b50c, niecza v24-88-g1f87209: OUTPUT«「f」␤␤»
FROGGS cool
TimToady .tr :jp :en 邪悪道 17:55
or maybe that
:)
FROGGS but we are not evil 17:57
17:57 stevan_ left
TimToady we are not the referent :) 17:57
17:58 domidumont left, domidumont joined, domidumont left 17:59 spider-mario joined 18:01 colomon joined
lizmat colomon: is S32-hash/perl.t still giving errors on JVM as well ? 18:02
colomon lizmat: probably. one moment.
yes, tests 1, 5, 18:03
9
# got: '("b" => 2, "a" => 1).hash'
# expected: '("a" => 1, "b" => 2).hash' 18:04
18:04 yoleaux joined, ChanServ sets mode: +v yoleaux
lizmat ok, I guess this then boils down to the question: do we want .perl to return a repeatable / ordered set of keys or not for hashes 18:04
colomon probably not, I'd say
lizmat .gist probably should, I guess 18:05
but not .perl, right ?
colomon is it even possible? I mean, Str keys, sure. 18:06
but do a Hash's keys have to have an ordering?
lizmat well, the idea of .perl is that we can roundttrip with eval()
18:06 Kelder is now known as Ayiko
lizmat order of keys thus doesn't matter there 18:06
.gist is more for human consumption 18:07
having keys sorted then might be something desireable?
colomon doesn't know -- would never try to .gist or .Str a Hash other than for very casual reasons 18:09
dalek ast: ca7012f | (Elizabeth Mattijsen)++ | S32-hash/perl.t:
Make sure we don't depend on order of keys in Hash.perl (spotted in rakudo.jvm tests)
lizmat continuing on backlog 18:12
jnthn: re irclog.perlgeek.de/perl6/2013-07-16#i_7334236 : shouldn't that be &?BLOCK ? 18:16
donaldh: re irclog.perlgeek.de/perl6/2013-07-17#i_7336519 : yes, I think they should be merged back again and/or redeveloped according to S11 18:25
dalek rl6-roast-data: eca1543 | coke++ | / (5 files):
today (automated commit)
18:38
[Coke] rakudo.jvm (98.82%)
lizmat caught up on backlog, afk& 18:39
nwc10 Should I be happy that that is really high, or disappointed that it's almost but not quite 99%?
[Coke] pretty sure we'll hit 99 tomorrow. 18:40
nwc10 and then yay, first 99% done? :-)
lizmat yeah, at least 9 tests should pass tomorrow 18:41
jnthn How many testse to 99%? :)
yoleaux 18:05Z <diakopter> jnthn: there's a bunch of places I'm finding that need the MVM_ASSIGN macro
18:06Z <diakopter> jnthn: need to do a full code audit one of these days
18:10Z <diakopter> jnthn: er, MVM_ASSIGN_REF
benabik nwc10: Onto the next 99% 18:42
[Coke] jnthn: 47 left. and I think we missed a few fixes to roast tests, so probably 45.
lizmat 47 - 9 = 38 18:43
S32-hash/delete-adverb andS32-hash/perl should also pass now 18:44
dalek rlito: 7bc2bb9 | (Flavio S. Glock)++ | src5/lib/Perlito5/Grammar/Print.pm:
Perlito5 - wip indirect-object
18:47
[Coke] jnthn: gist.github.com/coke/5879701 updated. 18:48
jnthn lizmat: Confirmed that here. :)
[Coke] if all of them pass, liz, that's 8.
jnthn: wrap is still aborting 2 tests. 18:51
lizmat I thought it was 6 for delete-adverb.t. and 3 for perl.t
[Coke] new failure: control operator crossed continuation barrier
lizmat: whoops, missed 1, yes.
lizmat :-)
really afk now& 18:52
jnthn hm, seems there's 8-9 more if I can figure out why captialize.t is busted... 18:54
[Coke] jnthn: remove the skip from S32-array/pop.t, it runs fine now. 18:55
18:57 bluescreen100 joined
[Coke] jnthn: I started down the capitalize path earlier thinking it was LHF, but it got weird and I gave up. I am interested to see what you find! 18:58
19:00 bluescreen10 left
[Coke] so, that's 10 so far, leaving 37. 19:00
jnthn [Coke]: yeah, it's werid... 19:01
*weird
[Coke] COFFEE TIME
jnthn: you hit the bottom of the rabbit hole yet? 19:30
19:31 shlomif joined, rindolf left, shlomif is now known as rindolf
dalek rlito: 111f2fa | (Flavio S. Glock)++ | src5/lib/Perlito5/Grammar/Print.pm:
Perlito5 - indirect-object - more rules
19:34
19:36 cognominal left, cognominal joined
moritz jnthn: last I looked at capitalize (was quite some time ago), the problem was with some of the Unicode props in regexes 19:42
like <:L> or so
19:44 pupoque joined, pjcj_ left 19:47 pjcj joined
colomon wow, just found yet another test that depends on hash order. sigh. 19:47
jnthn [Coke]: Not yet, it's something with <:L>, but then been on the phone :) 19:48
19:48 Myk267 left
colomon Error while reading 'TESTTOKEN': No such file or directory at ./eval-client.pl line 10 19:51
dalek rlito: ad54ae4 | (Flavio S. Glock)++ | src5/lib/Perlito5/Grammar/Print.pm:
Perlito5 - indirect-object - fix printf()
19:54
19:54 rindolf left
dalek ast: 8e666ec | (Solomon Foster)++ | S16-io/bare-say.t:
Make test work independent of hash order.
19:54
19:57 pupoque left 19:58 pupoque joined 20:04 prammer left 20:05 bbkr joined 20:09 SamuraiJack_ left
jnthn yeah, think I've got the wordcase thing fixed 20:09
colomon \o/ 20:10
grondilu r: say join ":", "foo fooo".match: / o xx 2 /, :g
camelia rakudo 62b50c: OUTPUT«␤» 20:11
jnthn grondilu: **
20:12 donaldh joined
grondilu yep, found out eventually 20:12
r: my $k = 2; my $x = eval "/o xx {$k}/"; say join ":", "foo fooo".match: /<$x>/, :g
camelia rakudo 62b50c: OUTPUT«␤»
grondilu r: my $k = 2; my $x = eval "/o ** {$k}/"; say join ":", "foo fooo".match: /<$x>/, :g 20:13
camelia rakudo 62b50c: OUTPUT«oo:oo␤»
grondilu failed to reproduce an error in some other code. Ignore lines above.
notjack r: say join '.','abc' RX 'def'; 20:14
camelia rakudo 62b50c: OUTPUT«␤»
notjack r: say join '.','abc'.split RX 'def'.split;
camelia rakudo 62b50c: OUTPUT«Cannot call 'split'; none of these signatures match:␤:(Cool : Regex $pat, $limit = { ... }, :all(:$all), Mu *%_)␤:(Cool : Cool $pat, $limit = { ... }, :all(:$all), Mu *%_)␤:(Str:D : Regex $pat, $limit = { ... }, :all(:$all), Mu *%_)␤:(Str:D : Cool $delimiter, $limi…
FROGGS delimiter missing 20:15
notjack r: say join '.', /a b c/ RX /d e f/;
camelia rakudo 62b50c: OUTPUT«␤»
moritz r: say join ', '', ('abc'.comb RX 'def'.comb)
camelia rakudo 62b50c: OUTPUT«===SORRY!===␤Two terms in a row␤at /tmp/KVL5e6TyPI:1␤------> say join ', '⏏', ('abc'.comb RX 'def'.comb)␤ expecting any of:␤ postfix␤ infix stopper␤ infix or meta-infix␤ statement end␤ state…
lizmat colomon: is that bare-say test not really about what .perl / .gist is returning ?
notjack FROGGS: I thought DWIM would make .split mean .split('')
FROGGS r: "abc".split
moritz notjack: that's .comb now
camelia rakudo 62b50c: OUTPUT«Cannot call 'split'; none of these signatures match:␤:(Cool : Regex $pat, $limit = { ... }, :all(:$all), Mu *%_)␤:(Cool : Cool $pat, $limit = { ... }, :all(:$all), Mu *%_)␤:(Str:D : Regex $pat, $limit = { ... }, :all(:$all), Mu *%_)␤:(Str:D : Cool $delimiter, $limi…
FROGGS r: "abc".split :all
camelia rakudo 62b50c: OUTPUT«Cannot call 'split'; none of these signatures match:␤:(Cool : Regex $pat, $limit = { ... }, :all(:$all), Mu *%_)␤:(Cool : Cool $pat, $limit = { ... }, :all(:$all), Mu *%_)␤:(Str:D : Regex $pat, $limit = { ... }, :all(:$all), Mu *%_)␤:(Str:D : Cool $delimiter, $limi…
moritz split requires a delimiter. 20:16
FROGGS yeah
moritz use .comb if you want a list of characters
FROGGS reading the signatures here isnt ideal
notjack why does 'comb' mean 'list of characters'?
r: say join '.','abc'.comb RX 'def'.comb;
camelia rakudo 62b50c: OUTPUT«␤»
colomon lizmat: no, it was iterating through a hash and expecting to get the results in sorted order
jnthn That's 9 more tests from capitalize.t and also 3 more from substr it seems :)
moritz notjack: because .comb in general searches through strings, and the default search is for any character 20:17
notjack oh, as in "comb my hair" not "comb-inations"
moritz yes
notjack r: say join ' ','hi there'.comb; 20:18
FROGGS nr: say ('abc'.comb X 'def'.comb) # what is rakudo doing?
camelia niecza v24-88-g1f87209: OUTPUT«a d a e a f b d b e b f c d c e c f␤»
..rakudo 62b50c: OUTPUT«␤»
rakudo 62b50c: OUTPUT«h i t h e r e␤»
notjack r: say ('abc'.comb RX 'def'.comb)
camelia rakudo 62b50c: OUTPUT«␤» 20:19
notjack why does RX not work? Perl6 won't take its medicine.
[Coke] r: say 'abc'.comb.perl
camelia rakudo 62b50c: OUTPUT«("a", "b", "c").list␤»
notjack n: say ('abc'.comb RX 'def'.comb)
camelia niecza v24-88-g1f87209: OUTPUT«d a d b d c e a e b e c f a f b f c␤»
notjack ah
lue r: say <a b c> X <d e f> 20:20
camelia rakudo 62b50c: OUTPUT«a d a e a f b d b e b f c d c e c f␤»
colomon ah?
notjack ah, niecza gets me, but rakudo doesn't. 20:21
colomon looks like a rakudobug
r: say ('abc'.comb X 'def'.comb)
[Coke] r: say <a b c> RX <d e f>
camelia rakudo 62b50c: OUTPUT«␤»
rakudo 62b50c: OUTPUT«d a d b d c e a e b e c f a f b f c␤»
colomon r: say ('abc'.comb X 'def'.comb) 20:22
camelia rakudo 62b50c: OUTPUT«␤»
[Coke] r: say ('abc'.comb X 'def'.comb).WHAT
camelia rakudo 62b50c: OUTPUT«(List)␤»
notjack say: 6.HOW
r: say 6.HOW
camelia rakudo 62b50c: OUTPUT«Perl6::Metamodel::ClassHOW.new()␤»
notjack r: say 6.WHY
camelia rakudo 62b50c: OUTPUT«(Any)␤»
notjack r: say 6.JUSTMAKINGTHINGSUPNOW
camelia rakudo 62b50c: OUTPUT«No such method 'JUSTMAKINGTHINGSUPNOW' for invocant of type 'Int'␤ in block at /tmp/4Tb64Ww0Zi:1␤␤»
notjack there are seriously WHAT HOW WHY operators? 20:23
r: say 6.WHO
camelia rakudo 62b50c: OUTPUT«().hash␤»
notjack heh
FROGGS and WHICH and WHERE
diakopter r: .WHY
camelia rakudo 62b50c: ( no output )
diakopter r: .WHEN
camelia rakudo 62b50c: OUTPUT«No such method 'WHEN' for invocant of type 'Any'␤ in block at /tmp/QxbiQbfnvs:1␤␤»
20:24 kaare__ left
notjack r: say ('6.' ~~ <WHO WHAT WHY WHICH WHERE HOW>)>>.eval; 20:24
camelia rakudo 62b50c: OUTPUT«False␤»
notjack r: say ('6.' ~>> <WHO WHAT WHY WHICH WHERE HOW>)>>.eval;
grondilu rn: for ^2 -> $i { loop (my $j=0; $j < 2; $j++) { say (state $)++ } }
colomon notjack: .WHAT and .HOW are methods, not operators
camelia rakudo 62b50c: OUTPUT«===SORRY!===␤Unsupported use of >> to do right shift; in Perl 6 please use +> or ~>␤at /tmp/HYsceLg3DD:1␤------> say ('6.' ~>>⏏ <WHO WHAT WHY WHICH WHERE HOW>)>>.eval;␤» 20:25
rakudo 62b50c: OUTPUT«0␤1␤2␤3␤»
..niecza v24-88-g1f87209: OUTPUT«Potential difficulties:␤ $i is declared but not used at /tmp/cN6qE_FlOk line 1:␤------> for ^2 -> ⏏$i { loop (my $j=0; $j < 2; $j++) { say ␤␤0␤1␤0␤1␤»
grondilu rn: for ^2 { loop (my $j=0; $j < 2; $j++) { say (state $)++ } }
camelia niecza v24-88-g1f87209: OUTPUT«0␤1␤0␤1␤»
..rakudo 62b50c: OUTPUT«0␤1␤2␤3␤»
lue don't forget WHENCE and WHEREFORE :)
dalek p: 15a8f56 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
Fixes to ischarprop.

Unbusts /<:L> \w*/ regex used by wordcase, thus fixing it.
ast: fe3dafd | jnthn++ | S32-str/ (2 files):
Unfudges after JVM wordcase fixes.
20:26
ast: b11b533 | jnthn++ | S32-array/pop.t:
Unskip a pop test on Rakudo JVM; [Coke]++.
notjack colomon: if SkyNet gets written in perl6, it's going to be paronomasiac
colomon sure enough 20:27
PerlJam
.oO( What does he mean "if"? )
notjack r: say '6.' ~>> <a b c>;
camelia rakudo 62b50c: OUTPUT«===SORRY!===␤Unsupported use of >> to do right shift; in Perl 6 please use +> or ~>␤at /tmp/79tzxREPiw:1␤------> say '6.' ~>>⏏ <a b c>;␤»
notjack how do I say "$x catenate each $y"?
uh, "$x catenate each @y"? 20:28
jnthn r: say '6.' >>~>> <a b c>;
camelia rakudo 62b50c: OUTPUT«6.a␤»
20:28 pupoque left
jnthn Hm 20:28
notjack what's the deal with sometimes needing pairs of >> and sometimes just one ?
jnthn Binary or unary operator
notjack oh, hmm 20:29
jnthn ~ is an infix, so it needs two args
notjack so the >> sorta represents an argument?
like a mnemonic or placeholder?
jnthn r: say '6.' <<~<< <a b c>; 20:30
camelia rakudo 62b50c: OUTPUT«6.a 6.b 6.c␤»
jnthn That's the one
Pointing it outwards means "upgrade this side's length as needed"
notjack oh, so then
20:30 lelf joined
notjack r: say <a b c> >>~>> '.6'; 20:30
camelia rakudo 62b50c: OUTPUT«a.6 b.6 c.6␤»
notjack ha!
20:31 nyuszika7h left
notjack r: say <a b c> X~ <d e f>; 20:31
camelia rakudo 62b50c: OUTPUT«ad ae af bd be bf cd ce cf␤»
notjack r: say <a b c> <<~>> <d e f>;
camelia rakudo 62b50c: OUTPUT«ad be cf␤»
notjack hee hee
what does this do?
r: say <a b c> >>~<< <d e f>;
camelia rakudo 62b50c: OUTPUT«ad be cf␤»
20:31 nyuszika7h joined
notjack I guess that makes sense, kinda 20:31
what does it do for length errors? 20:32
r: say <a b c> >>~>> <d e>;
camelia rakudo 62b50c: OUTPUT«ad be cd␤»
jnthn r: say '6.' >>~<< <a b c>;
camelia rakudo 62b50c: OUTPUT«Lists on both side of non-dwimmy hyperop of infix:<~> are not of the same length␤left: 1 elements, right: 3 elements␤ in sub hyper at src/gen/CORE.setting:14591␤ in sub hyper at src/gen/CORE.setting:14579␤ in block at src/gen/CORE.setting:14570␤ in block at /…
notjack cyclical
jnthn That's the error if you use the inwards-pointing form 20:33
notjack r: say '6.' >>~>> <WHO WHAT WHERE WHY WHEN WHICH WHEREFOR HOW>; 20:34
camelia rakudo 62b50c: OUTPUT«6.WHO␤»
notjack r: say '6.' <<~<< <WHO WHAT WHERE WHY WHEN WHICH WHEREFOR HOW>;
camelia rakudo 62b50c: OUTPUT«6.WHO 6.WHAT 6.WHERE 6.WHY 6.WHEN 6.WHICH 6.WHEREFOR 6.HOW␤»
notjack r: say ('6.' <<~<< <WHO WHAT WHERE WHY WHEN WHICH WHEREFOR HOW>)>>.eval;
camelia rakudo 62b50c: OUTPUT«No such method 'WHEREFOR' for invocant of type 'Int'␤ in block at eval_4:1␤ in any at eval_4:1␤ in sub eval at src/gen/CORE.setting:601␤ in sub eval at src/gen/CORE.setting:592␤ in method eval at src/gen/CORE.setting:2827␤ in method dispatch:<hyper> at src/…
notjack r: say ('6.' <<~<< <WHO WHAT WHERE WHY WHEN WHICH HOW>)>>.eval;
camelia rakudo 62b50c: OUTPUT«No such method 'WHEN' for invocant of type 'Int'␤ in block at eval_1:1␤ in any at eval_1:1␤ in sub eval at src/gen/CORE.setting:601␤ in sub eval at src/gen/CORE.setting:592␤ in method eval at src/gen/CORE.setting:2827␤ in method dispatch:<hyper> at src/gen/…
notjack r: say ('6.' <<~<< <WHO WHAT WHERE WHY WHICH HOW>)>>.eval; 20:35
camelia rakudo 62b50c: OUTPUT«().hash (Int) 928988205 (Any) Int|6 Perl6::Metamodel::ClassHOW.new()␤»
notjack r: my Str @a = <some stuff I wrote>; say ('@a.' <<~<< <WHO WHAT WHERE WHY WHICH HOW>)>>.eval;
camelia rakudo 62b50c: OUTPUT«===SORRY!===␤Variable '@a' is not declared␤at eval_0:1␤------> @a.HOW⏏<EOL>␤ expecting any of:␤ method arguments␤»
notjack damn you eval, and your seatbelts! 20:36
hey, is . itself a binary operator?
jnthn No, it's not handled that way
notjack how would you idiomatically express dynamically invoking multiple methods on a single object? 20:37
FROGGS jnthn: this seems wrong I think: github.com/MoarVM/MoarVM/blob/mast...que.c#L611 20:38
jnthn $foo."$_"() for <some methods here>
FROGGS jnthn: cur_alloc_addr for the first slot cant be zero, which lets fail two tests of t/nqp/60-bigint.t
perigrin jnthn: no map and a mop call to look them up?
FROGGS the tests about a P6opaque boxed bigint 20:39
dalek ast/nodal_tests: 3851684 | (Timo Paulssen)++ | S03-metaops/nodal-hyper.t:
no longer rely on hash ordering.
jnthn FROGGS: I think it's right; offsets are relative to the start of the object, iirc
FROGGS hmmm 20:40
notjack r: my Str @a = <some stuff I wrote>; say join "x", @a."$_"() for <WHO WHAT WHERE WHY WHICH HOW>;
camelia rakudo 62b50c: OUTPUT«No such method 'WHO' for invocant of type 'Array+{TypedArray}'␤ in block at /tmp/lUn1ZhLSnK:1␤␤»
jnthn perigrin: I think that'd come out longer...
FROGGS jnthn: that is my test case gist.github.com/FROGGS/c865b021b1eb5420337f 20:41
the second say-statement gives zero, when it should be 4
jnthn FROGGS: Um...does the code in question explicitly check we're getting a P6bigint REPR and do something smart if not? 20:42
FROGGS set_int in P6opaque gets the correct value, and passes it to P6bigint, but the pointer it gets to store data to is off I think
notjack r: divide by 0 or else;
camelia rakudo 62b50c: OUTPUT«===SORRY!===␤Undeclared routines:␤ by used at line 1␤ divide used at line 1␤ else used at line 1␤␤»
20:42 BenGoldberg joined
FROGGS jnthn: you mean as the :type parameter? 20:43
argument* 20:44
this snippet is from bigint.t, which succeeds on nqp@parrot
notjack r: say 'abc'.comb('c'); 20:45
camelia rakudo 62b50c: OUTPUT«Cannot call 'comb'; none of these signatures match:␤:(Cool : Mu *%_)␤:(Cool : Regex $matcher, $limit = { ... }, Mu *%_)␤:(Str:D : Mu *%_)␤:(Str:D : Regex $pat, $limit = { ... }, :match(:$match), Mu *%_)␤ in method comb at src/gen/CORE.setting:2800␤ in block at /…
notjack r: say 'abc'.comb(/c/);
camelia rakudo 62b50c: OUTPUT«c␤»
notjack r: say 'abc'.comb(/<-[b]>/);
camelia rakudo 62b50c: OUTPUT«a c␤»
notjack r: say 'abc'.comb(/(.)<-[b]>/);
camelia rakudo 62b50c: OUTPUT«bc␤»
FROGGS nqp@parrot calculates some alignment for the attribute offsets... but stealing that piece just breaks more tests 20:46
jnthn FROGGS: I mean I'm not sure the bigint ops like nqp::tostr_I handle the P6bigint inside a P6opaque
notjack r: regex not2b {<-[b]>}; say 'abc'.comb(/not2b/);
camelia rakudo 62b50c: OUTPUT«Useless declaration of a has-scoped method in mainline␤␤»
jnthn So it may be that the nqp::box_i works correctly
notjack r: regex not2b {<-[b]>}; say 'abc'.comb(not2b);
camelia rakudo 62b50c: OUTPUT«Useless declaration of a has-scoped method in mainline␤===SORRY!===␤Undeclared routine:␤ not2b used at line 1. Did you mean '&note'?␤␤»
FROGGS jnthn: I just can say that it works for nqp@parrot, so I though nqp@moarvm must also
20:46 konundra left
jnthn FROGGS: Yes, it should work, but we're still in the middle of implementing the bigint stuff on MoarVM. 20:47
FROGGS jnthn: ahh, and when using fromstr_I instead of box_i, it works
jnthn That may be for wrong reasons too ;-)
FROGGS bah *g* 20:48
FROGGS goes deeper into the rabbit hole
dalek kudo/nom: a8ca889 | jnthn++ | src/vm/jvm/Perl6/Ops.nqp:
Removed outdated comment.
20:49
timotimo you've been forgetting about .WHENCE
20:51 cognominal left, cognominal joined
lee_ gist.github.com/leedo/c5c9a35920d0e7755238 a little REPL bug. i seem to remember a similar error being fixed a few weeks ago 20:53
but maybe it didn't apply to expressions that throw errors
jnthn Hm 20:54
lee_ github.com/rakudo/rakudo/commit/c9...8cf3f051cf
was the previous fix
jnthn can't reproduce it here. 20:55
lee_ i'll update everything and retry, shoulda done that before
20:58 prammer joined 20:59 stevan__ left 21:07 skids left 21:08 rurban joined 21:11 Ben_Goldberg joined 21:12 BenGoldberg left 21:14 stevan_ joined
lee_ well that did indeed fix it, sorry about that! 21:15
FROGGS jnthn: so, in coerce_Is I should call REPR->box_funcs->get_int, instead of just MVM_bigint_to_str, right? 21:17
jnthn FROGGS: No 21:19
FROGGS :/
jnthn FROGGS: MVM_bigint_to_str needs to understand the other case
FROGGS ahh, okay
jnthn If it's factored like on JVM or Parrot, there's a "find the underlying bigint" function that all of those MVM_bigint_ things call at some point. 21:20
21:22 bbkr left
FROGGS MVM_get_bigint 21:22
it does only that right now: return &((P6bigint *)obj)->body.i;
jnthn um, yeah, that's a bad idea :) 21:23
FROGGS cool, I like that moment when the light strikes my head a bit...
:o)
diakopter LOLOLOLOL
FROGGS thank you
21:25 Celelibi left
timotimo i'm not able to make that fix myself, but *by* *god* is the "missing or outdated version of *foo*" error annoying when it doesn't say what module is causing that error 21:27
21:27 spider-mario left, Celelibi joined 21:29 Gruber is now known as Grrrr 21:35 PacoAir left
notjack perl6: say 'lol' xx 12; 21:36
camelia rakudo a8ca88, niecza v24-88-g1f87209: OUTPUT«lol lol lol lol lol lol lol lol lol lol lol lol␤»
notjack perl6: say join'','lol' xx 12; 21:37
camelia niecza v24-88-g1f87209: OUTPUT«===SORRY!===␤␤Two terms in a row (listop with args requires whitespace or parens) at /tmp/NEx2NFtVqI line 1:␤------> say join⏏'','lol' xx 12;␤␤Parse failed␤␤»
..rakudo a8ca88: OUTPUT«===SORRY!===␤Two terms in a row␤at /tmp/h8ipaw54kt:1␤------> say join⏏'','lol' xx 12;␤ expecting any of:␤ argument list␤ postfix␤ infix stopper␤ infix or meta-infix␤ statement end␤ st…
notjack perl6: say join '','lol' xx 12;
camelia rakudo a8ca88, niecza v24-88-g1f87209: OUTPUT«lollollollollollollollollollollollol␤»
notjack perl6: say join '','lo' xx 12;
camelia rakudo a8ca88, niecza v24-88-g1f87209: OUTPUT«lolololololololololololo␤» 21:38
diakopter r: say 'lo'x 12 ~ 'l'
camelia rakudo a8ca88: OUTPUT«lolololololololololololol␤»
PerlJam r: say join 'o', 'l' xx 24; 21:39
camelia rakudo a8ca88: OUTPUT«lololololololololololololololololololololololol␤»
grondilu is there an equivalent to :overlap in P5?
timotimo yeah, :exhaustive or something like that
With the new :ex (:exhaustive) modifier, the current regex will match every possible way (including overlapping) and return a list of all matches. 21:40
PerlJam grondilu: I think you have to loop the string yourself.
donaldh Urg. Getting 'This representation can not unbox to a native str' from ModuleLoader when it is trying to die with a helpful message. 21:45
21:48 konundra joined 21:53 cognominal left
dalek kudo/nom: d4ffd7c | jnthn++ | src/ (4 files):
Get PRE/POST support mostly in place.
21:59
ast: ee62bc1 | jnthn++ | S04-phasers/pre-post.t:
Unfudging for Rakudo JVM.
22:01 rurban left 22:04 ajr joined 22:05 ajr is now known as Guest33176, Guest33176 is now known as ajr_
jnthn Too tired to do much more today, but hopefully those things get us closer to the 99% :) 22:07
donaldh jnthn: Is there any way to get a source reference for a __P6opaque__NN so that SixModelObject can generate an informative unbox exception ?
jnthn: or any hints for what to introspect in the Eclipse debugger? 22:08
jnthn donaldh: No, and they're potentially shared between types... guess the meta-object can be looked at to see if it has a name that can be introspected.
obj.st.HOW 22:09
lizmat (also) sleep& 22:10
donaldh hmm P6OpaqueDelegateInstance
jnthn Chase the delegate pointer
donaldh It's P6OpaqueDelegateInstances a few deep until I get to KnowHOWREPRInstance with name NQPClassHOW 22:15
jnthn A few deep? weird. 22:16
One up from there you should have an actual NQPClassHOW instance, a field of which is a type name... 22:17
notjack say (1..Inf)[-1]; 22:21
r: say (1..Inf)[-1];
camelia rakudo a8ca88: OUTPUT«Cannot use negative index -1 on Range␤ in method gist at src/gen/CORE.setting:10544␤ in method gist at src/gen/CORE.setting:915␤ in sub say at src/gen/CORE.setting:11438␤ in block at /tmp/YJUfGRPl4a:1␤␤»
notjack r: say (reverse 1..Inf)[-1];
camelia rakudo a8ca88: OUTPUT«Cannot use negative index -1 on Failure␤ in method gist at src/gen/CORE.setting:10544␤ in method gist at src/gen/CORE.setting:915␤ in sub say at src/gen/CORE.setting:11438␤ in block at /tmp/drnVDxQUso:1␤␤»
notjack r: say (1..10)[-1];
camelia rakudo a8ca88: OUTPUT«Cannot use negative index -1 on Range␤ in method gist at src/gen/CORE.setting:10544␤ in method gist at src/gen/CORE.setting:915␤ in sub say at src/gen/CORE.setting:11438␤ in block at /tmp/i1lUm66xiW:1␤␤»
jnthn r: say (1..10)[*-1];
camelia rakudo a8ca88: OUTPUT«10␤» 22:22
notjack what's with the *?
why doesn't plain -1 work?
r: say (1..10)[*-1];
camelia rakudo a8ca88: OUTPUT«10␤»
notjack r: say (1..Inf)[*-1];
camelia rakudo a8ca88: OUTPUT«Cannot coerce Inf or NaN to an Int␤ in method Numeric at src/gen/CORE.setting:10542␤ in sub infix:<+> at src/gen/CORE.setting:3278␤ in sub infix:<+> at src/gen/CORE.setting:3276␤ in method exists at src/gen/CORE.setting:6446␤ in method at_pos at src/gen/CORE.s…
notjack r: say (reverse 1..Inf)[*-1];
camelia rakudo a8ca88: OUTPUT«Cannot .reverse an infinite list␤ in method gist at src/gen/CORE.setting:10544␤ in method gist at src/gen/CORE.setting:915␤ in sub say at src/gen/CORE.setting:11438␤ in block at /tmp/XOGBjjkC84:1␤␤»
22:24 konundra left
notjack r: my @a = [12,3,4,5,6,7]; say @a[3,3,1,0]; 22:24
camelia rakudo a8ca88: OUTPUT«(Any) (Any) (Any) 12 3 4 5 6 7␤»
notjack r: my @a = [12,3,4,5,6,7]; say @a[[3,3,1,0]]; 22:25
camelia rakudo a8ca88: OUTPUT«(Any)␤»
TimToady r: my @a = [12,3,4,5,6,7]; say @a[0][3,3,1,0] 22:28
camelia rakudo a8ca88: OUTPUT«5 5 3 12␤»
22:28 bluescreen100 left
notjack ah, I forgot [] meant arrayref in perl 22:29
22:29 colomon left
TimToady r: my $closure = *-1; say $closure(42) 22:29
camelia rakudo a8ca88: OUTPUT«41␤»
notjack r: my @a = (12,3,4,5,6,7); say @a[3,3,1,0];
camelia rakudo a8ca88: OUTPUT«5 5 3 12␤»
notjack r: my @a = (12,3,4,5,6,7); say @a[3,3,1,0,-1];
camelia rakudo a8ca88: OUTPUT«Cannot use negative index -1 on Array␤ in method gist at src/gen/CORE.setting:10544␤ in method gist at src/gen/CORE.setting:915␤ in method gist at src/gen/CORE.setting:5634␤ in method gist at src/gen/CORE.setting:915␤ in sub say at src/gen/CORE.setting:11438␤ …
notjack I don't get why I can't just use negative indexing naturally 22:30
FROGGS r: my @a = (12,3,4,5,6,7); say @a[3,3,1,0,*-1];
camelia rakudo a8ca88: OUTPUT«5 5 3 12 7␤»
FROGGS security
notjack security?
geekosaur because there's no way to distinguish an intended index-from-end from a fencepost error
FROGGS so dont get something by accident from the end
geekosaur *-x is unambiguously index from end
notjack there's no way to distinguish @a[1] from "second element" or "fencepost error fro first element" 22:31
that's not Perl's job
it's going to screw up slices
geekosaur by that argument no language should have any error checking
notjack my @indices=[0,1,-1];
my @indices=(0,1,-1); @a[@indices]; #oops 22:32
geekosaur: by that argument no one should ever complain about problematic syntax in language design
22:34 Nom-_ left 22:35 Nom- joined
geekosaur notjack, why yes, that does also follow if you take your claim far enough. 22:35
notjack geekosaur: I'm glad you see the symmetry.
geekosaur I want syntactic, not weird semantic, distinction between index-forward and index-reverse
you want anything goes, oh that wasn't what you wanted, too bad! 22:36
notjack I want arithmetic, not syntatic, distinction
geekosaur frankly I do not miss 1960s languages
notjack Perl owes a lot - a lot - to 1960s languages 22:37
*-1 feels more like a 1980s 3GL construct than anything else 22:38
(Those, I do not miss)
geekosaur *shrug* you want PHP, you know where to find it. Ditto C.
diakopter doesn't understand that last comment 22:39
22:40 notjack_ joined, snoopy joined
TimToady .tr ジャー区道 22:42
yoleaux Jar district road (ja → en)
22:42 cognominal joined
notjack_ my @a = 1..100; my @idx=(0,1,4,1,-1,7,10,-2,5); say @a[@idx]; 22:42
r: my @a = 1..100; my @idx=(0,1,4,1,-1,7,10,-2,5); say @a[@idx];
camelia rakudo a8ca88: OUTPUT«Cannot use negative index -1 on Array␤ in method gist at src/gen/CORE.setting:10544␤ in method gist at src/gen/CORE.setting:915␤ in method gist at src/gen/CORE.setting:5634␤ in method gist at src/gen/CORE.setting:915␤ in sub say at src/gen/CORE.setting:11438␤ …
notjack_ r: my @a = 1..100; my @idx=(0,1,4,1,*-1,7,10,*-2,5); say @a[@idx]; 22:43
snoopy r: 'my @indices=(0,1,*-1); say @indices; my @a = 12,3,4,5,6,7; say @a[@indices]
camelia rakudo a8ca88: OUTPUT«1 2 5 2 100 8 11 99 6␤»
rakudo a8ca88: OUTPUT«===SORRY!===␤Unable to parse expression in single quotes; couldn't find final "'"␤at /tmp/5bvFpijzTH:1␤------> ; my @a = 12,3,4,5,6,7; say @a[@indices]⏏<EOL>␤ expecting any of:␤ statement list␤ prefix or term␤ …
snoopy r: my @indices=(0,1,*-1); say @indices; my @a = 12,3,4,5,6,7; say @a[@indices]
camelia rakudo a8ca88: OUTPUT«0 1 WhateverCode.new()␤12 3 7␤»
notjack_ r: my @a = 1..100; my @idx=(0,1,4,1,*-1,7,10,*-2,5); say @a[@idx]; say @idx[4];
lue r: my @a = 1, 2, 3; my @b = 0, 1, *-1; say @a[@b];
camelia rakudo a8ca88: OUTPUT«1 2 5 2 100 8 11 99 6␤WhateverCode.new()␤»
rakudo a8ca88: OUTPUT«1 2 3␤»
donaldh argh. getting tripped up by PERL6LIB in my env for parrot / rakudo
notjack_ r: my @a = 1..100; my @idx=(0,1,4,1,*-1,7,10,*-2,5); say @idx[4];
camelia rakudo a8ca88: OUTPUT«WhateverCode.new()␤»
notjack_ yeah, that's un-fun. 22:44
lue You can still put from-the-end indices in lists, just replace -1 with *-1
notjack_ I get it, but then *-1 is a different kind of thing than 1
r: my @a = 1..100; my @idx=(0,1,4,1,*-1,7,10,*-2,5); say @idx[4]+7;
camelia rakudo a8ca88: OUTPUT«Cannot call 'Numeric'; none of these signatures match:␤:(Mu:U \v: Mu *%_)␤ in method Numeric at src/gen/CORE.setting:887␤ in sub infix:<+> at src/gen/CORE.setting:3278␤ in sub infix:<+> at src/gen/CORE.setting:3276␤ in block at /tmp/LHqQUBKJFE:1␤␤»…
22:44 jtpalmer joined
notjack_ r: my @a = 1..100; my @idx=(0,1,4,1,*-1,7,10,*-2,5); @idx =>>- 1; 22:45
camelia rakudo a8ca88: OUTPUT«===SORRY!===␤Preceding context expects a term, but found infix > instead␤at /tmp/UsJ4punk3M:1␤------> @idx=(0,1,4,1,*-1,7,10,*-2,5); @idx =>>⏏- 1;␤»
22:45 rhr_ joined
notjack_ r: my @a = 1..100; my @idx=(0,1,4,1,*-1,7,10,*-2,5); @idx >>->> 1; 22:45
22:45 integral joined
camelia rakudo a8ca88: OUTPUT«Cannot call 'Numeric'; none of these signatures match:␤:(Mu:U \v: Mu *%_)␤ in method Numeric at src/gen/CORE.setting:887␤ in sub infix:<-> at src/gen/CORE.setting:3282␤ in sub infix:<-> at src/gen/CORE.setting:3280␤ in sub hyper at src/gen/CORE.setting:14604␤ … 22:45
lue because things like *-1 create something called WhateverCode, which expects one argument. The array dereferencer (the [] in @a[]) gives the size of the array as that one argument when it encounters WhateverCode as an index.
notjack_ yes, I understand .. I'm saying that's undesirable.
lue r: my @a = 1,2,5; say @a[*-*]; # size of array minus size of array == 0
camelia rakudo a8ca88: OUTPUT«1␤» 22:46
TimToady it's better than magically wrapping around one end of the array but not the other; if you want modular arithmetic on the array indices, there are better ways to do that
notjack_ TimToady: not without loss of generality
TimToady -1 in not general 22:47
notjack_ I come from the array programming world (APL, J, K/Q). Negative indices are a big hit.
22:47 notjack left, grondilu left, jtpalmer_ left, rhr left, integral_ left
TimToady then the best solution is to declare your arrays to take modular indices 22:47
notjack_ One of the reasons I like p6 is it seems to have a lot of the benefits of the APL family, plus some extra cool stuff
TimToady yes, but there are also aspects of APL that drive people away screaming 22:48
notjack_ you want to be able to say my @ind=(0,1,-1); and then do things like @a[@ind] and @b[ind] and @a[@ind >>-<<1] etc
lue
.oO(Like lack of a decent Linux-based compiler, IIRC)
notjack_ TimToady: s/APL/perl/
lue: AFAICT, no compiler exists for APL, Linux or otherwise 22:49
lue is reminded of his idea to create an APL operators module for P6 22:50
notjack_ lue++
I'm trying to write a J in p6, but hung up because I'm completely ignorant
lue r: my @a = 1,2,3,4; say @a[*/2];
camelia rakudo a8ca88: OUTPUT«3␤»
notjack_ though the lexing went pretty well. 22:51
donaldh github.com/rakudo/rakudo/pull/181 22:52
22:52 lelf` joined, colomon joined
lue The most interesting part of an APL module though would be how it works in relation to the non-APL ones (precedence-wise, that is). 22:52
notjack_ imo, one of the most ingeneous design decisions of J is it did away with precedence, almost entirely 22:53
that wouldn't work for a syntax-rich language like p6
22:53 lelf left
notjack_ but it is quite cozy in J 22:53
timotimo donaldh++ # make install for rakudo.jvm
TimToady unfortunately, most peeople prefer some precedence
notjack_ the challange is quantifying "some" 22:54
lue precedence isn't an issue within APL (it's right-to-left all the time), but mingling those operators with P6's would be interesting to figure out.
notjack_ silicon computers are better at maintaing huge tables of precedence than carbon ones are
especially the mushy gray kind
lue
.oO(S03 didn't have an issue quantifying the levels of precedence)
TimToady lue: obviously you'd just have to pick one precedence level to put them all at
lue: yeah, S03 makes it look like no work every went into it :) 22:55
*eve
*ever !!!
notjack_ *even
there are two precedences of operators in APL, which correspond, roughly, to subs and hyper/meta-operators in p6 22:56
then anomalous things like indexing brackets, which you don't have to worry about
TimToady hypers don't have their own precedence in p6 22:57
lue
.oO( ⍝ would require at least a macro and at most a slang. )
timotimo r: say say "yeah"
camelia rakudo a8ca88: OUTPUT«yeah␤True␤»
timotimo does the bool return value for say actually make sense?
TimToady it does when it returns False because your disk is full
notjack_ surely the []s in [+] have a higher precedence than the + 22:58
timotimo oke
TimToady though that's probably a fail
notjack_ else, they couldn't pick up the + as an argument
timotimo notjack_: those are listop precedence, yes
22:58 konundra joined
timotimo oh, er, no that's not the [ ] being an operator, they are syntax 22:58
with their own grammar rule actually
this isn't a question of precedence then.
notjack_ what about >><< and friends?
TimToady hypers don't have their own precedence in p6 22:59
timotimo they are also syntax.
notjack_ um, what about R?
TimToady though X and Z are list infixes
timotimo r: sub frob(Str $foo) { say "succ" }; frob(say "yay");
camelia rakudo a8ca88: OUTPUT«yay␤Nominal type check failed for parameter '$foo'; expected Str but got Bool instead␤ in sub frob at /tmp/1gmHxfMmAg:1␤ in block at /tmp/1gmHxfMmAg:1␤␤»
notjack_ yeah, Z was my next question
timotimo i think i'll annotate say with "returns Bool" then
TimToady so slightly looser than list prefixes
22:59 benabik left
timotimo that ought to make lots of code much more performant! because you end up using the return value of "say" all the time! 22:59
notjack_ anything that can take e.g. + as an argument in APL is termed an "operator" (or, in J, an adverb/conjunction) and has the highest precedence 23:00
23:00 iSlug left
notjack_ anything like + or * or % that operate on data (instead of functions) is called a function (in J, verb) and has medium precedence 23:00
data, like 'abcded' or 1 2 3 has the lowest precedence
so, in APL, / is an operator (not syntax) and can take a function argument, like +/, which is equivalent to [+] in p6 23:01
~ is similar, and analogous to R 23:02
" is similar, and is analogous to >><<
timotimo right. in APL that may very well make a lot of sense. in perl6land i don't think it makes that much sense – at least at first glance
TimToady the main difference is that in p6 we wanted very strange things to look very strange, not hide among the other operators 23:03
donaldh PERL6LIB=hello ./perl6 -e 'use Anything' # breaks for me
Could someone try this on rakudo jvm ? 23:04
TimToady "This representation can not unbox to a native str" 23:05
23:05 colomon left
donaldh PERL6LIB=blib ./perl6 -e 'use Test' # works 23:05
Yep, that's what I get.
23:05 sitaktif left
donaldh good, isolated test case. 23:06
notjack_ is there a idiomatic way to be able to take a bare operator as an argument ?
timotimo TimToady: does it make sense to go through the setting and sprinkle it with type annotations where they are correct? how about prefering returns SomeType:D over returns SomeType?
notjack_ as in zipWith(+,@a)?
23:06 nebuchadnezzar joined
timotimo you have to use &infix:<+> or some similar notation 23:06
(especially since + could be prefix, postfix or infix in that case)
TimToady @a Z+ @b
timotimo (although postfix:<+> isn't in the setting, someone could make it up) 23:07
TimToady the Z is uppercase for visibility
notjack_ I know Z is zipwith, was wondering how I'd write my own
TimToady I believe it's 'zipwith', yes.
timotimo i'd think a macro would be the right way to do that, if you know you want the infix:<whatevs> version
notjack_ can you make a identifier synonym for infix:<+> ?
timotimo what do you mean by that?
notjack_ hmm, macros are a good call
23:08 larks left
notjack_ (magical declaration) plus = infix:<+>; 23:08
zipWith(plus, @a);
23:09 jferrero left
timotimo r: my &the_op = &infix:<+>; say(&the_op) 23:09
23:09 flussence left
camelia rakudo a8ca88: OUTPUT«sub+{<anon>}+{precedence} infix:<+>($a?, $b?) { ... }␤» 23:09
23:09 BooK left
timotimo could also use the $ sigil of course 23:10
TimToady r: constant plus = &infix:<+>; say plus
camelia rakudo a8ca88: OUTPUT«sub+{<anon>}+{precedence} infix:<+>($a?, $b?) { ... }␤»
timotimo or that, yes
notjack_ nice
that's enough for my purposes
TimToady note that in constant form, you must use () to call it
notjack_ I'd just write constant plus = infix:<+>; fancyAPLOperator(plus, operands);
TimToady r: constant plus = &infix:<+>; say plus 1, 2
camelia rakudo a8ca88: OUTPUT«===SORRY!===␤Two terms in a row␤at /tmp/cp2wCLrIqo:1␤------> constant plus = &infix:<+>; say plus ⏏1, 2␤ expecting any of:␤ postfix␤ infix stopper␤ infix or meta-infix␤ statement end␤ statem…
TimToady r: constant plus = &infix:<+>; say plus(1, 2) 23:11
camelia rakudo a8ca88: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&plus' called (lines 1, 1)␤»
TimToady hmm
r: constant plus = &infix:<+>; say plus.(1, 2)
camelia rakudo a8ca88: OUTPUT«3␤»
TimToady there you go
r: constant plus = &infix:<+>; say (plus)(1, 2); # also works
camelia rakudo a8ca88: OUTPUT«3␤»
23:12 flussence joined
notjack_ r: say (1,2,3) +Z 1; 23:13
camelia rakudo a8ca88: OUTPUT«===SORRY!===␤Undeclared name:␤ Z used at line 1␤␤»
notjack_ n: say (1,2,3) +Z 1;
camelia niecza v24-88-g1f87209: OUTPUT«===SORRY!===␤␤Undeclared name:␤ 'Z' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1502 (die @ 5) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 36) ␤ at /home/p6ev…
TimToady Z+
notjack_ n: say (1,2,3) Z+ 1;
camelia niecza v24-88-g1f87209: OUTPUT«2␤»
TimToady and you don't need the parens, due to *precedence* :)
you do need the parens for the hyper version, since hypers are more APL-y
nr: say (1,2,3) »+« 1; 23:14
camelia niecza v24-88-g1f87209: OUTPUT«Unhandled exception: Non-dwimmy scalar used with complex item␤ at /home/p6eval/niecza/lib/CORE.setting line 1531 (die @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3361 (ANON @ 15) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3364 (hyper @ 16) ␤…
..rakudo a8ca88: OUTPUT«Lists on both side of non-dwimmy hyperop of infix:<+> are not of the same length␤left: 3 elements, right: 1 elements␤ in sub hyper at src/gen/CORE.setting:14591␤ in sub hyper at src/gen/CORE.setting:14579␤ in block at src/gen/CORE.setting:14570␤ in block at /…
TimToady nr: say (1,2,3) «+« 1;
camelia niecza v24-88-g1f87209: OUTPUT«Unhandled exception: Non-dwimmy scalar used with complex item␤ at /home/p6eval/niecza/lib/CORE.setting line 1531 (die @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3361 (ANON @ 15) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3364 (hyper @ 16) ␤…
..rakudo a8ca88: OUTPUT«2␤»
TimToady bah
nr: say (1,2,3) «+» 1;
camelia rakudo a8ca88, niecza v24-88-g1f87209: OUTPUT«2 3 4␤»
23:15 jferrero joined
TimToady that has the precedence of +, not the precedence of listops 23:15
notjack_ hypers and metas are definitely one of the most exciting things about p6 for me
TimToady because hypers are expected to work more on existing finite structures, not infinite lists
APL assumes finite structures, generally, so made decisions more like hypers 23:16
23:16 FROGGS left
notjack_ both clauses are true, but logically unconnected 23:16
TimToady so you say
notjack_ there's nothing stopping (e.g.) J from allowing +/i._ where _ is infinity
23:16 rom1504 joined
notjack_ we've discussed it any number of times, but nobody donated the tuits 23:17
there are drawbacks to the simplified syntax, for sure
timotimo on the subject of hypers, TimToady, are you planning to review my pull request early enough for me to still have time to fix it up for the upcoming compiler release? 23:18
notjack_ among them, function declaration is fairly primitive
(another reason p6 attracts me)
donaldh night o/
23:18 BooK joined
timotimo night donaldh and thanks for your PR :) 23:19
TimToady timotimo: your notes are a bit terse, but I presume when you say put 'is nodal' into Any, you're talking about putting the trait in, not about making it inherit somehow
23:19 donaldh left
TimToady that is, it inherits the possibility of the trait only 23:19
timotimo yes, that's it. i haven't figured out how to make the inheritance part of it actually work
TimToady probably okay for now, though in that state it forces every class that 'is Iterable' to add 'is nodal', but maybe that's okay for now, and a conservative default 23:20
especially if it looks up the most general form of the method 23:21
timotimo indeed. should i go through and put "is nodal" everywhere that already has "is Iterable"? what about positional and associative then?
TimToady are there any uses of that which aren't iterable? 23:22
timotimo ah, good point. i'll look
23:24 census_ joined
TimToady isn't entire sure how ».foo is implemented any way 23:24
*anyway
timotimo Buf does positional, but not Iterable
TimToady so should Buf default to acting more like a scalar or more like an array? :) 23:25
it's a little of both
timotimo EnumMap does associative but not iterable
23:26 jferrero left, jferrero joined
TimToady r: my $b = Buf.new; say @$b ~~ Iterable 23:26
camelia rakudo a8ca88: OUTPUT«True␤»
TimToady r: my $b = Buf.new; say $b ~~ Iterable 23:27
camelia rakudo a8ca88: OUTPUT«False␤»
TimToady r: my $b = Buf.new(65, 66, 67); say $b»++
camelia rakudo a8ca88: OUTPUT«No such method 'succ' for invocant of type 'Buf'␤ in sub postfix:<++> at src/gen/CORE.setting:2075␤ in sub postfix:<++> at src/gen/CORE.setting:2074␤ in sub hyper at src/gen/CORE.setting:14624␤ in sub hyper at src/gen/CORE.setting:14579␤ in sub METAOP_HYPER_PO…
TimToady heh
r: my $b = Buf.new(65, 66, 67); say @$b»++
camelia rakudo a8ca88: OUTPUT«65 66 67␤»
TimToady arguably that's wrongish 23:28
r: my $b = Buf.new(65, 66, 67); say ++«$b 23:29
camelia rakudo a8ca88: OUTPUT«No such method 'succ' for invocant of type 'Buf'␤ in sub prefix:<++> at src/gen/CORE.setting:2068␤ in sub prefix:<++> at src/gen/CORE.setting:2067␤ in sub hyper at src/gen/CORE.setting:14624␤ in sub hyper at src/gen/CORE.setting:14579␤ in sub METAOP_HYPER_PREF…
TimToady r: my $b = Buf.new(65, 66, 67); say ++«@$b
camelia rakudo a8ca88: OUTPUT«66 67 68␤»
TimToady r: my $b = Buf.new(65, 66, 67); ++«@$b; say $b 23:30
camelia rakudo a8ca88: OUTPUT«Buf:0x<41 42 43>␤»
TimToady r: my $b = Buf.new(65, 66, 67); ++«@$b; say $b.Str
camelia rakudo a8ca88: OUTPUT«Cannot use a Buf as a string, but you called the Str method on it␤ in method Str at src/gen/CORE.setting:8063␤ in method Str at src/gen/CORE.setting:898␤ in block at /tmp/G8xZ0D_U4n:1␤␤»
TimToady r: my $b = Buf.new(65, 66, 67); ++«@$b; say $b.decode("UTF-8")
camelia rakudo a8ca88: OUTPUT«ABC␤»
TimToady aww
timotimo what about List; it does Positional, but not Iterable ... the iterable part comes from the @ container, yes? 23:31
TimToady r: say List.^mro
camelia rakudo a8ca88: OUTPUT«(List) (Iterable) (Cool) (Any) (Mu)␤»
TimToady looks Iterable to me
timotimo oh, btw, should Mu be nodal, too?
TimToady why?
timotimo huh? in my code it just does Positional
i dunno. because Any is ;) 23:32
TimToady Any is nodal to make all the list methods defined in it nodal
what list methods are defined in Mu?
timotimo oooh
List is iterable in Bootstrap!
TimToady my question is where we look up the 'least derived' method to see how it's marked 23:33
timotimo good point. none are defined in Mu.
afaict that part is handled by protos entirely; at least i hope so. 23:34
TimToady @foo».bar pretty much has to do that on the first call to .bar, since you can't call .can without an invocant
timotimo i suppose a test case is in order for a class hierarchy with protos and stuff
TimToady timotimo: most of the methods in Any are not multis
so don't have a proto
timotimo so you're saying if i derive from a class that has a method bar, i can never get rid of its nodalness no matter how hard i try? 23:35
TimToady why I changed the spec to say 'least derived'
say List.^can('elems')
r: say List.^can('elems')
camelia rakudo a8ca88: OUTPUT«elems elems elems␤»
TimToady r: say List.^can('elems')[*-1]
camelia rakudo a8ca88: OUTPUT«elems␤»
TimToady that's the elems you want to check for 'is nodal' 23:36
timotimo oh!
but that's so easy! how is that even possible! ;)
TimToady but instead of List, probably have to use the first element of the structure to do the lookup
timotimo yeah, currently i try to look it up on SELF
i can change that. 23:37
TimToady self might be an array of something entirely unarray-like, so self won't work
timotimo good point.
TimToady Dog.bark might not be nodal even if Tree.bark is
the other question is the extent to which we can assume all the elements of the structure have the same type 23:38
timotimo that's hard. 23:39
TimToady yeah, suddenly we're in static-typing land
timotimo one more problem is that the hyper function gets passed a block -> \obj { obj."$name"(|c) }
not really sure how to make that properly signal outwards if obj."$name"(|c) is actually nodal.
23:40 fridim__ joined
timotimo the block itself never would be just like that. 23:40
TimToady maybe it ends up coming back to requiring a different dispatcher, as the original duckmapping did 23:41
one that will fail on an attempt to dispatch to something nodal
you'd need an extra bit if you want to cache whether you know something is nodal or not 23:43
so you call ."elems" the first time, it doesn't know whether it is nodal, so looks up to *-1 and copies the bit into the earlier method routines 23:44
the spec does say that you can guarantee a single such dispatch for natively typed arrays, since native types don't carry an internal type that could be more specific than the 'of' type 23:45
for non-native arrays, you can at least cache whether the method name is nodal in the most specific method, and not look it up every time in the most general method 23:46
timotimo okay, but native arrays are NYI, no?
TimToady yes, but just figuring how hard to push the static typing thing
vs just guessing from the first element 23:47
or letting each element make its own decision, with caching in the first place it'll find the method
timotimo i'm interested to know how far i have to push this into the "absolutely correct" corner before a first attempt can be merged ;)
TimToady (rather than the last place)
I guess we don't have to make any decision until we find an element that is Iterable (is that what it uses to decide whether to descend?) 23:48
23:48 colomon joined
timotimo yes, if istype(..., Iterable) succeeds, it will attempt to descend 23:49
23:49 iSlug joined
TimToady (1,2,3)»[1] is simply going to fail outright 23:49
timotimo however, at that point, our "op" thing is a block that wraps the method call and i don't see how to figure out if that method call will end up being nodal or not without a very big signaling mechanism around it 23:50
TimToady well, as I said above, if we have a form of ."name" dispatch that fails on something nodal, we can just trap that
timotimo with an exception, yes? 23:51
TimToady it will automatically propagate outside the block on failure
yes
I think a good case could be made then for latching the decision, and never trying for Iterable again 23:52
since it's highly likely that if one .elems is nodal, all of them are
timotimo in that case, what's the difference between checking the first element for nodality and latching upon first finding one that is nodal? 23:53
TimToady otoh, if you're throwing a nodal method at a list of things, it's also pretty certain that all of the elements of the list are Iterable 23:54
so that just degenerates to examining the first element anyway
23:54 pupoque joined
TimToady right, I think we agree on that 23:54
23:54 benabik joined
TimToady so for now, just check first arg and go with it 23:55
that should be an easy enough first approximation, and might work forever :)
timotimo thanks! that's something i can certainly implement with a shred of certainty :P
is it considered acceptable to link to irclogs from source code? 23:56
otherwise i'll summarise why this is an approximation and put up a comment.
TimToady beats me
timotimo i'll briefly summarise 23:57
23:57 Ulti left
timotimo r: ()[*-1] 23:58
camelia rakudo a8ca88: OUTPUT«Cannot use negative index -1 on List␤current instr.: 'throw' pc 353484 (src/gen/CORE.setting.pir:151255) (src/gen/CORE.setting:9273)␤called from Sub 'sink' pc 385900 (src/gen/CORE.setting.pir:163561) (src/gen/CORE.setting:10552)␤called from Sub 'MAIN' pc 401 (src/g…
23:58 Ulti joined
timotimo ah, i'll need to check for that. 23:58
23:58 iSlug left
timotimo r: Bool.^can("i_cant_do_this")[*-1] 23:58
camelia rakudo a8ca88: OUTPUT«Cannot use negative index -1 on List␤current instr.: 'throw' pc 353484 (src/gen/CORE.setting.pir:151255) (src/gen/CORE.setting:9273)␤called from Sub 'sink' pc 385900 (src/gen/CORE.setting.pir:163561) (src/gen/CORE.setting:10552)␤called from Sub 'MAIN' pc 401 (src/g…
timotimo yes indeed
r: say (Bool.^can("i_cant_do_this") || [Mu])[*-1] 23:59
camelia rakudo a8ca88: OUTPUT«(Mu)␤»