🦋 Welcome to the MAIN() IRC channel of the Raku Programming Language (raku.org). Log available at irclogs.raku.org/raku/live.html . If you're a beginner, you can also check out the #raku-beginner channel!
Set by lizmat on 6 September 2022.
00:17 Xliff joined
Xliff \o 00:17
Can someone confirm something for me, pls?
m: "/proc/net/tcp".IO.say
camelia "/proc/net/tcp".IO
Xliff m: "/proc/net/tcp".IO.slurp.say 00:18
camelia sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
0: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 22848609…
Xliff I get more lines when I 'cat /proc/net/tcp' than I do when I have raku '"/proc/net/tcp".IO.slurp'
Is this a feature, not a bug?
kjp I get the same result (lots of lines) here either way. 00:22
Xliff Same number of lines from `cat` as from `raku`? 00:23
teatwo how many more lines? one more? twice as many? 00:31
Xliff About twice, yes.
teatwo how do you count them, wc -l? 00:32
Xliff Look at the first token on the line.
The last token I get from raku is "25:"
From cat "72:"
teatwo i'm sorry I don't understand
Xliff In raku: '"/proc/net/tcp".IO.slurp.lines.elems" 00:33
in shell "wc -l /proc/net/tcp"
And that should be...
In raku: '"/proc/net/tcp".IO.slurp.lines.elems.say"
teatwo oh sorry I don't have access to to a shell atm 00:34
Xliff On my system I get: 27 (raku) and 95 (shell)
No worries, I guess.
00:39 Sgeo joined 00:44 vlad joined 00:48 Manifest0 left
[Coke] try .slurp(:close) 00:58
> 01:00
?
Xliff Same thing 01:29
01:29 hulk joined, kylese left
Xliff And from what I can tell, it's only /proc/net/tcp (and I would guess other /proc entries) that suffers from this. 01:29
So the difference between shell and raku should be concerning. 01:30
I get the same results, even as root. 01:31
antononcube @Xliff You are giving me ideas to test /break "Data::Importers". (Formerly known as "Data::Slurpers".) 01:32
Xliff antoncube: What does that do? 01:43
antononcube: Can you replicate what I am seeing? 01:45
In raku: '"/proc/net/tcp".IO.slurp.lines.elems.say"
in shell "wc -l /proc/net/tcp"
On my system, they are not the same.
Why is that/
It seems like raku will always slurp in a certain amount of data before ending 01:46
Where as cat will go to the proper end.
Using the .slurp from a IO::Handle works properly, though! 01:48
[Coke] is firing up a linux box on azure to check 01:50
Xliff Thanks, [Coke] 01:51
[Coke] I get 7 and 8 here, which might be a trailing newline 01:52
Xliff '"/proc/net/tcp".IO.open( :r ).slurp( :close ).lines.elems.say' # Gets whole file
[Coke] ah, no 01:53
Xliff No?
[Coke] if I run them on the same line, I get the same number here.
Xliff Don't run them on the same line
[Coke] this with rakudo HEAD and #38~20.04.1-Ubuntu SMP Mon Jan 9 18:23:48 UTC 2023 01:54
Xliff You might need to open more connections. Sounds like file is to small
Rakudoâ„¢ v2024.03-16-gc7d24b3df.
antononcube @Xliff "What does that do?" -- The package "Data::Importers" is supposed to provide an universal "importer" or "slurper" function / sub. Right now it ingests PDFs, HTMLs, images, and text for arguments that URLs, file names, or strings. 01:55
Overloads the built-in slurp.
Xliff antononcube: OIC ... nice package! 01:56
However this is more IO::Path, IO::Handle stuff
[Coke] if you're running them at different times, can you expect the same data? (I'm now regularly getting 6 either way)
Xliff [Coke]: Yes.
Your file might be too small. 01:57
Open up a web browser or an irc bot.
[Coke] This machine is a cli only linux box in the cloud. 01:58
Xliff Ah.
OK, then. Thanks for looking.
[Coke] sorry it wasn't more helpful! 02:01
ugexe I get different number of rows between invocations using cat 02:02
Xliff It will change as you open connections. 02:04
However reading the file using IO::Path.slurp in raku is consistently and noticeably smaller than what I get with cat or IO::Handle.slurp
'"/proc/net/tcp".IO.slurp( :close ).lines.elems.say' # 27 02:05
'"/proc/net/tcp".IO.open( :r ).slurp( :close ).lines.elems.say' # 48 02:06
02:06 vlad left
Xliff And on that note, I have to hit the hay. 02:06
02:07 Xliff left 02:15 hulk left, kylese joined 02:42 haxxelotto left, gfldex left 03:38 gfldex joined 05:18 abraxxa joined 05:35 holyghost left 06:00 Sgeo left 07:38 Manifest0 joined 07:50 vlad joined 08:11 dakkar joined 08:17 ptc joined 08:30 sena_kun joined 08:39 haxxelotto joined 09:22 sena_kun left 09:26 haxxelotto left 09:27 haxxelotto joined 09:33 zara joined 09:34 zara left
librasteve o/ 09:49
hi folks - is there an idiomatic way to take a 2D slice from a 2D array?
m: my @m = [[1,2,3],[4,5,6],[7,8,9],]; dd @m[^2,^2];
evalable6 (($[1, 2, 3], $[4, 5, 6]), ($[1, 2, 3], $[4, 5, 6]))
Raku eval (($[1, 2, 3], $[4, 5, 6]), ($[1, 2, 3], $[4, 5, 6]))
librasteve oops 09:50
my @m = [[1,2,3],[4,5,6],[7,8,9],]; dd @m[^2;^2];
evalable6 (1, 2, 4, 5)
librasteve ^^ this one gives a 1D List ;-( 09:51
lizmat to be clear: you'd want ((1,2), (4,5)) as a result, right? 09:56
librasteve yep 10:17
lizmat I'm not sure this is currently possible in core 10:26
librasteve ok - there's likely a cool way with .map 10:27
lizmat for sure 10:30
and possibly abstractable into a nice subroutine
10:30 hudo left
librasteve m: my @m = [[1,2,3,],[4,5,6,],[7,8,9,],]; sub slice2d(@m, \R, \C) {@m[R].map(*[C])}; say @m.&slice2d(^2, ^2); 10:35
evalable6 ((1 2) (4 5))
Raku eval ((1 2) (4 5))
lizmat :-) 10:36
librasteve aka polyslice? (ie in N dims)
lizmat possibly, but an unshaped array we don't know the number of dimensions of 10:37
10:42 amenonsen left
librasteve yeah - probably doing this "properly" when shaped arrays are next improved 10:47
m: my @a[3,3] = [[1,2,3],[4,5,6],[7,8,9]]; my @b[2,2]; say @b = @a[^2;^2]; 10:48
evalable6 (exit code 1) Partially dimensioned views of shaped arrays not yet implemented. Sorry.
in block <unit> at /tmp/_yZ4uGFzte line 1
Raku eval Exit code: 1 Partially dimensioned views of shaped arrays not yet implemented. Sorry. in block <unit> at main.raku line 1
lizmat I did do a lot of work on shaped arrays
m: use v6.*; my @a[3,3] = [[1,2,3],[4,5,6],[7,8,9]]; my @b[2,2]; say @b = @a[^2;^2];
camelia Partially dimensioned views of shaped arrays not yet implemented. Sorry.
in block <unit> at <tmp> line 1
lizmat meh
librasteve ^^ lloks like you already thought of this then (per the error msg)
lizmat m: use v6.*; my @a[3,3] = [[1,2,3],[4,5,6],[7,8,9]]; my @b[2,2]; dd @a[^2;^2]; 10:49
camelia Partially dimensioned views of shaped arrays not yet implemented. Sorry.
in block <unit> at <tmp> line 1
lizmat m: use v6.*; my @a[3;3] = [[1,2,3],[4,5,6],[7,8,9]]; my @b[2,2]; dd @a[^2;^2];
camelia Partially dimensioned views of shaped arrays not yet implemented. Sorry.
in block <unit> at <tmp> line 1
lizmat my mind is currently in way other directions, sorry 10:50
librasteve no worries
11:13 teatwo left
tbrowder interesting. mod i'm working on handles empty cells and fills out rows with empty cells so that's a sparse matrix repr 11:21
11:22 vlad_ joined 11:26 vlad left 11:33 Aedil left 11:37 Aedil joined
tbrowder desired query: @arr[<index range>; <index range>]; yes? 11:50
12:07 jpn left 12:09 jpn joined 12:52 teatime joined
tbrowder ok, i'll add a .slice method 12:55
returning a 2D array of arrays (with an option for empty cells to be filled with a value; optionally defined in the class constructor) 12:58
13:16 perlbot left, simcop2387 left 13:22 haxxelotto left 13:34 simcop2387 joined 13:36 perlbot joined 13:54 ptc left
tbrowder hm, .slice(Range $a, Range $b) would enable that calc 14:14
14:32 ptc joined 14:34 haxxelotto joined 14:49 vlad_ left 14:53 vlad_ joined 14:56 vlad__ joined 15:00 vlad_ left
antononcube I think the following question was recently discussed here. How can read/load/ingest a Raku file with variable and functions definitions in the working sesion? I tried to use use lib <file-name> without success. (In Jupyter.) 15:32
Wsing EVAL does not work either.
15:35 silug left 15:36 silug joined
_grenzo Would require work? 15:38
antononcube @_grenzo Thanks! Did not work as I expected, but it made me read the documentation around it, that actually helped me to find the right approach. 15:50
_grenzo What did work? 15:51
15:55 jpn left
antononcube Ok, I made it with work with require. (Apparently, I forgot how to use require properly...) 16:03
I have a file with LLM services access configurations. So here is my loading code: use lib <.>; require LLMConfigurations <$conf3 $conf4 $conf4-turbo $conf-gemini $conf-gemini-preview>; 16:10
It is more involved than I want/prefere, but still it is more concise than what I used before... 16:12
16:13 vlad__ left
ugexe require WHATEVER:file</Users/nlogan/repos/Foo.rakumod> <$x>; say $x 16:20
you can use something like that too which might be better for you since you don't need to add a library path
antononcube @ugexe Great!
16:25 vlad joined 16:47 dakkar left 16:52 ptc left 17:25 sena_kun joined 17:54 haxxelotto left 18:07 jpn joined 18:24 vlad_ joined 18:26 jpn left 18:28 vlad left 18:37 abraxxa left 18:52 abraxxa joined 18:55 vlad__ joined 18:59 vlad_ left 19:21 vlad__ left 20:04 zara joined 20:06 abraxxa left 20:15 zara left 20:18 zara joined, zara left 20:24 vrurg_ joined 20:26 vrurg left 20:35 vrurg_ is now known as vrurg 20:39 jpn joined 21:46 jpn left 22:14 Sgeo joined 23:34 sena_kun left