🦋 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 _ed joined 00:02 reportable6 left 00:03 reportable6 joined 00:09 _ed left
m6locks how do I typecheck an array as an argument to a method that sometimes has zero, one, or several instances of a class? I tried passing Nil, but then I get an error expected Positional[Array] but got Nil (Nil) 00:18
Nil is the case when there's no values
japhb m6locks: What are you actually trying to check? What would be correct or incorrect ways to call your function? (I ask because "Positional[Array]" as an expected type often indicates a mistake in the typing.) 00:25
00:26 dogbert12 left
rassoc m: class C { has $.x }; sub foo(C @arr) { say @arr }; my C @cs = C.new(x => 10); foo @cs # m6locks 00:39
camelia [C.new(x => 10)]
00:40 _ed joined
rassoc Had trouble with that as well when starting out. Type @arr already is an array of Type; no need to specify Array[Type] 00:40
m: class C { has $.x }; sub foo(C @arr) { say @arr }; my C @cs; foo @cs # zero instances 00:44
camelia []
01:15 dogbert12 joined 01:20 dogbert12 left 01:22 dogbert12 joined
m6locks ok, so Nil won't do 01:23
confused because in java you can just say instance.method(null) and it works
now there's Array @a in the method arguments list, calling the method with Nil produces that error 01:25
but I'll just replace all Nils with []'s 01:26
01:32 solitario left 01:33 solitario joined
kybr does anyone know a good resource for working with Date? i want to ask things like "how many week days between 2021-01-01 and 2021-03-31?" 01:38
01:40 dogbert12 left 01:53 frost joined
rassoc other than the official docs and test suite? not really, no. 01:54
m: ('2021-01-01'.Date .. '2021-03-31'.Date).grep(*.day-of-week <= 5).elems.say
camelia 64
02:19 rassoc left 02:31 Tirifto left 02:32 Tirifto joined 02:49 _ed left 03:16 neshpion left 03:19 dogbert12 joined 03:22 dogbert17 joined 03:24 dogbert12 left 03:28 dogbert11 joined 03:29 dogbert17 left 03:33 dogbert11 left 03:36 Doc_Holliwould joined, sono_ joined 03:37 frost left, jrjsmrtn left 03:38 vodkra left, vodkra joined, jrjsmrtn joined 03:39 Doc_Holliwood left, sono left 04:12 dogbert11 joined 04:17 dogbert11 left
moon-child til 'sub f of T' 04:36
is there a difference between that and the 'returns' syntax?
cnx from the docs it seems so: docs.raku.org/language/functions#R...onstraints 04:40
moon-child hmm, nice 04:43
shorter than -->, and more consistent (for subs that take no parameters)
I guess it's not actually shorter, because you can leave out the space at the end of --> 04:51
m: sub f(-->Int) {}; sub g of int {}
camelia ( no output )
05:13 stoned75 joined 05:16 dogbert11 joined 05:20 dogbert17 joined 05:22 dogbert11 left 05:47 jmcgnh left 05:51 jmcgnh joined 05:53 ufobat joined 05:58 dogbert17 left 06:02 reportable6 left 06:03 Sgeo left, reportable6 joined 06:16 dogbert17 joined 06:20 dogbert11 joined, dogbert17 left 06:26 dogbert11 left 06:41 patrickb joined 06:52 patrickb left, patrickb joined
CIAvash patrickb: Is it possible for you to provide a checksum file or something like that for rakudo download tarballs? 07:09
moon-child CIAvash: there's a signature, is that not sufficient? 07:17
07:25 _ed joined 07:27 holli__ joined 07:28 Doc_Holliwould left 07:29 _ed left 07:30 dakkar joined 07:35 dogbert11 joined 07:38 patrickb left, patrickb joined 07:40 patrickb left, patrickb joined 07:42 patrickb left, patrickb joined 07:43 patrickb left, patrickb joined
patrickb CIAvash: Can you elaborate on your usecase? I'm more than willing to provide sha-1 and or md5 sums should there be a need. So, why is the signature insufficient? 07:45
07:53 dogbert11 left 08:01 dogbert11 joined 08:10 AntonOks joined 08:12 MoC joined 08:30 holli__ left 08:35 frost14 joined 08:41 frost14 left 08:42 frost46 joined 08:43 frost46 left, frost24 joined
CIAvash patrickb: It's probably sufficient, it's just that in the Arch Linux wiki, it says, add checksums and additionally signatures. I am generating sha256sum for the rakudo-bin AUR package, I just wanted to use checksums from source, instead of generating them from the packages I downloaded. It's not a big problem. wiki.archlinux.org/title/PKGBUILD#Integrity 08:43
08:44 ComplYue[m] left
patrickb CIAvash: Sounds sensible. Which checksums would be good to have? Only sha256? 08:45
08:45 frost24 left
CIAvash Yeah 08:46
patrickb CIAvash: OK. Thanks for the input! I'll see what I can do! 08:47
CIAvash patrickb++
08:54 Doc_Holliwood joined 08:57 frost joined 09:57 coverable6 left, shareable6 left, reportable6 left, unicodable6 left, notable6 left, committable6 left, bloatable6 left, quotable6 left, linkable6 left, nativecallable6 left, tellable6 left, sourceable6 left, squashable6 left, statisfiable6 left, benchable6 left, bisectable6 left, releasable6 left, evalable6 left, greppable6 left 09:58 sourceable6 joined, shareable6 joined, linkable6 joined, releasable6 joined 09:59 notable6 joined, unicodable6 joined, tellable6 joined, reportable6 joined, benchable6 joined, bloatable6 joined, statisfiable6 joined, bisectable6 joined, squashable6 joined 10:00 nativecallable6 joined, evalable6 joined, quotable6 joined, greppable6 joined, coverable6 joined, committable6 joined 10:09 rassoc joined 10:21 Doc_Holliwood left 10:47 RandalSchwartz joined 10:51 squashable6 left 10:53 squashable6 joined 10:54 sono_ left 11:24 _ed joined 11:28 _ed left
lizmat wonders what she should be working on first from the pile of unfinished things 11:30
moritz lizmat: start something new :-) 11:31
lizmat well, that's a thought :-)
but I guess we first want to get Geth up and running again 11:32
and since nobody has volunteered just yet...
11:37 chronon left 11:43 Geth joined
lizmat I guess that's step one 11:44
11:44 Geth left 11:45 Geth joined 12:02 reportable6 left 12:05 reportable6 joined 12:18 algorev joined
algorev Hello 12:18
12:19 Geth left
algorev I've been getting started with raku in the past few days and it's awesome 12:19
I've just got a few questions that... wel i think i'm not the first one to ask them by far
My first question is: how ready is raku yet? I know some parts of the spec are not implemented yet, but to what extent? 12:20
12:22 Geth joined
algorev And my other question is much more general: i've seen that there aren't many modules available for raku on the archive yet. and it doesn't seem to be very popular yet. It's a language that i wanna see grow. Are there ways i can help? 12:22
patrickb algorev: From a extent of implementation point of view, Raku is perfectly usable. It provides a feature set surpassing about every other language there is. 12:23
12:23 Geth left
patrickb algorev: As you already said, the ecosystem isn't as big, as it could be. 12:23
12:23 Geth joined
algorev I'm not too sure what raku would need to get used more, maybe it's just in the same situation as Haxe, nifty features but not enough people to push for it. Maybe it needs just more time, but waiting's not my favorite strategy 12:24
patrickb Performance is the other thing, where Raku still has to improve.
MasterDuke for the original specifications, i believe the POD related ones have the most not-yet-implemented parts 12:25
patrickb I personally just use it anyways ;-)
algorev I'm new to perl stuff, so i don't really know how raku is seen in the wider perl world, maybe that's something too
12:25 Kaipi joined, Kaiepi left
algorev But yeah i've been trying out raku and i love it 12:25
I'm not a good coder but i'll be doing what i can
patrickb Are there specific modules you are missing? 12:26
12:26 Kaipi left, Kaipi joined
algorev For the time being i'm looking around to see what i can easily do 12:27
I might try to write an image module that doesn't rely on ffi
lizmat that sounds... pretty cool and pretty advanced ?
algorev For the rest and as a start it'll be awesome as a powershell replacement 12:28
I'm not going to try and make it big yet
Just what i need
I don't have the level to write pillow ahah
lizmat please feel free to ask any questions here, and/or on stackoverflow.com/questions/tagged/raku
algorev Thanks! 12:29
12:29 algorev left 12:46 neula joined 13:10 Geth left, LizBot_ left 13:11 RakuIRCLogger left 13:14 RakuIRCLogger joined 13:15 Geth joined 13:17 frost left 13:33 Doc_Holliwood joined 14:19 stoned75 left 14:21 stoned75 joined 14:22 melezhik joined
melezhik . 14:22
patrickb: I'd like to bring our reddit/r3 discussion here, if you don't mind ... 14:24
14:24 Sgeo joined
melezhik r3 installation is very simple - just git clone and zef install dependencies ... I am not sure what external site you're talking about 14:25
also the idea - to let users run tests on their local environments / rakudo branches straight away and be actively involved in tests writting 14:26
14:31 Doc_Holliwood left, RandalSchwartz left 14:40 RandalSchwartz joined, RandalSchwartz left
tonyo is raku in production anywhere? 14:52
jdv i think it is for at least all the places we got logos from?... 14:54
(at the bottom of raku.org/)
14:54 _ed joined
tonyo what's it doing in prod at any of those places? 14:58
jdv idk - maybe the person that did the recent push for those logos might know... 15:00
15:01 _ed left
jdv could be a fun article to put together for someone that has time and interest:) 15:01
patrickb is back 15:12
the logo guy would be me 15:13
15:15 _ed joined
patrickb I can only speak for my company. We use Raku for several webservices consumed by internal tools. One interfaces a CRM to a mobile app another generates shiny PDFs and E-Mails for a configuration tool. 15:15
melezhik: Did I understand right, that r3 is exclusively an offline tool where each user creates their own bug-test database? 15:20
melezhik good question. yes it's offline tool. however user may want to commit their tests back to "mainstream" repo using PRs , so we have centralized database for bugs . but I am not yet sure ... right now it's only me who create those tests 15:22
but regardless of this question, the main idea - yeah - it's offline tool 15:23
15:23 _ed left
nine tonyo: most importantly our customer self-service application at mein.atikon.com/ is written in Raku and with Cro. On the backend it uses another Cro application providing a REST API to our central database. We've also used Raku for an assortment of internal services and scripts. 15:29
There's a reason why I've worked mostly on Rakudo's reliability in the past year or two :) 15:30
patrickb melezhik: But given that issues are a public shared thing, wouldn't it make sense for the issue test tool database to also be shared?
tonyo interesting, right now it sounds like it's mostly used for cro 15:32
i was looking at writing a datalog slang that could be integrated instead of ORM garbage
melezhik of course. by saying "but I am not yet sure" I meant I am not sure what is the best way to propagate users tests back to mainstream repo, but probably GH PRs should be enough. Sorry for being ambiguous
patrickb And then a service to run these tests server side would be quite nice. :-)
nine The internal stuff was pretty much "wherever asynchronicity or parallelization were important topics"
tonyo what are the pain points of using it in prod? 15:33
patrickb I have recently written prototype of a client side graphical configuration tool in Raku. That's non Cro. 15:34
melezhik sure )) thus the workflow is following 1) a user post a rakudo bug to GH 2) fork r3 repo 3) create a test for the bug 4) reproduce bug against any given version of rakudo (branch/whatreverrable/etc) 5) make PRs for a test/bug to r3 main repo
SmokeMachine tonyo: before writing it, take a look at Red… 15:35
nine Oh, and Grammars were the other thing. We have used Raku to compile our 4 million line Apache virtual hosts configuration to nginx and continue to use the code to automate changes to nginx config
tonyo i've seen red
nine: do you have a write up on that? i'd like to know more about that 15:36
nine Pain point used to be segfaults or other crashes. But nowadays it is pretty stable, so I'd say most important topic is memory usage. We do see (presumably) unbounded memory growth in the long running applications. But that may actually be because of Inline::Perl5, or maybe Cro or its underlying modules.
tonyo: you mean the web server config stuff? 15:37
tonyo nine: yea
patrickb tonyo: Re pain points. I wouldn't say there is a single major pain point. Sometimes there is a rakudo bug that is annoying and needs to be worked around, sometimes it's some library one would wish to use, but doesn't exist yet.
melezhik patrickb also for releases managers one of the workflow is to routinely run regression tests against recently closed issues against the latest rakudo commit , see this - gist.github.com/melezhik/0b65ac1b3...d19c2f22d7
tonyo SmokeMachine: red, to me, glues together the worst parts of ORMs and confusingly uses the meta method operator for normal actions. 15:38
SmokeMachine tonyo: what’s the worst parts of ORMs, and what do you thinking is confusing on Red’s meta method usage? 15:40
patrickb tonyo: A limiting factor for us is definitely the poor Windows support. Writing a native Windows GUI with Raku isn't possible today. But we have and will have many of those.
melezhik: Wouldn't it be possible to run the tests on a centralized server? 15:41
melezhik like I said, this is not main focus for em right now, but yes, r3 itself only requires a few Raku modules and that is it 15:42
it's dead easy to deploy
the more difficult part is to install whateverbale versions but I already taken care about this ))) , this task is also integrated into r3 - gist.github.com/melezhik/0b65ac1b3...nt-3799472 15:44
patrickb melezhik: Because then most of the other stuff I said makes more sense (i.e. automatically creating these issues via GH comments).
melezhik patrickb not sure if understand how GH comments are relevant here ... my view is users would create tests 15:46
SmokeMachine tonyo: if you don’t like using `Model.^all.grep` you can, on your model definition, say: `model Model is handling<map grep> { …` and use `Model.grep` (that’s a experimental feature) 15:48
tonyo SmokeMachine: the .^ method calls is used for meta methods, red uses them for normal things an ORM should do and it does it everywhere. the worst part of ORMs is writing all of the boiler plate, `this is what my table looks like, this is what relationships it has` etc. that stuff is already documented in the db with relationships. the verbosity of the code i need is equal to the sql i'd have to write and
it's far less powerful. the documentation is poor. how do i run red against postgres (the link is either broken or doesn't exist in the docs). how do i run aggregate queries? how do i run this against six databases in the same file? does RED prefetch? why do the docs advocate .^all.first:*.name eq 'xyz', why are you doing something in code that a db was designed to handle? there's a lot of _why_
questions they raise that generally don't have good answers, if i had to learn a technology to get data from a db why wouldn't i just learn sql, etc
patrickb: what kind of windows guis are you trying to make?
patrickb melezhik: I guess I have a bit of a different vision of how one could use r3. Given the explicit aim is creating tests corresponding to GH issues it makes a lot of sense to be able to create those tests right there on the ticket. I totally agree that that is impossible as long as r3 is exclusively a local tool. 15:49
tonyo .^all.grep seems so backwards in the calls, shouldn't the filter come first so it's obvious what order those things are happening in? 15:51
SmokeMachine tonyo: the usage of the .^ on Red is because the ORM runs on the meta class, not at your class, that way you can do whatever you want with your class without conflicts 15:52
patrickb tonyo: In most cases medium sized pieces of software (the type one can write up in a months time) aimed at one specific task. Some upload tool to transfer data, a tool to provide access to some webservice, some configuration utility that writes its results to an Excel file...
tonyo what's the meta class? 15:53
SmokeMachine tonyo: about the schema already being described on the database: that’s why I’ve been writing the red CLI, one of its features is read the database and generate Red code
tonyo why not just load it from the database? generating boilerplate isn't making the code less densely boring 15:54
15:54 dogbert11 left
tonyo if i do class A { } ... A.new.^WHAT <- that runs against my A object .. are you saying in red that if i do Person.^all <- this isn't running against Person? 15:55
SmokeMachine tonyo: about the verbosity: I disagree with you, many queries are much shorter with Red. The idea is to mimic Raku’s syntax. And many possible sql are niy, it’s a wip project 15:56
patrickb We have quite a set of tools interfacing and extending MS Excel. I guess those have little chance to be doable in Raku any time soon. (An Excel COM or XLL API is probably not going to happen any time soon.)
SmokeMachine tonyo: Dynamically loading crib db and running it is the next step after the code generation is done… many people is helping… but not enough to do so many stuff in parallel 15:58
tonyo SmokeMachine: having CREATE statements for managing sql table migrations in tools explicitly designed for it and then also having to describe those structures in a language capable of creating those things dynamically is verbose. the queries aren't shorter either.. Person.^all.grep: *.name eq 'SmokeMachine' vs 'select * from person where name = "SmokeMachine"' saves you six characters 15:59
in only one of those at quick glance do you know where the filtering is actually happening 16:00
SmokeMachine tonyo: no, if you do A.^meth, it will call the method ‘meth’ on the meta object of the class A… and that’s exactly what also happens with Red
tonyo so, it does run on my class in Red too, then
SmokeMachine Passing the class A as first parameter 16:01
tonyo Person.^all <- runs against Person
SmokeMachine No, Person.^all class MetamodelX::Red::Model’s all passing Person as first parameter 16:02
It’s equivalent of: MetamodelX::Red::Model.all(Person) 16:03
melezhik patrickb I get this. well, the focus is on creating tests FOR issues. I find it hard to automate this via GH comments. I would personally consider GH issues only as text descriptions rather then tests. So tests are created after an issue is described in GH 16:04
SmokeMachine And you can do that that way if you want
I mean: Person.WHAT.all(Person)
tonyo right so when i have trouble with .^all.grep: *.name.^count > 5 i can debug that down into something needlessly complex or i can just use 'select * from x where count(name) > 5'
jdv i used raku at $work for a crawler and ran into the same issue(s) mr. steven lembark did with his project he talked about maybe a year ago. 16:05
it *can* have unbounded mem usage if it gets bogged down - couldn't track it down
16:05 xinming_ left
jdv but 99% of the time it finishes before that becomes a problem 16:05
tonyo does moar hoard memory like p5 or does it release?
16:06 xinming_ joined
jdv no idea. time and lembark and i spent some time on it and it wasn't obvious 16:06
tonyo been so long since i looked at that code
jdv i think that's the only majorish issue ive found in prod so far 16:07
the others were work-around able and relatively minor
maybe half a dozen or so of those
16:07 ufobat left
SmokeMachine `.^all.grep: *.name.elems > 5`… it’s just Raku code… pretend .^all returns an array and you’ll see that makes sense… and if you want to debug, setting my $*RED-DEBUG = True will show you the SQL 16:07
jdv the worst parts of orms are...orms, ime;) 16:08
tonyo jdv: agreed 16:09
SmokeMachine The best part of Red is that’s just Raku…
tonyo that's not a glowing review of your own module 16:10
SmokeMachine That’s just my opinion…
El_Che SmokeMachine: are you in the uk nowadays?
SmokeMachine Yes 16:11
El_Che family as well?
tonyo SmokeMachine: so is .^all.grep getting everything and then .grepping the results? the docs indicate no and if not, why are the calls .^all.grep ?
SmokeMachine Yes living here since February 2019
El_Che nice
can they adjust? big change 16:12
SmokeMachine tonyo: no, it’s generating the SQL and running everything on db… but with Raku’s syntax
patrickb melezhik: But wouldn't it be possible to put the test text in a comment of a preexisting issue? A bot then sees that text and imports the test into a separate r3 website which then performs the testing. That same bot could even add another comment to the issue linking to that separate r3 website. That r3 website would be the central store for all issue tests. 16:13
SmokeMachine El_Che: my 2 daughters are already sounding like the queen (at least for my non native ears)
El_Che SmokeMachine: glad to hear it
tonyo never do i chain two calls together and expect the right most to happen first in raku .. @a.grep({ $_<name> eq "abc" }).map({ $_<found> = 1 }) <- never do i expect the .map to run first 16:14
m: my @a = ({ name => "abc" }, { name => "xyz" }); @a.grep(*<name> eq "abc").map({$_<found> = 1}); dd @a;
camelia Array @a = [{:found(1), :name("abc")}, {:name("xyz")}]
tonyo but, in red, i should expect .^all.grep to happen in the order of grep, ^all
which is aiming to be similar to raku in syntax? 16:15
SmokeMachine tonyo: it’s just like Raku, you can do Model.^all.grep(…).map(…), or if you prefer: `my @a := Model.^all; my @b := @a.grep(…); my @c := @b.map(…); .say for @c` 16:17
tonyo that's missing the point 16:18
and also, you're saying those two code paths are not equivalent .. is .^all.grep fetching every row from the DB and then actually calling .grep on them? 16:19
patrickb Have to leave. o/
16:19 patrickb left
SmokeMachine no it isn't, it will only call the database on `.say for @c` on my example 16:19
tonyo then what, exactly, is in @b ? 16:20
SmokeMachine it's a lazy list
tonyo of? 16:21
SmokeMachine it's an Red::ResultSeq object
tonyo right 16:22
SmokeMachine tonyo: www.irccloud.com/pastebin/QfJwDv6s/ 16:25
tonyo the SQL in that is much clearer
SmokeMachine  raku -I. -MRed -e ' 16:26
model Bla { has $.id is serial }
red-defaults "SQLite";
my $*RED-DEBUG = True;
my @a := Bla.^all;
my @b := @a.grep: *.id > 2;
my @c := @b.map: *.id;
say @b.^name;
dd @b;
Bla::ResultSeq.new(update => Array[Pair].new(), comments => Array[Red::AST::Comment].new(Red::AST::Comment.new(msg => "method 'grep' called at: -e #10"), Red::AST::Comment.new(msg => "method 'map' called at: -e #11")), with => Red::Driver, obj => Any, chain => Red::AST::Chained.new(filter => Red::AST::Gt.new(op => ">", returns => Bool, left => Red::AST::Cast.new(type => "num", value => Red::Column.new(attr => bla.id, attr-name => "id",
auto-increment => Bool::True, id => Bool::True, name => "id", name-alias => "id", nullable => Bool::False), bind => Bool), right => Red::AST::Value.new(value => 2, column => Red::Column, type => Int), bind-left => Bool::False, bind-right => Bool::False), limit => Int, offset => Int, post => Callable, order => Array[Red::AST].new(), group => Array[Red::AST].new(), table-list => [], next => Red::AST::Chained))
sorry, wrong button...
ttonyo: www.irccloud.com/pastebin/H11acPYA/
tonyo that makes @b looks like it should be a scalar 16:27
rather than a list of one item
SmokeMachine why? @ accepts any Positional...
Bla::ResultSeq does Positional...
tonyo it also, obfuscates the fact that the db is doing the filtering and not the code
which is still the point 16:28
SmokeMachine no, because you are using Red just because of that...
tonyo saying `no` doesn't make it untrue
16:29 xinming_ left
SmokeMachine maybe not, but the sentence after that does :) 16:29
16:29 xinming_ joined
tonyo the sentence after that lacks enough nouns to make any sense 16:30
SmokeMachine tonyo: but of course you have all the right to not like that and not use that... but other people also have the right to like and use it...
tonyo so, again, Red is obfuscating where the line of what's being done by the DB and what's being done in code is happening
SmokeMachine it does not make sense, because Red is being used for doing that 16:31
that's it's main reason
tonyo i didn't say other people can't use it or like it. i said i didn't like it, you asked why, and now you're just saying `no` to the reasons i'm giving you. 16:32
SmokeMachine I'm explaining why I disagree with what you said
16:33 dakkar left
SmokeMachine maybe my English isn't helping... but that's what I'm trying to do... 16:33
tonyo i don't care why you disagree, you're not attempting to explain or to have a discussion or even try to see the points, it's to make sure nothing of red can be of critique
16:34 AntonOks left
tonyo ah, that could be it too (and probably more likely) 16:34
what is your native language? 16:35
SmokeMachine tonyo: of course not! many things in Red was already critiqued and many I've changed. But what are your suggestions to fix those issues? 16:36
tonyo: Portuguese
tonyo ahh, sorry dude, i can't bridge that gap. i'd get away from the .^all.grep.map thing, .find(*.name eq 'abc').fold({ $_<xyz> = 1 }).^all makes it clearer whether the db is doing the filtering or if the code itself is doing the filtering, there's a distinction between the steps .. is .^all grabbing everything from the db and putting it in the resultseq ? 16:39
SmokeMachine would you like to go to #red channel and discuss about that there?
isn't that enough having the possibility to add `is handling ( find => grep, fold => map )`to have that behaviour? 16:42
and no, .^all is not grabbing anything from the DB, that triggers the query is trying to access the individual values 16:43
so, for example, `.say for @my-result-seq` would trigger the query, `@my-reqult-seq.grep: *.column > 10` wouldn't 16:44
16:49 sena_kun left, jess joined 16:50 nirnam joined 17:04 MoC left 17:10 xinming_ left, xinming_ joined 17:11 dogbert11 joined
SmokeMachine tonyo: about the name of the methods, by this (github.com/FCO/Red/issues/406) I think the majority preferes grep and map (but I could be seeing that wrong) 17:12
tonyo i agree with xliff, those aliases would make the code more clear as to what is doing the filtering (code vs db) 17:23
the thunk-y searching isn't apparent in the code and a source of confusion
17:29 squashable6 left 17:31 squashable6 joined 17:33 nirnam left 17:35 _ed joined 17:40 _ed left 17:51 _ed joined 17:56 _ed left 18:02 Geth left, Geth joined, reportable6 left, reportable6 joined
nine tonyo: to be fair in Raku .grep(...).map does not run the grep first and then the map. It sets up a processing pipeline and then processes the list one element at a time 18:16
lizmat fwiw, I don't understand why anyone would do .grep.map rather than just .map 18:17
melezhik .tell @patrickb - this is not how I see this. I'd rather want people actively create/run tests rather then passively write comments and wait till some system would handle this ... Also text based approach is limited in what kind of tests people would want to write. With an offline tool one has all the freedom to express ones .
tellable6 melezhik, I cannot recognize this command. See wiki for some examples: github.com/Raku/whateverable/wiki/Tellable
melezhik .tell patrickb: - this is not how I see this. I'd rather want people actively create/run tests rather then passively write comments and wait till some system would handle this ... Also text based approach is limited in what kind of tests people would want to write. With an offline tool one has all the freedom to express ones .
tellable6 melezhik, I'll pass your message to patrickb
lizmat afk& 18:18
tonyo nine: yes but it still does those in an ordered fashion
lizmat: can map filter things now? 18:19
moon-child lizmat: the former might be a clearer expression of intent, even if anything can be expressed via the latter
tonyo: you can return a slip from a map
m: say ^10 .grep(* %% 2).map(-*) 18:23
camelia (0 -2 -4 -6 -8)
moon-child m: say ^10 .map({$_ %% 2 ?? -$_ !! Empty})
camelia (0 -2 -4 -6 -8)
moon-child m: say ^10 .map({-$_ if $_ %% 2}) #even 18:24
camelia (0 -2 -4 -6 -8)
tonyo nice 18:37
18:37 MoC joined
rassoc last one is unintuitive as hell, might be worth documenting that. any other language that just drops mapped values? 18:49
leont I think that's not a map behavior, but an if behavior 18:54
A false if returns Empty?
s/returns/evaluates as/
rassoc interesting 18:55
18:55 Doc_Holliwood joined 19:00 MoC left
Geth doc: 33ca775f06 | (Stoned Elipot)++ | util/github-action-test.sh
Add script overview in comment. ref #3906
moon-child rassoc: s7 scheme has effectively the same behaviour as raku, you can return multiple values (or no values) from a mapper
and yeah, it's Empty
m: say (0 if False), (0 if False).WHAT
camelia ()(Slip)
19:08 linkable6 left 19:10 linkable6 joined
rassoc s7? niche within a niche ;) 19:15
nine Perl does it too: > perl -E 'say map { $_ % 2 == 1 ? $_ : ()} (1,2,3,4)' 19:19
rassoc interesting, thanks for that. never really used perl, only the parts that ruby stole from it 19:21
moon-child same. (Well, substituting raku for ruby.) I feel like I should learn perl properly but never have 19:22
rassoc never quite liked what i saw when comparing perl and raku solutions for the perl weekly challenge. highly subjective, but the later always feels cleaner 19:27
moon-child well, I guess there's a reason they didn't stop at perl 5 :) 19:28
20:10 evalable6 left, linkable6 left 20:11 linkable6 joined 20:12 evalable6 joined 20:13 _ed joined 20:18 RandalSchwartz joined 20:19 _ed left 20:20 sena_kun joined 21:09 clarjon1 joined 21:25 neshpion joined 21:32 melezhik left 21:35 a3r0 left 21:44 Util joined 21:55 neula left 22:09 Altai-man joined 22:13 Kaipi left 22:14 Kaipi joined 22:19 Kaipi left, Kaipi joined 22:23 Merfont joined 22:24 Kaipi left 22:27 Merfont left 22:30 sono joined 22:32 Kaiepi joined
[Coke] now has a UPS, thanks whoever mentioned that. 22:34
moon-child nice! 22:35
Geth doc: 191fe4bd4a | Coke++ | util/clean-spell
Run tests in chunks, not for everything

Set a chunk size for # of files, and fail if any of the chunks fail. This allows us to fail faster in many cases.
If there's a partial chunk, run it first, with the thought that we can do less and fail slightly faster.
doc: 0afc84d618 | Coke++ | util/clean-spell
Only check word matches

We originally checked any match, but it can be very slow (e.g.
  "ents" is used, which has > 100 matches if we don't try word boundary)
  "ents" is used, which has > 100 matches if we don't try word boundary)
Slightly larger risk of false positives, so be sure to do the post-check.
doc: b3d4cec53d | Coke++ | lib/Pod/Cache.rakumod
remove diagnostic output
23:24 Altai-man left