»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
Set by moritz on 22 December 2015.
timotimo many modules in the ecosystem are using abspath ... 00:56
AlexDaniel ^_^ 01:01
samcv i think i may have used it once myself 02:02
samcv not in an eco module though 02:02
AlexDaniel I thought whateverable used abspath, but no, it is using .absolute method 02:05
and also only chdir sub, not method
feels like I won't need to change any code because of IO grant work 02:06
Zoffix++
samcv i think i've almost gotten travis ci to make commits to my repo of appimage builds 03:16
crossing my fingers. it works the next time
samcv \o/ 05:25
samcv i got it! 05:25
sweet github.com/samcv/rakudo-appimage/tree/gh-pages 05:29
my matrix of 4 commited appimages for each one 05:30
lizmat sjn++ # good catch, fixed 07:10
moritz what's an appimage? something for macos? 07:12
samcv no, linux 07:15
you download the binary, and run it. standalone
moritz so statically compiled? or some kind of package manager?
samcv uh.
not a package manager
moritz or like an .exe installer for windows?
samcv no 07:16
moritz a thick today
samcv you +x it
then run it
and it starts perl6 prompt
that's it.
samcv no install 07:16
and you can put it in whatever path you want 07:17
moritz wow, that's *way* cool
samcv yeah
u-ou is it like docker
moritz relocatable!
samcv dl github.com/samcv/rakudo-appimage/tree/gh-pages one of these
the stable is uh. things work fine
the testing you can give it relative paths and it will find things
and that works mostly fine but there's some hackage of the command line args in the perl6 shell script 07:18
not really u-ou
it's like those linux iso's
same format. like an executable tmp disk image
thing...
u-ou ahh
samcv idk it's great. lots of hacks to get it to work though, including patching all the binaries 07:19
to have relative paths ;)
it builds in /rsu folder. and then my build script i made patches the binaries into ././
and many other assorted things
and i just an hour or so ago, got travis commiting to the repo with appimages that travis builds itself 07:20
which is amazing 07:21
i could put it on a cron and have it do nightly builds of rakudo blead
samcv heh nice. just pushed changes to the build script. and now a new appimage build is in the repo built 07:23
so sweet
Geth Inline-Python: 90cea00249 | (Stefan Seifert)++ | 4 files
Fix "Representation must be composed before it can be serialized"

