🦋 Welcome to the former MAIN() IRC channel of the Raku Programming Language (raku.org). This channel has moved to Libera (irc.libera.chat #raku)
Set by lizmat on 23 May 2021.
00:01 chrysanthematic joined 00:02 reportable6 left 00:03 jess joined, reportable6 joined 00:04 chrysanthematic left 01:04 nativecallable6 left, bloatable6 left, evalable6 left, benchable6 left, notable6 left, reportable6 left, squashable6 left, unicodable6 left, greppable6 left, linkable6 left, shareable6 left, releasable6 left, tellable6 left, coverable6 left, bisectable6 left, quotable6 left, committable6 left, sourceable6 left, statisfiable6 left 01:05 sourceable6 joined, quotable6 joined, bisectable6 joined, shareable6 joined, coverable6 joined, notable6 joined, releasable6 joined, greppable6 joined 01:06 nativecallable6 joined, squashable6 joined, linkable6 joined, bloatable6 joined, tellable6 joined 01:07 committable6 joined, evalable6 joined, unicodable6 joined, benchable6 joined, statisfiable6 joined, reportable6 joined 02:07 notable6 left, unicodable6 left, bisectable6 left, linkable6 left, nativecallable6 left, quotable6 left, bloatable6 left, shareable6 left, committable6 left, reportable6 left, sourceable6 left, evalable6 left, tellable6 left, benchable6 left, statisfiable6 left, releasable6 left, coverable6 left, greppable6 left, squashable6 left 02:08 releasable6 joined, committable6 joined, tellable6 joined, linkable6 joined, sourceable6 joined, quotable6 joined, statisfiable6 joined 02:09 coverable6 joined, benchable6 joined, unicodable6 joined, nativecallable6 joined, greppable6 joined, bloatable6 joined, shareable6 joined 02:10 evalable6 joined, notable6 joined, reportable6 joined, squashable6 joined, bisectable6 joined 02:59 melezhik left
xinming releasable6: status 03:22
releasable6 xinming, Next release in ≈15 hours. There are no known blockers. 1 out of 37 commits logged
xinming, Details: gist.github.com/1a717b1779cb3d0e1b...b36fe781b2
03:59 evalable6 left, linkable6 left 04:01 linkable6 joined 04:02 evalable6 joined 05:02 benchable6 left, statisfiable6 left, linkable6 left, tellable6 left, committable6 left, coverable6 left, bisectable6 left, releasable6 left, quotable6 left, evalable6 left, reportable6 left, squashable6 left, nativecallable6 left, shareable6 left, sourceable6 left, greppable6 left, notable6 left, unicodable6 left, bloatable6 left, greppable6 joined, statisfiable6 joined, reportable6 joined 05:03 nativecallable6 joined, tellable6 joined, unicodable6 joined, quotable6 joined 05:04 coverable6 joined, releasable6 joined, notable6 joined, benchable6 joined, evalable6 joined, bisectable6 joined, linkable6 joined, committable6 joined, squashable6 joined 05:05 sourceable6 joined, bloatable6 joined, shareable6 joined 05:14 RandalSchwartz left
guifa codesections: lol @ reddit post 05:18
codesections :D I've been listening to www.arraycast.com/ and was feeling inspired 05:19
Why should APL have all the fun?
moon-child lol 05:20
once we get user-defined metaoperators, it'll be possible to implement the entirety of apl syntax in raku
codesections well, sort of. You'd need to change the language semantics quite a bit to _really_ support the full syntax. 05:21
(And are user-defined metaoperators on the roadmap/in the synopses?) 05:22
moon-child well, you wouldn't get stranding, but you can just define new multis for the existing +-×÷
I guess no trains either 05:23
my understanding is that user-defined metaoperators are desired, but no one has done the work to make them happen; and that rakuast is perhaps a bridge in that direction
codesections Unless your multis totally overide the existing +-×, etc, you wouldn't get pure right-to-left order of operations either 05:26
moon-child good point 05:27
codesections and I don't think there's any way to make our functions infix-by-default (though we do have the [&fn] form) 05:28
05:31 Xliff left 05:33 Doc_Holliwood joined
moon-child thinks about making an apl implementation in raku 05:39
I don't think you could ever make it fast, even with nqp. But you could probably get a quite nice, clear expression of semantics 05:40
guifa I think I'm the only one who's theorized about custom metaops 05:42
but I also don't know what said metaop would do
like we have them for crossing, zipping, reducing (two ways!), reversing, assigning, inverting, and mapping. What else is there really? 05:44
moon-child apl operators: key, commute, at, atop, beside/bind, over, power, rank, stencil 05:46
all the metaops are just higher-order functions which are implemented elsewhere, so you could say: why bother with metaoperators at all?
or, conversely: every higher-order function could be a metaoperator 05:47
codesections moon-child: I was thinking about that list too, but I think many of those could be regular Raku operators (rather than meta, I mean)
e.g., stackoverflow.com/questions/673469...or-in-raku 05:48
guifa I guess I'd need to look up how those modify an operator
Um, wow. NQP lists are crazy faster than Raku arrays 05:50
moon-child codesections: yeah, but then you'd only be able to pass functions to them. (Or &[stuff].) I mean, you can do everything with functions; that's numpy 05:51
guifa: buf is also fast if you're working with packed ints
guifa I actually tried doing some work with buf once but I don't remember it feeling too terribly much faster. But maybe at the NQP level it will get similar speed bumps 05:52
compare
m: my @a; my $b = DateTime.now; for ^1000000 { push @a,$b }; say @a[999999]; say now - BEGIN now;
camelia 2021-06-19T07:52:37.717169+02:00
0.197872629
guifa whoa, did something get changed? TIO has that taking a solid 10 seconds 05:53
m: use nqp; my $a := nqp::list(); my $b = DateTime.now; for ^10000000 { nqp::push($a,$b) }; say nqp::atpos($a,9999999); say now - BEGIN now;
camelia 2021-06-19T07:53:34.796108+02:00
0.187050531
guifa recalls… was it lizmat? doing something with speeding up arrays. I guess that's the effect of it 05:54
codesections moon-child: You mean "only functions" as opposed to "functions & operators"? You'd be able to pass Str, List, etc just fine to the non-meta versions, right?
moon-child yeah 05:55
eh...this is strange. ix.io/3qpx the raku version takes 4.1s; the nqp version 1.5s; and the buf version 2.5s 05:58
guifa try mixing up the order: when I've done perf tests like that, the order can be significant (first one is almost always the slowest, for instance) 06:01
06:02 kylese joined
moon-child reversed them; the specific numbers change, but the order stays the same 06:02
(actually buf gets faster) 06:03
06:03 reportable6 left 06:05 reportable6 joined
moon-child why is there no write-num32 for buf32, nor write-num64 for buf64? 06:35
I guess ieee has undefined endianness, completely aside from byte order 06:36
07:05 evalable6 left, linkable6 left 07:06 linkable6 joined, evalable6 joined 07:19 Doc_Holliwood left 08:19 shareable6 left, greppable6 left, benchable6 left, sourceable6 left, committable6 left, bloatable6 left, notable6 left, linkable6 left, reportable6 left, squashable6 left, quotable6 left, nativecallable6 left, bisectable6 left, tellable6 left, statisfiable6 left, coverable6 left, unicodable6 left, evalable6 left, releasable6 left, reportable6 joined, nativecallable6 joined 08:20 notable6 joined, unicodable6 joined, committable6 joined, sourceable6 joined, evalable6 joined, tellable6 joined 08:21 quotable6 joined, bisectable6 joined, coverable6 joined, greppable6 joined, shareable6 joined, benchable6 joined, linkable6 joined, bloatable6 joined 08:22 statisfiable6 joined, releasable6 joined, squashable6 joined 08:46 MoC joined 08:48 lizmat left 08:50 LizBot_ joined 08:51 lizmat joined, RakuIRCLogger_ joined 08:52 LizBot left, RakuIRCLogger left 08:53 RakuIRCLogger_ left, RakuIRCLogger joined 09:20 Manifest0 left 09:21 Manifest0 joined 09:25 Sgeo left
Manifest0 Morning. 09:30
How can i find my local ip address and if i'm under NAT using raku?
10:21 sono left
El_Che parse the output of the OS netwerktool like ipconfig or parse /proc and then check if the ip is of a private range? 10:24
NAT is something done on the router machine, not on the machine itsel
f
10:26 supersecant joined 10:33 slu joined 10:36 supersecant left 10:37 supersecant joined 10:38 supersecant left 10:49 neula joined 11:08 neula left 11:16 chrysanthematic joined 11:18 guifa left 11:22 guifa joined 11:24 kylese left 11:34 Doc_Holliwood joined 12:02 reportable6 left 12:03 reportable6 joined 12:19 rassoc joined 12:21 yewscion_ joined
rassoc Oi! newbie question: how do i coerce and assign a bunch of ints of ints to this type upon initialization? `my Array[Array[Complex]] @a = ...`. Nothing works, can't figure out the syntax. 12:22
Geth doc: michaelruigrok++ created pull request #3903:
clarify sentence, fix typo
12:37
CIAvash m: my Array[Complex(Int)]() @a = [[1, 2, 3], [4, 5, 6]]; dd @a; 12:39
camelia Array[Array[Complex(Int)](Any)] @a = Array[Array[Complex(Int)](Any)].new(Array[Complex(Int)].new(<1+0i>, <2+0i>, <3+0i>), Array[Complex(Int)].new(<4+0i>, <5+0i>, <6+0i>)) 12:40
CIAvash rassoc: is this what you want? ↑
rassoc If i try to do that locally, i'm getting hit with: "Coercion 'Array[Complex(Int)](Any)' is insufficiently type-like to qualify a variable. Did you mean 'class'?" 12:43
Guess i'll have to wait for a compiler update then. thanks
lizmat rassoc: yeah, that looks like you're before the coercion protocol changes 12:47
12:49 cognominal joined
rassoc seem like it. still on 2020.07. will prolly install a more recent version by hand 12:52
13:00 lucerne left, RandalSchwartz joined, chrysanthematic left 13:01 lucerne joined
lizmat rassoc: yup, that's too old for doing that :-) 13:04
13:05 Doc_Holliwood left 13:06 Doc_Holliwood joined 13:28 yewscion_ left
codesections m: use variables :U; my $a = 42; 13:58
camelia Type check failed in assignment to $a; expected Any:U but got Int (42)
in block <unit> at <tmp> line 1
13:59 njm joined
codesections ha, that would be awful, and I'm kind of surprised the pragma lets you create an _un_defined constraint 13:59
14:00 njm left 14:10 monkey_ joined
Geth doc: 24c0b55cdd | Coke++ | 3 files
add description to modules
14:26
doc: c236309a1e | Coke++ | META6.json
remove provides list

These libs are only intended for internal use for testing & utils, and should not be installed.
doc: f4e8731098 | Coke++ | 6 files
Use preferred rakumod extension.
[Coke] does "raku --doc" theoretically do more work than "raku -c --doc" ? 14:42
(if nothing else, it outputs the POD, wondering if it does anything else extra)
14:51 Altai-man_ joined
codesections [Coke]: well, there's a DOC INIT phaser -- if there's any code in it, that'd be run with --doc but not -c --doc. docs.raku.org/language/phasers#DOC 14:52
not sure I've seen one of those in the wild, though
masak back in the day, there was a really interesting discussion about how to make Pod processing not-fully-Turing-complete. not sure if that ever led to something conclusive, though 15:02
(hi, #r) 15:03
[Coke] apparently it was slow enough over 400+ instances that adding the -c got the test runtime down to 3m from 5m+ 15:19
er, to 4m. 15:20
so, 20% savings
Geth doc: d2fd3ddb96 | Coke++ | t/02-pod-valid.t
add more diagnostic output
doc: 10f5588d8a | Coke++ | t/02-pod-valid.t
Do less work

With this change, test runs in 4m instead of 5m locally, still catches pod errors
15:34 Doc_Holliwood left 15:37 holyghost joined
Geth doc: 0a87972362 | Coke++ | META6.json
Add prereq for 'make bigpage'

Without this, this make target fails immediately.
15:38
gfldex weekly: Discord was joined by an eval bot prototype ready for testing. 15:49
notable6 gfldex, Noted! (weekly)
[Coke] is there a way in META6.json to say "This isn't meant to be installed" other than having an empty "provides" ? 15:50
(for example raku-doc is not currently installable. Trying to install it will basically just get you the pre-reqs needed for the build - but we still want the META6.json to list those pre-reqs so we can work on it) 15:54
codesections m: say &[-]; # there's not a similar shorthand for prefix/other operators, right?
camelia &infix:<->
ugexe give instructions to run `zef install Foo --deps-only`. Having a META6.json implies its meant to be installed, so there is no such way to say otherwise 15:56
[Coke] So how does one manage their requirements if they don't want to be installed?
by hand? 15:57
ugexe does `zef install Foo --deps-only` not work?
[Coke] I can do that, yes. I'm concerned about someone else not working on the project. I suppose the answer is, "remove it from the modules list"
and then there's no confusion. (raku-docs was on the modules list from ages ago because it did install things. then the install broke for the docs and was left for the bin. and then the bin was removed.) 15:58
ugexe ah yeah, if its not intended to be installed there is little reason for it to be in the module list
[Coke] should just remove it from the ecosystem, at this point.
ugexe++
added a comment to docs#3819 16:00
16:01 linkable6 left 16:03 linkable6 joined
Geth doc: 198ab0c230 | Coke++ | util/missing-methods.p6
Remove broken script

Needed p6doc which is no longer part of this repo.
Superseded by xt/check-signatures.t
Resolves #3812
16:08
16:08 Altai-man_ left, linkable6 left 16:11 linkable6 joined 16:17 chrysanthematic joined 16:19 chrysanthematic left 16:23 chrysanthematic joined, Altai-man left 16:26 sena_kun joined
codesections m: say map {[×] $_}, ^5; # works 16:26
camelia (0 1 2 3 4)
codesections m: say map [×] *, ^5; # doesn't work 16:27
camelia Cannot resolve caller Numeric(Whatever:D: ); none of these signatures match:
(Mu:U \v: *%_)
in block <unit> at <tmp> line 1
[Coke] yup, I wouldn't expect that to work.
codesections is there a reason why ^^^^ doesn't produce a WhateverCode? That seems like term position to me
why's that? 16:28
[Coke] if you want a grammar-based explanation, I can't help there. :) 16:29
codesections m: dd + *
camelia WhateverCode.new
[Coke] m: [×] *, ^5 16:30
camelia Potential difficulties:
Useless use of [×] in sink context
at <tmp>:1
------> 3<BOL>7⏏5[×] *, ^5
Cannot resolve caller Numeric(Whatever:D: ); none of these signatures match:
(Mu:U \v: *%_)
in block <unit> at <tmp>…
[Coke] m: say [×] *, ^5
camelia Cannot resolve caller Numeric(Whatever:D: ); none of these signatures match:
(Mu:U \v: *%_)
in block <unit> at <tmp> line 1
[Coke] I think the map is a red herring there.
Geth doc: 0f80469f59 | Coke++ | util/xt-recent.sh
Add .t files & update overview

Part of #3906
codesections I thought a prefix op and a * created a WhateverCode? And that [×] is a prefix op (or produces one) 16:31
ok, set the map aside, then
16:31 linkable6 left
codesections m: my &f = [×] *; 16:31
camelia Cannot resolve caller Numeric(Whatever:D: ); none of these signatures match:
(Mu:U \v: *%_)
in block <unit> at <tmp> line 1
codesections I'd expect that to be the same as
m: my &f = {[×] $_} 16:32
camelia ( no output )
16:34 linkable6 joined
masak my &f = - *; 16:37
m: my &f = - *;
camelia ( no output )
masak codesections: well, it _parses_. yours, I mean. 16:38
it just doesn't seem to behave like you want. it wants to numify the `*`
16:40 Sgeo joined
guifa codesections: what's going on is the […] metaop expects a list after it. So [+] * is parsed as op=[+], arg=[list(*)] 17:09
And then it's just a plain old whatever 17:10
17:12 lgtaube left 17:28 monkey_ left 17:30 holyghost left
codesections guifa: Thanks, that's helpful. But doesn't | expect a list too? This works: 17:30
m: my &f = |*; dd f (1, 2) 17:31
camelia slip(1, 2)
sena_kun m: EVAL("1", :lang<Perl5>) 17:32
camelia Could not find Inline::Perl5 in:
inst#/home/camelia/.raku
inst#/home/camelia/rakudo-m-inst-1/share/perl6/site
inst#/home/camelia/rakudo-m-inst-1/share/perl6/vendor
inst#/home/camelia/rakudo-m-inst-1/share/perl6/core
ap#…
sena_kun can anyone with not so recent rakudo run github.com/Raku/roast/blob/master/...oundtrip.t please? 17:33
17:33 pragma- joined 17:41 chrysanthematic left
rassoc sure! getting this on 2020.07: 17:48
not ok 4 -
# Failed test at roundtrip.t line 37
# expected: $("foo", "hate")
# got: $("ARRAY(0x5621674d0310)",)
17:50 Altai-man joined 17:58 Altai-man left 18:02 reportable6 left 18:04 reportable6 joined
sena_kun rassoc, thank you! 18:11
18:19 Doc_Holliwood joined 18:37 Altai-man joined 18:40 Altai-man left 18:50 m6locks joined 18:53 chrysanthematic joined
guifa No, see: 18:56
my @a = 1,2,3; my @b= 4, 5, 6; say |@a, @b 18:57
evalable6 123[4 5 6]
guifa codesections: ^^ | is a prefix operator, just takes a single value
or maybe better put, it's a higher precedence than the list up
[…] is a lower precedence than list op
codesections aha! That's the key I was missing. ty guifa++ 18:59
19:06 b2gills left, rassoc left
guifa codesections: any thoughts on my Datish.fmt module/code? I need to finish the test files that would go into roast and try a few more ways to break it, but otherwise, if the RSC approved on it, it'd be basically ready to go. 19:08
19:17 holyghost joined 19:36 holyghost left
Geth doc: 3f9ed6d81a | Coke++ | doc/HomePage.pod6
Remove link to currently broken bigpage.

We can add it back once we fix that feature.
Remove text about reporting issues/submitting patches; this is in the footer, and, IMO, doesn't need to be emphasized.
19:45
guifa I was just thinking: with RakuAST, it should be possible for Callables to potentially survive serialization, assuming they've got their own lexical variables and/or dynamic variables.
Geth ¦ problem-solving: coke assigned to JJ Issue Separate Community Resource pages github.com/Raku/problem-solving/issues/286 19:51
¦ problem-solving: coke unassigned from JJ Issue Separate Community Resource pages github.com/Raku/problem-solving/issues/286 19:52
doc: a34b1bdbd5 | Coke++ | doc/Language/faq.pod6
Remove references to .perl

  .raku is mentioned already in both places, and we don't need
to clutter the FAQ with an aliased method name when the preferred version is listed.
19:59
doc: eddff45a99 | Coke++ | doc/Language/faq.pod6
remove unneeded use v6
linkable6 Link: docs.raku.org/language/faq
doc: c651c61df6 | Coke++ | writing-docs/EXAMPLES.md
clarify
20:02
[Coke] lizmat: looks like you did a conversion of ":ok-test<perl>" to raku in the docs and changed the sample from perl to raku as well... but the ok-test exception is to allow .perl, specifically. 20:08
Will remove all the ok-test's that are not needed now.
lizmat [Coke]++ 20:09
[Coke] m: say 3.perl 20:10
camelia 3
Geth doc: bab14801aa | Coke++ | 8 files
Remove ok-test<raku>

The original was to allow .perl to be mentioned; .raku is the recommended method, so no care needs to be taken; none of these samples mention perl anymore.
20:15
[Coke] github.com/Raku/doc/blob/master/wr...HATHONS.md - does this still happen monthly? 20:17
Doc_Holliwood can we have a $*TAKEN variable which points to the taken values of the current gather block? 20:20
20:20 cbk joined 20:22 cbk left
Geth doc: 134cc2fe01 | Coke++ | writing-docs/SQUASHATHONS.md
Show actual oldest.

  (Previous link was page 8 of 20...)
20:22
[Coke] Doc_Holliwood: what's the use case? 20:24
Doc_Holliwood every piece of code that would use an intermediate @result array 20:33
[Coke] Would you expect to be able to un-take values by manipulating the array? add more without using take? 20:39
I get that you want it "in the middle", still don't get why 20:40
(depending on what you want it for, it'd have to be thread safe) 20:42
20:46 MoC left 20:47 holyghost joined
[Coke] (not trying to shoot down the idea, just curious) 21:02
ugexe seems like a nightmare considering gather is creating a sequence and that would more easily allow users to try and iterate over things more than once 21:12
lizmat feels like something in module space overriding "take" :-) 21:13
Juerd I've had one use case where I wanted to access the previous thing, basically for a reduce-like solution, but that was easily fixed by actually using reduce :)
lizmat calls it a day on the last day of her 65th year 21:14
Juerd Gefeliciteerd!! :)
ugexe or use rotor with appropriate backtracking and consider the last value the current value 21:15
well i guess that isnt equivilent 21:16
since you could very well transform the values before taking them
Doc_Holliwood just one of the random ideas that pop up in my head, really 21:17
Coke
21:22 silug left, silug joined 21:23 esh left 21:24 chrysanthematic left 21:25 esh joined
[Coke] Happy Juneteenth to our US hackers. 21:31
El_Che lizmat: gelukkige verjaardag 21:36
Manifest0 El_Che: thanks for the reply. 21:37
What's the equivalent to getsockname() in raku? 21:38
El_Che Manifest0: is there is no module, nativecall should be pretty straightforward for that kind of calls
guifa lizmat: Happy birthday! 21:58
22:01 b2gills joined
m6locks is there a way to read keyboard input without any Term:: * module? 22:17
MasterDuke m6locks: if you just want text input there's prompt(), if you want to read keystrokes and such you'll probably need/want a module 22:20
m6locks thanks, prompt will probly do just finr
holyghost lizmat++ 22:42
23:01 evalable6 left, linkable6 left, linkable6 joined 23:03 evalable6 joined 23:42 holyghost left