[00:00] *** Black_Ribbon joined [00:04] japhb: I don't see anything in the docs to explain it, would take some deeper digging. --target=parse shows some possibly relevant things, but I don't know enough about internals to tell you the difference between an xblock and a pblock and a blockoid, or even if that's relevant [00:09] Fair enough. :-) [00:09] looks like maybe something to do with spesh, possibly a bug. it blows up with --optimize=0 [00:10] it probably optimizes the when block away somehow, turns it into something faster and simpler than a block [00:11] *** neshpion left [00:15] *** neshpion joined [00:22] Interesting. [00:22] I was wondering if it was intentional in order to make succeed and proceed magically work or something [00:24] seems not, --optimize=0 gives "Too many positionals passed; expected 0 arguments but got 1" [00:24] (after "Odd", of course) [00:49] Interesting! [00:54] *** kurahaupo_ joined [00:56] *** kurahaupo left [01:02] *** kvw_5 joined [01:05] *** kvw_5_ left [01:22] *** stoned75 joined [01:34] *** stoned75 left [01:35] I made a little slot machine script thingy, maybe someone has some optimizations or improvements but it's cute. :) https://www.irccloud.com/pastebin/BFWwVwP0/slots.raku [01:36] I feel like the multipliers hash and wheel array can be merged somehow, maybe a hash of pairs? [01:43] *** aborazmeh joined [01:53] heh, cool [01:59] *** kvw_5_ joined [02:02] *** kvw_5 left [02:25] kawaii: here are some simplifications: https://gist.github.com/raydiak/59350a91715982755e8ffe4a76d6667b [02:32] updated it, arguably a bit easier to read this way [02:51] *** aborazmeh left [02:54] *** MasterDuke left [03:11] *** neshpion left [03:13] *** neshpion joined [03:18] *** neshpion left [04:18] *** shareable6 left [04:18] *** bloatable6 left [04:18] *** notable6 left [04:18] *** unicodable6 left [04:18] *** quotable6 left [04:18] *** committable6 left [04:18] *** bisectable6 left [04:18] *** linkable6 left [04:18] *** nativecallable6 left [04:18] *** benchable6 left [04:18] *** releasable6 left [04:18] *** statisfiable6 left [04:18] *** tellable6 left [04:18] *** greppable6 left [04:18] *** unicodable6 joined [04:19] *** committable6 joined [04:19] *** statisfiable6 joined [04:19] *** greppable6 joined [04:20] *** shareable6 joined [04:20] *** benchable6 joined [04:20] *** quotable6 joined [04:21] *** releasable6 joined [04:25] *** xinming_ joined [04:28] *** xinming left [05:02] *** coverable6 joined [05:31] *** sno joined [05:47] *** parabolize left [05:57] *** stoned75 joined [06:16] *** japhb left [06:18] *** Sgeo left [06:18] *** Sgeo joined [06:19] *** japhb joined [06:31] *** Sgeo left [06:32] *** Sgeo joined [06:55] *** aluaces joined [06:55] *** kurahaupo_ left [07:31] *** stoned75 left [07:46] *** dotdotdot left [07:50] *** dotdotdot joined [07:54] *** MasterDuke joined [07:57] *** kurahaupo joined [08:05] *** Manifest0 joined [08:10] *** pecastro joined [08:18] *** Xliff joined [08:18] jj? [08:38] *** Sgeo left [08:54] *** natrys joined [09:00] *** Guest6079 left [09:06] *** wamba joined [09:18] *** andinus` joined [09:18] *** andinus` left [09:35] *** rindolf joined [09:57] *** kurahaupo left [09:57] *** kurahaupo joined [10:01] *** crose joined [10:03] *** crose left [10:06] *** spacekookie left [10:07] *** spacekookie joined [10:15] *** shlomif joined [10:16] *** rindolf left [10:18] *** shlomif is now known as rindolf [10:21] *** stoned75 joined [10:22] *** aborazmeh joined [10:44] Does Raku have a quoting constructs for junctions? Something like `qj[a b]` that would make a Junction. [10:46] any() [10:47] Thanks [10:48] What is the .Int operator in Raku? Like + is for .Num [10:48] note that this is just a combination of existing expressiveness -) [10:48] Xliff: there is none, .Int it is [10:48] I prever .any, myself [10:49] Aww... why didn't .Int get any love, lizmat? [10:49] ( Prolly run out of symbols? ;-> ) [10:49] lack of suitable characters to use as prefix? [10:49] yup [10:49] Should find one in Unicode. [10:49] I have .XCompose and WinCompose. I yam not afraid! [10:51] 𝕚, maybe? [10:52] method prefix:<𝕚> (\v) { v.Int } [10:52] m: multi sub prefix:<𝕚> (\v) { v.Int }; say 𝕚3.14169 [10:52] rakudo-moar 94f966d18: OUTPUT: «5===SORRY!5=== Error while compiling ␤Malformed postfix call␤at :1␤------> 3i sub prefix:<𝕚> (\v) { v.Int }; say 𝕚3.7⏏0514169␤» [10:52] m: multi sub prefix:<𝕚> (\v) { v.Int }; say 𝕚(3.14169) [10:52] rakudo-moar 94f966d18: OUTPUT: «5===SORRY!5=== Error while compiling ␤Undeclared routine:␤ 𝕚 used at line 1␤␤» [10:53] Huh. Thought that would work. [10:55] m: multi sub prefix:<𝕚> (\v) is equiv(&prefix:<+>) { v.Int }; say 𝕚(3.14169) [10:55] rakudo-moar 94f966d18: OUTPUT: «5===SORRY!5=== Error while compiling ␤Undeclared routine:␤ 𝕚 used at line 1␤␤» [10:55] raku say 𝕚 [10:55] m: raku say 𝕚 [10:55] rakudo-moar 94f966d18: OUTPUT: «5===SORRY!5=== Error while compiling ␤Undeclared routines:␤ raku used at line 1␤ 𝕚 used at line 1␤␤» [10:56] Huh! The one symbol I pick and it's usable as an op! [10:57] Ah, well. To bed I am. Good night, #raku. [11:01] Xliff: nighty night! [11:16] raydiak: sorry for late reply, just woke up, but I agree! thank you! [11:22] *** [Sno] joined [11:25] *** sno left [11:25] *** aborazmeh left [11:26] *** [Sno] left [11:36] Lizmat: are there any documentation pages for attribute traits? [11:36] I know you introduced some new ones a while back that I haven't had a chance to familiarize myself with. [11:37] https://docs.raku.org/type/Attribute ? [11:37] Ah! Thanks! [11:38] lizmat: Is there any way to have rakudo generate positional new from traits? [11:38] I was thinking "is built". [11:39] is built indicates that it will be accepted as a *named* param with .new [11:39] Right. [11:40] so you'd want something like "is built(Positional)" ? [11:40] Was hoping to save keystrokes. [11:40] well, that would be a major overhaul of default handling of classes / objects [11:40] m: class A { has $!b; has $!c; submethod BUILD (:$!b, :$!c) { }; method new ($b, $c) { self.bless( :$b, :$c ) }; }; [11:40] rakudo-moar 94f966d18: ( no output ) [11:40] but it *is* an interesting idea [11:41] why the BULD in that case ? [11:41] Would LOVE to drop the BUILD and new with a trait. [11:41] Can BUILD be dropped? [11:42] m: class A { has $!b; has $!c; method new ($b, $c) { self.bless( :$b, :$c ) }; }; A.new(1, 2); [11:42] rakudo-moar 94f966d18: ( no output ) [11:42] m: class A { has $!b is built; has $!c is built; method new ($b, $c) { self.bless( :$b, :$c ) }; }; [11:42] rakudo-moar 94f966d18: ( no output ) [11:42] that should work ? [11:43] m: class A { has $!b; has $!c; submethod BUILD (:$!b, :$!c) { }; method new ($b, $c) { self.bless( :$b, :$c ) }; method Str { $!b ~ '/' ~ $!c }; }; ~A.new(1, 2_ [11:43] rakudo-moar 94f966d18: OUTPUT: «5===SORRY!5=== Error while compiling ␤Unable to parse expression in argument list; couldn't find final ')' (corresponding starter was at line 1)␤at :1␤------> 3Str { $!b ~ '/' ~ $!c }; }; ~A.new(1, 27⏏5_␤ expecting any …» [11:43] m: class A { has $!b; has $!c; submethod BUILD (:$!b, :$!c) { }; method new ($b, $c) { self.bless( :$b, :$c ) }; method Str { $!b ~ '/' ~ $!c }; }; ~A.new(1, 2) [11:43] rakudo-moar 94f966d18: OUTPUT: «WARNINGS for :␤Useless use of "~" in expression "~A.new(1, 2)" in sink context (line 1)␤» [11:43] m: class A { has $!b; has $!c; submethod BUILD (:$!b, :$!c) { }; method new ($b, $c) { self.bless( :$b, :$c ) }; method Str { $!b ~ '/' ~ $!c }; }; say ~A.new(1, 2) [11:43] rakudo-moar 94f966d18: OUTPUT: «1/2␤» [11:43] m: class A { has $!b; has $!c; method new ($b, $c) { self.bless( :$b, :$c ) }; method Str { $!b ~ '/' ~ $!c }; }; say ~A.new(1, 2) [11:43] rakudo-moar 94f966d18: OUTPUT: «Use of uninitialized value element of type Any in string context.␤Methods .^name, .raku, .gist, or .say can be used to stringify it to something meaningful.␤/␤ in method Str at line 1␤Use of uninitialized value element of type Any in st…» [11:44] m: class A { has $!b is built; has $!c is built; method new ($b, $c) { self.bless( :$b, :$c ) }; method Str { $!b ~ '/' ~ $!c }; }; say ~A.new(1, 2) [11:44] rakudo-moar 94f966d18: OUTPUT: «1/2␤» [11:44] \o/ [11:44] Now just have to get rid of new! [11:44] PRs will be considered :-) [11:44] RakuAST would make short work of it. [11:45] not so sure: this would affect all of the BUILDPLAN logix [11:45] *logic [11:45] and that's carefully optimized for fun and profit [11:45] Would have to override CLASSHOW.^compose so that I could .^add_method at the last minute. [11:46] and nudging that runs the risk of slowdowns across the board [11:46] ok, if you're thinking like that... hmmm [11:46] that would leave the BUILDPLAN logic untouched [11:46] No, I would be punning all attributes with a Role. new() would be created from .^attribute order with all attributes having that trait. [11:46] And yes, that would be the hope. [11:47] still wonder if that would be a net performance gain [11:47] but then you're interested in fewer keystrokes, right ? [11:47] Was more concerned with O(fun) than gain. [11:47] I have strange ideas of Fun, these days. [11:48] yeah, sure... :-) [11:48] could be done in a module then :-) [11:48] https://github.com/Xliff/p6-EDS [11:48] lizmat: True. Could be done in a module. [11:48] Above link is the start of bindings for EvolutionDataServer [11:48] Xliff: perhaps rename the repo? [11:48] :-) [11:49] looks cool! [11:49] https://developer.gnome.org/eds/stable/ [11:49] lizmat: Hrm. Maybe. I think EvolutionDataServer is too long, though. [11:49] You think that's bad? [11:49] I was more thinking "raku-EDS" :-) [11:50] instead of "p6-EDS" :-) [11:50] https://github.com/Xliff/p6-GOA (GNOME Online Accounts) [11:50] lizmat: Yes. Prior to release there will be a prefix change. [11:50] ++Xliff :-) [11:50] BTW - 530,000 lines and climbing. [11:52] wow [11:54] *** Black_Ribbon left [11:54] Huh! Constants can support dashes, but enums can't? [11:55] example? [11:55] One second. Trying to get a clean parse before commit. [11:56] Oh... and this isn't valid, either! [11:56] m: sub test-vcard-qp-2-1-parsing { } [11:56] rakudo-moar 94f966d18: OUTPUT: «5===SORRY!5=== Error while compiling ␤Missing block␤at :1␤------> 3sub test-vcard-qp7⏏5-2-1-parsing { }␤ expecting any of:␤ new name to be defined␤» [11:57] m: our enum VCardVersion is export ('ver2-1', 'ver2_1' => 0, 'ver3', 'ver4'); ver2-1.say [11:57] rakudo-moar 94f966d18: OUTPUT: «5===SORRY!5=== Error while compiling ␤Undeclared routine:␤ ver2 used at line 1␤␤» [11:57] Numerics-following-dashes gets interpreted as subtraction [11:57] ah, yes [11:57] Grr... [11:58] kebabcase needs an alpha *after* the dash [11:58] that's been documented that way [11:58] because of ambiguity otherwise [12:00] Ohh! Significant improvement of compile times! [12:00] All p6-Projects compile in 93% of the time it took last-week [12:01] 20201-4-11 was slower. [12:01] Total time single-instance was 13658 for this week. Last week it was 14579, the weeb before 12760 [12:03] Oddly enough... parallel times increased from 3640s to 3725s [12:04] well, some race condition was fixed in the scheduler, that may have affected taht [12:06] Oh. Good. [12:22] m: sub term: { constant $ = sub ($a=1) { say $a } }; a-1("this works in a small number of very specific cases, but please don't do it. like ever.") [12:22] rakudo-moar 94f966d18: OUTPUT: «this works in a small number of very specific cases, but please don't do it. like ever.␤» [12:22] * raydiak is a bad example [12:22] and on that note...g'night all \o [12:22] gnight raydiak [12:24] *** [Sno] joined [12:27] so far 2021.04 is building fine [12:28] * lizmat looks forward to be doing "apt-get upgrade" on her Debian box [12:28] fedora 32 is the only one still running [12:28] the fastest / easiest way to run Raku in production so fae [12:28] *far [12:28] then tag and release [12:28] at least for me :-) [12:29] I always do a round of check before releasing it [12:30] I don't expect fedora to fail, so the package soon be up in around 20 minutes or so [12:30] (the upload is also automated when tagged) [12:33] those changes in master? maybe time i should rebuild [12:35] *** epony left [12:41] *** frost-lab joined [12:44] lizmat: packages now being build https://github.com/nxadm/rakudo-pkg/runs/2431595098 [12:45] El_Che++ [12:54] *** [Sno] left [12:56] *** ctilmes joined [12:56] rakudo 2021.04 is ready on alpine edge [12:56] *** ctilmes left [13:00] *** domidumont joined [13:01] *** frost-lab left [13:07] *** mscha joined [13:08] I've just (finally) installed the latest Rakudo Star, and doing some benchmarking... [13:09] my @primes = (^∞).grep(&is-prime); say “@primes[1_000_000] ({ (now - INIT now).fmt(‘%.2f’) }s)” [13:09] raku-2020.10: 15485867 (6.55s) [13:10] raku-2021.02.1: 15485867 (9.56s) [13:10] Significantly slower?? [13:11] (Still quite a bit faster than raku-2020.05, which took about 38 minutes.:-)  ) [13:12] m: my @primes = (^∞).grep(&is-prime); say “@primes[1_000_000] ({ (now - INIT now).fmt(‘%.2f’) }s)” [13:12] rakudo-moar 94f966d18: OUTPUT: «15485867 (8.39s)␤» [13:15] m: say (^∞).grep(&is-prime).skip(1_000_000).head; say "({(now - INIT now.fmt(‘%.2f’)}s)” [13:15] rakudo-moar 94f966d18: OUTPUT: «5===SORRY!5=== Error while compiling ␤Unable to parse expression in parenthesized expression; couldn't find final ')' (corresponding starter was at line 1)␤at :1␤------> 3head; say "({(now - INIT now.fmt(‘%.2f’)7⏏5}s)”…» [13:15] m: say (^∞).grep(&is-prime).skip(1_000_000).head; say "({(now - INIT now).fmt(‘%.2f’)}s)” [13:15] rakudo-moar 94f966d18: OUTPUT: «5===SORRY!5=== Error while compiling ␤Unable to parse expression in double quotes; couldn't find final '"' (corresponding starter was at line 1)␤at :1␤------> 3 say "({(now - INIT now).fmt(‘%.2f’)}s)”7⏏5␤ expe…» [13:16] m: say (^∞).grep(&is-prime).skip(1_000_000).head; say "({(now - INIT now).fmt(‘%.2f’)}s)" [13:16] rakudo-moar 94f966d18: OUTPUT: «15485867␤(7.28s)␤» [13:17] mscha: it pays not to have to cache [13:19] *** [Sno] joined [13:21] lizmat: still a lot faster on 2020.10 (5.43s) than on 2021.02.01 (8.19s) [13:21] mscha: can't disagree with that [13:22] oddly enough the is-prime handling was supposed to have been made faster in the past 6 months [13:22] or was that before 2020.10? hmmm... can't remember for sure [13:22] It's certainly many magnitudes faster than in 2020.05 (38 minutes). [13:23] mscha: would appreciate if you could find out what made this change [13:25] lizmat: I don't think I'm able to do that.  I just install Rakudo Star once in a while and don't really follow the development provess. [13:25] process [13:25] mscha: no worries :-) [13:27] *** [Sno] left [13:30] *** MasterDuke left [13:40] *** [Sno] joined [13:42] github action is action up, launched a new tagged build :/ [13:42] (nothing to do with the rakudo release or rakudo-pkg, just github) [13:45] *** [Sno] left [13:48] *** codesect` joined [13:49] https://github.com/demostanis/rakudostarplus [13:49] afk for a few hours& [13:50] *** codesections left [13:55] demostanis[m]: you should add a plus [13:57] *** [Sno] joined [13:59] *** MasterDuke joined [14:01] the recent slow down in mscha's example is the new coercion protocol merge (and then some optimizations after the initial merge, but it's still slower than before). i don't think it's related to is-prime [14:02] *** [Sno] left [14:03] weekly: rakudo-pkg for rakudo 2021.01 released, added packaged for newly released *buntu 21.04 [14:03] lizmat: ==^ [14:06] *** titsuki left [14:13] *** [Sno] joined [14:14] *** mscha left [14:18] *** [Sno] left [14:18] What do you mean? [14:20] https://github.com/demostanis/rakudostarplusplus would be a cooler name [14:24] Rakudo Star+ isn't that bad, and ++ sounds like it's written in C++ [14:24] Also why isn't rakudo.org written in Raku? [14:26] *** kurahaupo left [14:29] the ++ is a reference to augementing a variable in many languages [14:29] $var++ [14:29] "incrementing" [14:29] better [14:29] damn thesaurus [14:29] :) [14:30] language is, what's the word, hard [14:30] yet, not rigid [14:31] probably something to be thankful for, though [14:31] "Rakudo Star, INCREMENTED" [14:31] if we could only speak in formally correct utterances, then not much would get said [14:34] *** parabolize joined [14:35] *** [Sno] joined [14:40] *** [Sno] left [14:46] *** b2gills left [14:55] "correct" is a very normaive stance on language [14:56] *** timlegge left [14:57] *** kurahaupo joined [15:05] *** mscha joined [15:07] *** mscha left [15:08] *** b2gills joined [15:10] *** aborazmeh joined [15:27] *** kurahaupo left [15:47] *** [Sno] joined [15:52] *** [Sno] left [15:57] El_Che: $ raku -v [15:57] Welcome to Rakudo(tm) v2021.04. [15:57] :-) [16:10] *** [Sno] joined [16:13] *** aborazmeh left [16:13] :) [16:15] *** [Sno] left [16:16] *** [Sno] joined [16:23] *** [Sno] left [16:26] *** aborazmeh joined [16:30] *** aborazmeh left [16:36] *** [Sno] joined [16:38] *** Marcool joined [16:40] *** timlegge joined [16:44] *** [Sno] left [16:45] Hi all, is there a hard limit on the length that a constant list can be? [16:45] I'm hitting a compile time error trying to gobble a large wordlist into a constant (to save time on runtime) [16:46] Bytecode validation error at offset 4741598, instruction 388958: argument index 63404 not in range 0..63403 [16:46] the code is something like: [16:46] interesting! nine ^^ [16:46] unit module Dict; constant @dict is export = (loooooong list of words); [16:47] and in the executable: [16:47] use Dist; say @dict[25000] #for example; exit; [16:47] use Dict* of course [16:48] do you actually have to do the @dict[25000] to get the error, or is "use Dict" enough ? [16:49] lizmat: I'll give it a try [16:49] *** stoned75 left [16:50] it takes a while, it obviously gets quite far in the precomp, and fails, clearly, on attempting to insert item number 63404 into (something?) (native struct of some kind?) [16:50] 63404 is a bit of an odd number [16:51] close to 64K but not quite [16:51] yeah I was trying to see if there was a power of 2 anywhere there but there isn't that I can see [16:51] that's right, 64K is the closest, but not exactly off by one or anything [16:54] nope, same error without the say @dict[whatever] [16:55] just use Dict; is enough [16:55] wc -l Dict.rakumod -> 325552 [16:56] one array entry per line [16:56] incidentally parsing that in a text file a _runtime_ works fine, like a classic my @lines="dict.txt".IO.lines; [17:04] interesting [17:05] I think this is worth making an issue about [17:06] thanks for the interest :) [17:06] do you want me to do so or would you rather do it? [17:06] Marcool: if you could do it, please ! [17:06] I have also run it with --ll-exception and have a trace if that's helpful [17:07] sure no problem [17:07] yes, that would be helpful, thank you! [17:07] https://github.com/rakudo/rakudo/issues [17:07] ? [17:07] or moarvm ? [17:07] feels like a Rakudo issue atm to me [17:07] ok thanks, I'll do that right away [17:07] ++Marcool [17:09] *** domidumont left [17:09] *** [Sno] joined [17:11] *** epony joined [17:26] done [17:26] https://github.com/rakudo/rakudo/issues/4344 [17:26] let me know if there's anything else I can do to help [17:36] *** aborazmeh joined [17:41] <[Coke]> the only place 63403 or 63404 appear in the source is in nqp/MoarVM/src/strings/gb2312_codeindex.h, in an unlikely location. [17:49] *** [Sno] left [18:01] *** patrickb joined [18:04] *** [Sno] joined [18:12] *** [Sno] left [18:24] *** asymptotically joined [18:30] *** abraxxa joined [18:42] *** sena_kun left [18:43] *** sena_kun joined [18:52] *** draco100[m] left [18:52] *** uzl[m] left [18:53] *** draco100[m] joined [18:53] *** uzl[m] joined [18:56] *** stoned75 joined [19:01] *** squashable6 joined [19:08] *** domidumont joined [19:10] *** domidumont left [19:17] *** defaultxr left [19:27] *** aborazmeh left [19:32] *** _jrjsmrtn joined [19:33] *** epony left [19:34] *** __jrjsmrtn__ left [19:49] *** [Sno] joined [19:53] *** aborazmeh joined [19:54] *** [Sno] left [20:00] *** [Sno] joined [20:01] *** Marcool left [20:05] *** [Sno] left [20:30] *** epony joined [20:33] *** [Sno] joined [20:36] m: class NotNil is Nil {}; class C { method NotNil() { NotNil.new } }; sub s(NotNil()) {}; s(NotNil.new); [20:36] rakudo-moar 94f966d18: OUTPUT: «Impossible coercion from 'Nil' into 'NotNil': method NotNil returned a type object Nil␤ in sub s at line 1␤ in block at line 1␤␤» [20:37] I'm almost certain that NotNil is not Nil. [20:37] *** [Sno] left [20:45] m: class NotNil is Nil {}; class C { method NotNil() { NotNil.new } }; sub s(NotNil()) {}; s(C.new); [20:45] rakudo-moar 94f966d18: OUTPUT: «Impossible coercion from 'C' into 'NotNil': method NotNil returned a type object Nil␤ in sub s at line 1␤ in block at line 1␤␤» [20:45] And I'm sure NotNil did not return Nil. [20:45] C.NotNil that is [20:48] m: class NotNil is Nil {}; say NotNil; say NotNil.new [20:48] rakudo-moar 94f966d18: OUTPUT: «Nil␤Nil␤» [20:49] m: class NotNil is Nil {}; dd NotNil; dd NotNil.new [20:49] rakudo-moar 94f966d18: OUTPUT: «Nil␤Nil␤» [20:49] o.0 [20:49] *** [Sno] joined [20:50] m: class NotNil is Nil {}; my \nocontainer = NotNil.new; dd nocontainer; [20:50] rakudo-moar 94f966d18: OUTPUT: «Nil␤» [20:56] m: m: class NotNil is Nil {}; my \nocontainer = NotNil.new; dd nocontainer =:= Nil [20:56] rakudo-moar 94f966d18: OUTPUT: «Bool::True␤» [20:56] interesting [20:56] you need to provide your own .new for the NotNil class, as Nil.new =:= Nil [20:56] m: dd Nil.new =:= Nil [20:56] rakudo-moar 94f966d18: OUTPUT: «Bool::True␤» [20:57] *** [Sno] left [20:58] m: class NotNil is Nil {}; my \nocontainer = NotNil.new; dd nocontainer.WHAT; [20:58] rakudo-moar 94f966d18: OUTPUT: «Nil␤» [20:58] m: class NotNil is Nil {}; my \nocontainer = NotNil.new; dd NotNil.WHAT; [20:58] rakudo-moar 94f966d18: OUTPUT: «Nil␤» [20:58] m: say Failure.new.WHAT; [20:58] rakudo-moar 94f966d18: OUTPUT: «(Failure)␤» [21:00] *** rindolf left [21:03] m: class NotNil is Nil { method new { use nqp; nqp::create(self)} }; class C { method NotNil() { NotNil.new } }; sub s(NotNil()) {}; s(C.new); [21:03] rakudo-moar 94f966d18: ( no output ) [21:04] m: class NotNil is Nil { method new { self.CREATE }; class C { method NotNil() { NotNil.new } }; sub s(NotNil()) {}; s(C.new); [21:04] rakudo-moar 94f966d18: OUTPUT: «5===SORRY!5=== Error while compiling ␤Missing block␤at :1␤------> 3l.new } }; sub s(NotNil()) {}; s(C.new);7⏏5␤» [21:05] m: class NotNil is Nil { method new { self.CREATE } }; class C { method NotNil() { NotNil.new } }; sub s(NotNil()) {}; s(C.new); [21:05] rakudo-moar 94f966d18: ( no output ) [21:05] We may want to write that down somewhere … [21:08] *** wamba left [21:08] *** parabolize left [21:10] *** parabolize joined [21:13] *** asymptotically left [21:25] *** natrys left [21:26] *** dogbert17 joined [21:27] *** abraxxa left [21:28] *** dogbert11 left [21:32] *** [Sno] joined [21:37] *** [Sno] left [21:39] *** neshpion joined [21:39] what does Str.fc do? docs say it's for doing caseless comparisons but `$thing.fc.contains("SeArCh")` keeps returning false for me [21:40] *** dogbert11 joined [21:40] m: my $thing = "my STRING!"; say "string? ", $thing.fc.contains("string"); [21:40] rakudo-moar 94f966d18: OUTPUT: «string? True␤» [21:40] o.o [21:40] *** dogbert12 joined [21:41] actually i'm trying it on a heredoc not a regular string [21:41] *** dogbert12 left [21:42] *** dogbert12 joined [21:42] m: my $thing = "YEET"; say $thing.fc.contains("yeet"); [21:42] rakudo-moar 94f966d18: OUTPUT: «True␤» [21:43] m: my $thing = "yeet"; say $thing.fc.contains("YEET"); [21:43] rakudo-moar 94f966d18: OUTPUT: «False␤» [21:43] that's what my problem is, i'm checking using upper case [21:43] m: say "YEET".fc eq "yEeT".fc [21:43] rakudo-moar 94f966d18: OUTPUT: «True␤» [21:43] you need to use the .fc on both sides of the eq [21:44] .fc is not guaranteed to give you anything you can do a reliable .contains on [21:44] *** dogbert17 left [21:44] *** dogbert11 left [21:45] m: say "yeet".fc.contains("YEET".fc) [21:45] rakudo-moar 94f966d18: OUTPUT: «True␤» [21:45] ok [21:46] well, even that could cause false positives [21:47] *** [Sno] joined [21:52] *** [Sno] left [21:55] *** MasterDuke left [21:57] *** MasterDuke joined [22:07] *** patrickb left [22:09] *** MasterDuke left [22:09] *** MasterDuke joined [22:15] *** epony left [22:18] *** aluaces left [22:27] *** Xliff left [22:28] *** Xliff joined [22:31] *** epony joined [22:34] *** guifa2 joined [22:37] *** dogbert17 joined [22:39] *** pecastro left [22:39] *** [Sno] joined [22:41] *** dogbert12 left [22:44] *** [Sno] left [22:50] *** oneeggeach joined [22:51] *** cooper left [22:53] *** cooper joined [23:01] *** epony left [23:06] *** Xliff left [23:21] *** oneeggeach left [23:39] *** epony joined [23:43] *** epony left [23:48] *** [Sno] joined [23:52] *** [Sno] left [23:56] *** MasterDuke left