Modules using Inline::Python may not be precompiled as the Python interpreter's state cannot be saved/restored.
08:01
nine .tell AlexDaniel re irclog.perlgeek.de/perl6/2017-03-30#i_14348415 fixed in Inline-Python commit 90cea00249
yoleaux nine: I'll pass your message to AlexDaniel.
samcv moritz, the appimages will be seamless if I can figure out a way to make perl 6 change directory on being run 08:40
if we had a command line argument or something to do that, would solve the last main issue with the appimages, with them starting out with $*CWD in the ramdisk/whaever it is 08:41
mounted squash image
Zoffix PSA: Merge your PRs: 10:20
huggable: IO kills
huggable Zoffix, [XXXXX XXXXX XXXXX XXX]: See gist.github.com/zoffixznet/0ea1f4d...3f8dd11cc1
lizmat clickbaits p6weekly.wordpress.com/2017/04/10/...15-kaboom/ 10:45
melezhik Hi Perl6 gurus! 10:50
I am struggling with main sub , passing options as array
perl6 -e 'sub MAIN ( Array :@a ){ }' -a=1
get this: usage: -e '...' [-a=<Positional[Array]>] 10:51
and none zero exit code
masak yes, because that `1` you're passing is not an array 10:52
melezhik so, how can I pass is as array?
masak I've never thought about it. not sure you can
ilmari perl6 -e 'sub MAIN (Int :@a){ say @a }' -a=1 # no worky either 10:53
Usage: -e '...' [-a=<Positional[Int]>]
Array :@a asks for an array of arrays 10:54
masak oh, right. forgot to mention that.
jnthn I think the only place an array makes sense in MAIN is a slurpy one
masak that's an eternal gotcha for newcomers; the `@` already encodes Array/Positional
melezhik well, let me reshape , how can I pass a list of values to MAIN sub? is it possible? 10:55
jnthn melezhik: I'm not aware of a way besides the slurpy 10:56
melezhik ok
jnthn sub MAIN(*@foo) { } # if you run it as script foo bar baz, then @foo has 3 elements
jnthn has used that somewhere 10:57
lizmat melezhik: perhaps -a=1,2,3 and then split on ',' ?
melezhik good, but I need to pass a named parameters
jnthn OK, then juist take a string and split it yourself
As lizmat suggested
melezhik yeah, I already have a "split" version
just looked more elegant way
but that's ok
lizmat melezhik: or perhaps .words
melezhik will go with "split", not a big deal ... 10:58
jnthn I don't think there is one... Also if there was then it might also mean that you could pass -a=1 -a=2 and so on and it should collect all of the a options into the array
So it's not clear an auto-split semantic is what's wanted either
melezhik yeah, not still clear why "-a=1 -a=2 -a=3" is bad idea? 10:59
jnthn melezhik: I didn't say it was a bad idea, just that it might be a more natural mapping for arrays in MAIN signatures 11:00
(Than splitting a single thing)
It can't mean both things, so we'd have to pick 11:01
melezhik jnthn : Ok, I see 11:01
melezhik as for me "-a=1 -a=2 -a-3" would be good )) 11:02
masak $ perl6 -e 'sub MAIN(:@a) { say @a }' -a=1 -a=2 11:05
[1 2]
seems to work
jnthn Oh...
jnthn had no idea :)
ilmari oh, I had an ancient rakudo, so my test was probably invalid 11:06
ilmari brews a new one
jnthn I note usage is like
[-a=<Positional>]
Which is a bit LTA
masak aye
m: sub foo(:$a) { say $a }; foo(a => 1, a => 2)
camelia 2
jnthn That's what I was going on when I figured it didn't know how to handle it.
masak some time in the distant past, this used to be spec'd to also make an array 11:07
but I think moritz and I killed off that bit, mebbe
semi-funnily, the "make an array" semantics makes some sense now that I consider it in light of MAIN, which I'm sure I didn't way back when
ilmari masak: ah, it works without the type constraint on the array parameter 11:11
but only if you pass more than one -a
masak yes, type constraints on arrays are more or less useless in Perl 6
masak yes, you need to pass more than one -a for it to *become* an array 11:11
heh. my several-years-down-the-line impression of Perl 6's efforts at being DWIMmy with types is... "don't" :P 11:12
I'd rather be explicit about what's an array/list/sequence than suffer the WATs of Perl 6 trying to figure it out 11:13
m: sub foo(:$x) { say $x.^name }; foo(<oh>); foo(<oh hai>)
camelia Too many positionals passed; expected 0 arguments but got 1
in sub foo at <tmp> line 1
in block <unit> at <tmp> line 1
melezhik masak: good to know! thanks will try 11:14
masak m: sub foo(:$x) { say $x.^name }; foo(:x<oh>); foo(:x<oh hai>)
camelia Str
List
timotimo we can totally use the appimages to speed up all the travis builds. don't have to first compile moar, nqp, and rakudo. just download the appimage and go 11:44
melezhik masak: looks like :@a approach is limited 11:57
ahh, sorry, probably I am wrong ...
let me try another tests on this ... 11:58
melezhik masak: your example works for me, thanks! 12:06
perlawhirl hi perlers 14:03
clickbaits: www.0racle.info/articles/matplotlib_in_p6_part7
last part of this series 14:04
masak perlawhirl++
perlpilot perlawhirl++ indeed. 14:04
timotimo oh cool 14:05
perlpilot perlawhirl: Did you add Matplotlib to the ecosystem? If not, you should :) 14:12
timotimo "Taking a scene the from Part 6 script" has two words swapped
perlawhirl timotimo: fixed, thanks 14:13
timotimo perlawhirl: you could have also written "matplotlib.pyplot.cm.$name\($idx)"
timotimo or "matplotlib.pyplot.cm.{$name}($idx)" should also work 14:14
perlawhirl perlpilot: I kind of don't wanna be in a position where people are asking me to fix issues, but I may throw the whole thing up in a gist.
timotimo: interesting... i might add a note mentioning that 14:15
timotimo m: my ($name, $index) = <foo 1>; say q:v"a.b.c$name($index)" 14:15
camelia a.b.c$name($index)
timotimo m: my ($name, $index) = <foo 1>; say q:s"a.b.c$name($index)"
camelia No such method 'CALL-ME' for invocant of type 'Str'
in block <unit> at <tmp> line 1
timotimo m: q:s"hi" 14:16
camelia WARNINGS for <tmp>:
Useless use of constant string "hi" in sink context (line 1)
timotimo ah, ok
so we have :s for scalar which "interpolates $ vars", but we don't have a way to turn off the method call detection? 14:19
robertle anyone got a tip for a url-en/decoding and splitting module? 14:25
http that is of course
Ulti robertle: github.com/perl6-community-modules/uri looks like the main one 14:27
robertle: modules.perl6.org/ for finding them 14:28
perlawhirl perlpilot: gist is up... i'll add a note at the end of the blog post too: gist.github.com/0racle/db70e910a3e...f1b561e8d7 14:29
feel free to throw it on the ecosystem if you like :D 14:30
robertle Ulti: thanks! I was aware of modules.p.o but was too stupid (URL vs URI...) 14:31
Ulti yeah URI is the generalisation 14:32
file:///root/ etc.
raschipi URI is a bigger generalization than that. file:/// for example, is a URL too. 14:46
raschipi URI is the union between URLs and URNs. 14:47
URNs of course, were abandoned.
ilmari ISBNs are examples of URNs
raschipi Yeah, they are. But I haven't seen them used in the internet. There's DOI, but there's not much use too. 14:49
raschipi There's only 5,000 DOI users in total, tiny. 14:50
melezhik masak: universal way is perl6 -e 'sub MAIN( :$a) { say $a }' -a=1 -a=2 14:51
melezhik as it works for both -a=1 (scalar) and -a=1 -a=2 (array) 14:51
moritz raschipi: how did you count that? 14:53
raschipi DOI foundation numbers. 14:53
moritz I used DOIs when I was still in academia, but probably not in any way you could have counted 14:54
raschipi: those are probably just the institutions that generate new DOIs; many more users actually use them
raschipi It's the number of entities that can register them. Of course they're all big and register a lot of them for their affiliates.
moritz: Yes, I agree.
moritz much like there is a small number of institutions that allocate ISBNs, but everybody who buys or cites a book uses them 14:55
raschipi Well, it is growing. They recently creted a registration authority system, similar to what ICANN does for domain names. 14:57
timotimo or like domain names
raschipi Anyone can get a domain name, some people buy them for fun, like Zoffix with his perl6.party and perl6.vip 14:58
timotimo yeah, but only few can issue them 14:59
raschipi Yeah, it's the same on both systems now that the foundation has accreditated companies. The difference is that few can buy DOI names. 15:00
robertle or my own exceptions, do I really want to put them into X::MyApp rather then have MyApp as the top-level namespace? 16:02
Geth specs: 9d446a48af | (Zoffix Znet)++ (committed by GitHub) | v6d.pod
Add reminder to deprecate IO::Handle.slurp-rest in 6.d
16:31
moritz DrForr: please merge github.com/drforr/perl6-Inline-Sch...ile/pull/6 soon 16:49
Geth ecosystem: f07cf965cd | (Zoffix Znet)++ (committed by GitHub) | META.list
s/META.info/META6.json/ for drforr/perl6-ANTLR4
16:53
TreyHarris Isn't there a 'use Very::Long::Name :as<Short>;' feature? I thought there was, but I can't find it 17:00
geekosaur no, in perl a module is always in its specified namespace. in perl 5 there's a glob-alias hack; dunno offhand how you'd translate it to perl 6 17:02
TreyHarris And related question: how can I create a class named the same as one that's already been used and still refer to the old class? In this case, I want to use a native Perl 6 class that's named the same as a class that I got using Inline::Perl5 17:02
geekosaur (you may be thinking of haskell's import ... as ?)
TreyHarris geekosaur: I definitely am, but I thought Perl 6 had similar. 17:03
geekosaur problem being that perl has an actual gobal namespace
*global
so the module space you see is the module space everything sees
TreyHarris Right. Can I do some lexical tricks to solve either problem? Make A::Very::Very::Long::And::Unwieldy::Module something I can refer to with a shorter variable, or to refer to the :from<Perl5> variant separately from the Perl 6 variant? 17:04
Geth ecosystem: f07cf965cd | (Zoffix Znet)++ (using GitHub Web editor) | META.list
s/META.info/META6.json/ for drforr/perl6-ANTLR4
17:05
TreyHarris (To put into context: as part of my project, I will need to port a Perl 5 module, because using it directly via Inline::Perl5 is unwieldy and misses some very obvious features because it isn't Perl 6. Porting the module is going to be slightly painful, and for my POC I wanted to just write a bridge. I can do that--*have* done that--by slapping ::P6:: into the namespace of the Perl 6 bridge. But I _keep_ making 17:09
the mistake of referring to the Perl 5 name instead of the ...::P6::... name, and because it works 90% of the time, it ends up being a really annoying bug to squash. So just naming my bridge exactly the same as the Perl5 module would fix it, but it appears that is just not possible?)
geekosaur no, you'd have to inject the p6 stuff into the p5 module's namespace... which might be difficult given it lives in perl 5 17:13
TreyHarris Sigh. Maybe my best bet then is to rename my bridge into something very different from the P5 version and very short (instead of Proc::ProcessTable:from<Perl5> and Proc::ProcessTable::P6, maybe XBridge::ProcTable), then I can do a grep-replace once I've ported Proc::ProcessTable. 17:16
TreyHarris Different subject: I'm finding in writing Inline::Perl5 bridges in general (which I do frequently for one-offs and POCs), there's a frequent need for something like this for "static methods": multi method foo (Klass:U $:) { self.new.foo } multi method foo (Klass:D $:) { ... } 17:24
Is there a shorter/idiomatic way for that?
b2gills constant AVVLAUM = A::Very::Very::Long::And::Unwieldy::Module; 17:25
TreyHarris b2gills: yes! Looking at my WIPs, I tried that, but when I had a different bug going on at the same time masking the issue. though I did binding to the const.... is there any reason to prefer "constant XYZ = X::Y::Z" over "constant XYZ := X::Y::Z"? 17:33
TreyHarris they both seem to work interchangeably from quick REPL noodling 17:33
MasterDuke TreyHarris: if you look at the --target=ast for both they're identical (except the places where it prints the input line), so seems to be interchangeable 17:36
TreyHarris MasterDuke: yup, thanks 17:38
AlexDaniel . 18:15
yoleaux 08:01Z <nine> AlexDaniel: re irclog.perlgeek.de/perl6/2017-03-30#i_14348415 fixed in Inline-Python commit 90cea00249
AlexDaniel nine: thanks!
unclechu what would be native equvalent to `run(Q:w <tput cuu 1>, :out).out.get` (i use it to get char that i can print to move cursor one line up)? 18:41
like `chr(8)` to get char to move cursor one column left
moritz qx/tput cuu 1/ 18:42
what do you mean by "native"?
unclechu moritz: like special char code for `chr` function 18:43
moritz unclechu: you can reference characters by name, if that's what you're looking for 18:43
"\c[BACKSPACE]" 18:44
unclechu moritz: i'm not looking for backspace, i already have it (`chr(8)`), but for char that `tput cuu 1` command prints 18:45
if anyone know this char name
MasterDuke unclechu: i added `.uniname.say` to your example and it reports `<control-001B>` 18:47
moritz $ perl6 -e 'say qx/tput cuu 1/.uninames.join: ","'
ESCAPE,LEFT SQUARE BRACKET,DIGIT ONE,LATIN CAPITAL LETTER A
unclechu or a code
MasterDuke unclechu: for `.ords.say` i get `(27 91 49 65)` 18:50
unclechu so, i guess it is sequence of symbols, i'll try
moritz "\c[ESCAPE][1A" 18:51
perlpilot unclechu: you could always do "tput cuu 1 | xxd" from the command line to see what it outputs. 18:52
unclechu: change xxd for your favorite hex dumper :)
moritz hexdump -C is also nice 18:53
unclechu thanks a lot to all of you, that solved my issue and i got more useful ways to debug stuff 18:55
[Coke] perl6 -MApp::Uni -e 'say uni-gist $_ for qx/tput cuu 1/.comb' # should be able to make this awesomer.
[Coke] uni -c $(tput cuu 1) # awesomer. 18:56
perlpilot [Coke]++ (Why isn't uni-gist built-in yet?) 18:58
[Coke] u: • 19:00
unicodable6 [Coke], U+2022 BULLET [Po] (•)
perlpilot [Coke]: I get test failures trying to install that module via zef. Looks like it's because bin/uni can't find App::Uni (i.e. when I "zef look App::Uni" and "export PERL6LIB=lib" the tests run fine) 19:05
unclechu am i only one person who have this issue: github.com/perl6/perl6-lwp-simple/issues/12 ? 19:07
[Coke] perlpilot: I think it's the same bug that ugexe pointed out to me, I have to make the tests smarter because it's exec'ing p6
unclechu it's sad because i can't install gtk::simple that depends on lwp::simple 19:08
can i ignore failing tests while install package using `zef`? 19:09
gfldex unclechu: run `zef install --force LWP::Simple`
if you use Perl 6 sometimes the force needs to be with you 19:10
alphah Does "_" has special meaning here or just key name: %hash<_> = $<toplevel>.ast.hash 19:24
gfldex no special meaning
alphah Thanks 19:25
unclechu gfldex: thanks, it helps
what does `c` in `use v6.c;` mean? 19:26
`ceil`?
alphah christmas!
gfldex from the standpoint of the compiler, it doens't have special meaning beyond 'b'.succ 19:27
m: dd (v6.c).succ
camelia No such method 'succ' for invocant of type 'Version'
in block <unit> at <tmp> line 1
TreyHarris Is there an idiom or something that will help with creating "static methods" that can be called on instances, or, when called on classes, call the method on a throwaway object? See gist.github.com/treyharris/9199028...b504d246bd 19:30
gfldex TreyHarris: you could use $?CLASS 19:36
El_Che don't you just want a sub for that?
gfldex m: class C { our sub s(){ dd $?CLASS::new } }; C::s 19:39
camelia Any $v = Any
gfldex m: class C { our sub s(){ dd $?CLASS.new } }; C::s
camelia C.new
TreyHarris gfldex: As in 'multi method hrm($?CLASS:U $: Int $n)' ? 19:40
jnthn Would need to be ::?CLASS:U
And the $ ain't needed
gfldex yes, that can help if you copypasta from methods between classes
TreyHarris That gives me en error: In signature parameter $?CLASS, it is illegal to use the ? twigil
jnthn Though this is optional; any method that doesn't access attributes can be called on the type object
So unless for some reason you want to *force* the user to only ever call it on the type object, and never on an instance, there's no particular need to mark it 19:41
TreyHarris yes, ::?CLASS:U works.
jnthn m: class C { method m() { say "look I'm static!" } }; C.m;
camelia look I'm static!
TreyHarris jnthn: but then I can't call it as a class method 19:42
gfldex m: class C { method m() { say "look I'm static!"; dd self } }; C.m;
camelia look I'm static!
C
gfldex please note that self in this case points to the type object, not an instance of C
TreyHarris jnthn: Your example isn't relevant because it doesn't use an instance attribute. The compiler catches that and complains.
My gist does that
Are you saying in my gist I can remove the multi from the ":D" version and remove the ":U" version completely and get the same behavior? Because I'm not... 19:43
jnthn Ah, no
You want more than just a static method, I see
So yeah, multi over :D and :U is the way to go 19:44
TreyHarris So ::?CLASS is my first fix. Can I avoid repeating "hrm"?
gfldex m: class C { method m() { self := self // C.new } }; C.m;
camelia 5===SORRY!5=== Error while compiling <tmp>
Cannot use bind operator with this left-hand side
at <tmp>:1
------> 3 C { method m() { self := self // C.new 7⏏5} }; C.m;
jnthn An alternative idiom for this might be 19:44
TreyHarris (Reload the gist for the ::?CLASS version.) 19:45
jnthn m: class C { has $.x = 0; method m($self is copy:) { .= new without $self; say $self.x } }; C.m
camelia 5===SORRY!5=== Error while compiling <tmp>
Preceding context expects a term, but found infix .= instead
at <tmp>:1
------> 3s $.x = 0; method m($self is copy:) { .=7⏏5 new without $self; say $self.x } }; C.m
gfldex callwith should work if you provide the invocant by hand
jnthn m: class C { has $.x = 0; method m($self is copy:) { .=new without $self; say $self.x } }; C.m 19:46
camelia 0
jnthn Though that'll only work if youuse the . forms, not the ! forms, of attributes
TreyHarris what's the correct callwith syntax then?
jnthn An alternative is to just to meta-programming and write a MOP module that wraps everything :) 19:47
*just go
gfldex TreyHarris: i wrote 'should' not 'will' to indicate a guess on my side 19:49
TreyHarris jnthn, this is not the correct syntax, can you tell me what is? callwith(self.new(): $n); 19:51
jnthn callwith iterates an existing candidate list, rather than re-dispatching
So that isn't useful in this case
jnthn I *think* samewith - which does redispatch - also latches onto the original invocant 19:53
TreyHarris jnthn: I'd dealing with a whole mess of Perl5 modules that all have this issue where all methods must be called on a blessed reference even though that's only in order to get defaults. (Specifically, they all have "->fields" methods which tell you what fields are available for the given class, which is surely not something you need an instance for, but the way it was done in Perl 5 requires it.) I was trying 19:55
to write bridges to fix this behavior along with methods that used directly via Inline::Perl5 results in broken list-return behavior.
jnthn: samewith has exactly the same behavior as nextwith and callwith I wrote in my comment notes. 19:57
jnthn *nod*
So, MOP-y stuff is likely the best way 19:58
m: multi trait_mod:<is>(Method:D $m, :$auto-new!) { $m.wrap: -> \obj, |c { callwith(obj.DEFINITE ?? obj !! obj.new, |c) } }; class C { has $.x = 0; method m() is auto-new { say $!x } }; C.m; C.new.m
camelia 0
0
jnthn That's probably the minimal way
With a little more effort you can make it into a class trait
So you only have to put "is auto-new" on the class, not on each method 19:59
Though maybe that's too sweeping
But it gets away from having to to :U/:D stuff and re-mention the method name
m: multi trait_mod:<is>(Method:D $m, :$auto-new!) { $m.wrap: -> \obj, |c { callwith(obj.DEFINITE ?? obj !! obj.new, |c) } }; class C { has $.x = 0; method m() is auto-new { say $!x } }; C.m; C.new(x => 42).m # just checking :)
camelia 0
42
20:00
jnthn phew :)
TreyHarris but with that I'd write: use Whatever:from<Perl5>; class P6::Whatever is Whatever { method fields is auto-new { nextsame; } }
nine TreyHarris: feel free to ping me if there's anything I can do on the Inline::Perl5 side.
jnthn Do you need it to be a subclass?
And to respond correctly to .can? 20:01
If those don't matter than there's just wrapping it up and using FALLBACK
TreyHarris jnthn: "need"? Perl5 objects don't respond correctly to .can. But I would like to avoid rewriting the names of methods whose behavior I don't need to change 20:02
nine: my biggest issue has been with methods that return lists... the container they return is very odd. comparing 'my $t = FromP5.new.listy(); my @t = FromP5.new.listy();' is strange. Neither is directly iterable, but $t.elems is correct and $t can be indexed, while @t.elems is 1 and the single element is another list. I've dealt with this by wrapping such methods in 'method listy (--> Slip(Any)) { return 20:04
FromP5.new.listy(); }'
Also, oddly, 'my $obj = FromP5.new; $obj.listy() === $obj.listy() or die' dies, as does eqv and =:= 20:05
Oh! Sorry, only when something within the overall object is in XS. Hope you weren't writing your own test for this. (Proc::ProcessTable is a very simple thing to see this behavior.) 20:08
Proc::ProcessTable.new.table shows this behavior for instance. 20:09
Pure Perl5 seems to get translated okay. 20:10
nine TreyHarris: that sounds odd. Perl 5 arrays get wrapped in a Perl5Array object which does Iterable and Positional
TreyHarris nine: gist.github.com/69bac1c14bfd033de4...2830630288 20:16
(must go for ~1hr, sorry) 20:17
nine TreyHarris: if those wrappers misbehave, you can also just .list them 20:19
TreyHarris nine oops sorry on phone so briefly: yes positional and iterable but the @version only has single element, @var[0] is actual list. Is why I used a Slip(Annie) return type 20:22
*Any 20:23
nine my @t = Proc::ProcessTable.new.table.list
^^^ does what you need
Aaaand I may have a patch that fixes the issue altogether 20:26
Just have to sprinkle some "is raw" to avoid containerization of the Perl5Array return object.
Geth Inline-Perl5: 2b5d854575 | (Stefan Seifert)++ | 2 files
Support .can on Perl5Objects
20:29
TreyHarris nine: I see. .fields does not exhibit this behavior because its structure is pure Perl. But I can do a trait that just puts ".list" at the end of everything; I do enough maps and greps and such in code that having to put .list in each place it should go will be annoying. Got to write an override either way; not sure if "method table (--> Slip(Any)) { $p5obj.table }" or "method table() { $p5obj.table.list }" is 20:30
better. First is a few chars shorter, so it wins? :-)
nine TreyHarris: I already have a patch for making my @t = Proc::ProcessTable.new.table; do what you need. Just need to write a test for it. 20:31
Writing a test seems to be the harder part actually... 20:33
TreyHarris nine: Always is the case innit 20:34
nine Can't get the darned thing to fail :) And I also don't see why it should make a difference if a sub is in XS or pure Perl. They all just push onto the stack and Inline::Perl5 doesn't even know what exactly it is. 20:53
nine Ooooh...of course! Proc::ProcessTable::table returns an array ref, not just an array. 20:59
TreyHarris: I wonder if Inline::Perl5 is actually correct there. A Perl 5 array reference sounds like it's closer to an itemized Perl 6 array than a flat one. 21:00
TreyHarris nine: It's arguably "closer" but it's far, far more unwieldy (unless you know to just never use it until you use .list). In Perl5, the most you need do is add an @-sign to get it to work with built-ins, for, etc. In Perl 6, I was tearing my hair out trying to figure out if there was any way to assign it to an @array. Even '@a = ...table; @a = @a[0]; @a = @a[0]; say @a.elems' still gave you the same darn thing. 21:11
TreyHarris nine: In fact, you can't delay the '.list'. "my @a = ...table; say @a.list.elems # 1" is just as unusable. You have to do ".list" at call-time or wrap it in a Slip(Any). Otherwise, you're stuck with something that's uniterable and un-flat()-enable and only indexable through @a[0][$n], though @a[0] itself isn't iterable. It really, really confused me for a long time 21:18
Geth doc: a30fae6896 | (Zoffix Znet)++ | doc/Type/IO/Path.pod6
[io grant] Avoid potential confusion with use of word "object"

Where it does not refer to an OOP object
22:05
unclechu can i mark an argument of subroutine to copy that i can mutate? 22:17
sammers "is copy"?
sub foo($i is copy) {...} 22:18
unclechu sammers: thanks, that's it 22:26
sammers np 22:27
Geth doc: 2aa3c9f609 | (Zoffix Znet)++ | doc/Type/IO/Handle.pod6
[io grant] Document new behaviour of IO::Handle.Supply

  - Expand description
  - Add examples
23:25