🦋 Welcome to the IRC channel of the core developers of the Raku Programming Language (raku.org #rakulang). This channel is logged for the purpose of history keeping about its development | evalbot usage: 'm: say 3;' or /msg camelia m: ... | Logs available at irclogs.raku.org/raku-dev/live.html | For MoarVM see #moarvm
Set by lizmat on 8 June 2022.
00:00 reportable6 left 00:01 reportable6 joined
leont I spent a bunch of time on version ranges in Perl land recently, and took the liberty to port that to Raku as an alternative to #5310 00:27
01:30 nine_ left 01:32 nine joined 06:00 reportable6 left 06:01 reportable6 joined 06:43 kjp left 06:45 kjp joined 06:55 RakuIRCLogger__ joined 06:56 Geth__ joined, lizmat_ joined 06:57 RakuIRCLogger left, Geth left 06:58 lizmat left 07:00 Geth__ left, Geth joined 07:04 Geth left 07:05 Geth joined 07:32 sena_kun joined 08:02 RakuIRCLogger__ left, RakuIRCLogger joined
nemokosch do you think it would be reasonably doable to eliminate the special behavior of "thunky" operators, going down the RakuAST route? 09:41
10:46 bloatable6 left, bisectable6 left, reportable6 left, greppable6 left, shareable6 left, benchable6 left, evalable6 left, tellable6 left, sourceable6 left, unicodable6 left, releasable6 left, coverable6 left, statisfiable6 left 10:47 bisectable6 joined, statisfiable6 joined, shareable6 joined, unicodable6 joined, reportable6 joined 10:48 coverable6 joined, bloatable6 joined, releasable6 joined, tellable6 joined, evalable6 joined 10:49 sourceable6 joined, benchable6 joined, greppable6 joined
leont Except it turns out Version objects are already sometimes not versions but version patterns? (but they still sort to not break it completely?) I don't understand where hacks like this keep coming from; it would be like saying "Nums can now also be complex values" and expect that to be fine. 11:26
11:45 sivoais_ left 12:00 reportable6 left, reportable6 joined 12:09 sivoais joined
vrurg leont: I've probably missed the reset of the discussion. What worries you? 13:28
leont A version object is not necessary a version. E.g. v1.* is not a version by any reasonable definition; you can't have a package whose version is v1.* 13:32
vrurg This is clear, but it feels like there is context I don't know about. 13:33
leont It's all a violation of the Single Responsibility Principle 13:34
vrurg If there is nothing else, then at least I for myself know where ti comes from: the syntax. It would still depend on expectations of an individual, but v1.1 and v1.* producing objects of different types may break other expectations. 13:37
leont If Version does Version::Matcher, then it would all work sensibly enough 13:39
vrurg For example, to me things like ^v1.3 make little sense because I don't understand where v1.2.1 would fit into this sequence? It's like iterating over a Rat or Num. 13:40
leont Yeah, iterating over version ranges makes no sense
But comparing should be easy enough 13:41
vrurg What would Version::Matcher change from API point of view? For an end-user it would remain the same Version.
leont Invariants. The different classes can all guarantee their own invariants. 13:42
vrurg I'm afraid, this is where examples would help me more. 13:45
leont "Does this Version object have a value that I can use as a version of something" 13:46
Right now we kind of need an is-version method :-/ 13:47
vrurg Ah, you mean not `class Version does Version::Matcher` but Version::Matcher as a mixin? 13:49
If so, I barely see it ever changing because of too few gains over too many backward compatibility problems. 13:50
leont I think I meant the former, but I'm not entirely sure I understand what you meant with the latter. 13:52
Any v expression would generate a Version::Matcher, which may be a Version
vrurg Then forget the latter as irrelevant. I'm rather interested in getting your point. 13:53
From this point of view the approach would be akin to Stringy: Versionish role consumed by Version and Version::Matcher (though better name is needed then) classes. 13:55
leont Yeah something like that
vrurg I'd like it in general. But, again, it'd bee too much even for a language release bump. These kind of things are like the fundamental genes which do not change for many millions years. 13:57
leont Yeah probably 13:59
vrurg wonders if Promise lacks of methods 'andthen' and 'orelse'... 14:34
nemokosch lol 14:38
I'm more wondering if "andthen" and "orelse" should whatever-curry or not 14:39
for &&, || and ~~ it seems pretty obvious that they better should
leont What I really want is a then that automatically awaits the promise. It would save me a line on almost any then handler. That may or may not be what you mean with andthen 14:46
(my question is basically what does it do with a failed promise) 14:47
vrurg I'd rather expect a broken one to be bypassed down the stream. 14:50
I'd rather expect a broken one to be bypassed down the stream. 14:51
The point is in preserving the original cause.
leont Yeah, makes sense
14:51 evalable6 left, linkable6 left, evalable6 joined 14:53 linkable6 joined 16:14 evalable6 left, linkable6 left 16:15 linkable6 joined 16:17 evalable6 joined 16:52 lizmat_ left 16:53 lizmat joined 17:53 unicodable6 left, quotable6 left, shareable6 left, squashable6 left, evalable6 left, nativecallable6 left, statisfiable6 left, bisectable6 left, releasable6 left, bloatable6 left, sourceable6 left, benchable6 left, greppable6 left, tellable6 left, committable6 left, notable6 left, reportable6 left, coverable6 left, linkable6 left, sourceable6 joined, tellable6 joined 17:54 releasable6 joined, reportable6 joined, bloatable6 joined, nativecallable6 joined, benchable6 joined 17:55 linkable6 joined, shareable6 joined, statisfiable6 joined, bisectable6 joined, quotable6 joined, notable6 joined, evalable6 joined, squashable6 joined, committable6 joined, greppable6 joined, unicodable6 joined 17:56 coverable6 joined 18:00 reportable6 left 18:02 reportable6 joined 19:02 quotable6 left, greppable6 left, evalable6 left, statisfiable6 left, benchable6 left, tellable6 left, unicodable6 left, coverable6 left, releasable6 left, bisectable6 left, reportable6 left, notable6 left, squashable6 left, committable6 left, sourceable6 left, linkable6 left, bloatable6 left, nativecallable6 left, shareable6 left 19:03 committable6 joined, releasable6 joined, bisectable6 joined, statisfiable6 joined, notable6 joined 19:04 shareable6 joined, quotable6 joined, bloatable6 joined, unicodable6 joined, benchable6 joined, greppable6 joined, squashable6 joined 19:05 coverable6 joined, sourceable6 joined, evalable6 joined, tellable6 joined, nativecallable6 joined, linkable6 joined, reportable6 joined 20:52 linkable6 left, evalable6 left 20:53 evalable6 joined 20:54 guifa joined 20:55 linkable6 joined 21:55 linkable6 left, evalable6 left 21:56 linkable6 joined 21:58 evalable6 joined 22:40 sena_kun left 22:59 ab5tract joined 23:59 ab5tract left