00:42
evalable6 left,
notable6 left,
tellable6 left,
bisectable6 left,
unicodable6 left,
nativecallable6 left,
bloatable6 left,
squashable6 left,
committable6 left,
shareable6 left,
releasable6 left,
greppable6 left,
statisfiable6 left,
sourceable6 left,
benchable6 left,
coverable6 left,
quotable6 left,
linkable6 left,
reportable6 left,
evalable6 joined,
nativecallable6 joined,
committable6 joined,
releasable6 joined,
reportable6 joined
00:43
unicodable6 joined,
tellable6 joined,
statisfiable6 joined,
quotable6 joined,
squashable6 joined
00:44
bisectable6 joined,
bloatable6 joined,
linkable6 joined,
shareable6 joined,
greppable6 joined
00:45
coverable6 joined,
notable6 joined,
benchable6 joined,
sourceable6 joined
02:15
AlexDani` left
02:16
AlexDani` joined
03:31
MasterDuke left
04:37
Kaiepi left
04:47
Kaiepi joined
06:44
MasterDuke joined
08:12
shareable6 left,
notable6 left,
evalable6 left,
releasable6 left,
nativecallable6 left,
benchable6 left,
tellable6 left,
statisfiable6 left,
greppable6 left,
bisectable6 left,
unicodable6 left,
quotable6 left,
committable6 left,
reportable6 left,
squashable6 left,
linkable6 left,
sourceable6 left,
bloatable6 left,
coverable6 left
08:13
releasable6 joined,
bisectable6 joined,
nativecallable6 joined,
notable6 joined,
unicodable6 joined,
statisfiable6 joined,
linkable6 joined
08:14
coverable6 joined,
quotable6 joined,
sourceable6 joined,
tellable6 joined,
benchable6 joined,
evalable6 joined,
squashable6 joined
08:15
shareable6 joined,
bloatable6 joined,
greppable6 joined,
reportable6 joined,
committable6 joined
08:43
Summertime left
08:45
Summertime joined
|
|||
lizmat | Files=1306, Tests=111230, 223 wallclock secs (29.02 usr 8.37 sys + 3028.17 cusr 279.57 csys = 3345.13 CPU) | 08:52 | |
hmmm.. 50 CPU secs more than the last time | 08:53 | ||
weird | |||
09:15
sena_kun joined
|
|||
MasterDuke | the new tests you added running in parallel with existing tests, so same wallclock, but more cpu? | 09:50 | |
lizmat | you mean the new ... tests ? they are not part of make spectest yet | 09:57 | |
wallclock is 11 more than yesterday | |||
MasterDuke | huh. i just ran one and the numbers didn't look crazy, but i reset yesterday so i don't have any scrollback to actually compare to | 10:01 | |
10:13
Kaiepi left
10:14
Kaiepi joined
10:39
Altai-man_ joined
10:41
sena_kun left
10:44
Kaiepi left,
Kaiepi joined
11:22
AlexDani` is now known as AlexDaniel,
AlexDaniel left,
AlexDaniel joined
|
|||
AlexDaniel | tellable6: Xliff | 11:27 | |
tellable6 | AlexDaniel, I saw Xliff 2020-04-07T23:45:41Z in #raku-dev: <Xliff> Hmm.... | ||
AlexDaniel | hmmm | ||
11:41
Xliff joined
|
|||
Xliff | \o | 11:41 | |
m: my $a = '%s is rw'; my $start = now; for ^10000 { for <loop hah dur feta> { my $b - $a.sprintf($_); ); LAST say now - $start; }; | 11:42 | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Missing block at <tmp>:1 ------> 3hah dur feta> { my $b - $a.sprintf($_); 7⏏5); LAST say now - $start; }; |
||
Xliff | m: my $a = '%s is rw'; my $start = now; for ^10000 { for <loop hah dur feta> { my $b - $a.sprintf($_); }; LAST say now - $start; }; | ||
camelia | WARNINGS for <tmp>: Useless use of "-" in expression "my $b - $a.sprintf($_)" in sink context (line 1) Use of uninitialized value of type Any in numeric context in block at <tmp> line 1 Cannot convert string to number: base-10 number must b… |
||
Xliff | m: my $a = '%s is rw'; my $start = now; for ^10000 { for <loop hah dur feta> { my $b = $a.sprintf($_); }; LAST say now - $start; }; | ||
camelia | 4.5798884 | ||
Xliff | Is it just me, or is that awfully slow? (It's even slower on repl.it/languages/perl6) | 11:43 | |
11:45
Kaiepi left
|
|||
MasterDuke | Xliff: sprintf is know to be very slow. lizmat is/was working on a faster reimplementation | 11:46 | |
lizmat | it's on the back burner atm | 11:47 | |
the problem with sprintf is that it uses a grammar | |||
and *every* call to sprintf parses the format string with the grammar, and the associated actions build the result string | 11:48 | ||
my approach would let the grammar parse the format string once, build a piece of code, EVAL that and cache that | |||
problem with that approach is that the EVAL overhead is only cancelled out after about 100 runs of the same format string | 11:49 | ||
before that, my approach is slower | |||
am now thinking of building AST's to prevent the expensive EVAL step | 11:50 | ||
and hoping that jnthn's work on macros will make that a lot easier | |||
jnthn | Speaking of which, just published the talk slides and a video about that: twitter.com/jnthnwrthngtn/status/1...0666461185 | ||
11:51
Kaiepi joined
|
|||
Geth_ | rakudo: b9105f1a8b | (Elizabeth Mattijsen)++ | 3 files Show that the Supply class is spread over 3 files Should fix R#3615 |
11:51 | |
linkable6 | R#3615 [open]: github.com/rakudo/rakudo/issues/3615 Closing curly brace missing? | ||
jnthn | Why is it spread over 3 files, btw? I never know where to look any more. :P | 11:52 | |
(Though `git grep` to the rescue) | |||
11:53
Kaiepi left
11:54
Kaiepi joined
|
|||
lizmat | I guess for the same reason we have an Any.pm6 and a Any-iterable.pm6 ? | 11:54 | |
I split it up because I was adding quite a few methods, and it already had a separation in core / factories / coercers sort of | 11:55 | ||
jnthn: if you want it merged again, I can do that | 11:56 | ||
jnthn | Don't worry for now, I don't really work on CORE.setting | ||
So it's not that important what I think :) | |||
nine | jnthn: it's kinda nice that with the video, you can actually stand in front of the nice background instead of just showing a pretty picture on the projector :) | 11:59 | |
11:59
Kaiepi left
12:00
Kaiepi joined
|
|||
nine | That's something that one could take further....a lot further... like speaking in front of a pretty mountain top, some nice woods, a jungle... | 12:00 | |
Somehow I end up with a very Bear Grylls like into with jnthn in a helicopter next to the open door over some waterfall "Hi folks, let's talk about object models" | 12:01 | ||
s/into/intro/ | |||
jnthn | :D | 12:02 | |
AlexDaniel | lizmat: I just realized that you can use … with multiple values and it's a bugnest of its own | 12:09 | |
m: .say for 1…5.5 | |||
camelia | 1 2 3 4 5 |
||
lizmat | it is :-) | ||
AlexDaniel | m: .say for 1…3…5.5 | ||
camelia | 1 2 3 4 5 5.5 |
||
AlexDaniel | should be the same I think | 12:10 | |
lizmat | agree | ||
AlexDaniel | and this I don't even know how it's supposed to behave: | ||
m: .say for 1…5.5…1 | |||
camelia | 1 2 3 4 5 5.5 4.5 3.5 2.5 1.5 1 |
||
AlexDaniel | lizmat: at least you can't do that with …^, that's nice | 12:11 | |
but | |||
m: .say for 1^…^3^…^5.5 | |||
camelia | 2 3 4 5 5.5 |
||
AlexDaniel | I mean… um… whatever… | 12:12 | |
and you know what? | 12:13 | ||
you can also do that with strings, because of course we have that special case | |||
m: .say for "ac"^…^"cc"^…^"ac" | 12:14 | ||
camelia | bc cc cc bc ac ac |
||
AlexDaniel | not that it works any better without ^…^ | ||
m: .say for "ac"…"cc"…"ac" | |||
camelia | ac bc cc cc bc ac ac |
||
AlexDaniel | and you'd think that it'd work better with the generic .succ/.pred case | 12:17 | |
jnthn | If I'd had to guess, I'd have thought ... was non-assoc... | ||
AlexDaniel | m: .say for "a".IO…"c".IO…"c".I | ||
camelia | No such method 'I' for invocant of type 'Str'. Did you mean 'IO'? in block <unit> at <tmp> line 1 |
||
AlexDaniel | jnthn: if I had to guess I'd have thought that … uses .succ/.pred instead of doing magic | 12:18 | |
jnthn | AlexDaniel: I tend to consider ... as the thing that *does* to magic (e.g. deducing sequences) as opposed to Range (which is far simpler because all the magic was put into ...). | 12:19 | |
*do | |||
AlexDaniel | then we end up with both ops doing magic :) | ||
m: .say for "a".IO…"c".IO…"c".IO | 12:20 | ||
camelia | "a".IO Cannot get sequence start value from an empty list in block <unit> at <tmp> line 1 "b".IO "c".IO |
||
jnthn | I don't know that .. is especially magical? | ||
I mean, for strings it knows unicode ranges, and I'm not sure those are actually part of the Unicode spec, which is arguably magical | 12:21 | ||
AlexDaniel | jnthn: unicode ranges? You mean pattern generation? | 12:22 | |
like, this is far from being a range: | 12:23 | ||
m: .say for ‘aa’..‘ca’ | |||
camelia | aa ba ca |
||
AlexDaniel | and this is more like a range: | ||
m: .say for ‘aa’.IO..‘ca’.IO | |||
camelia | "aa".IO "ab".IO "ac".IO "ad".IO "ae".IO "af".IO "ag".IO "ah".IO "ai".IO "aj".IO "ak".IO "al".IO "am".IO "an".IO "ao".IO "ap".IO "aq".IO "ar".IO "as".IO "at".IO "au".IO "av".IO "aw".IO "ax".IO "ay".IO "… |
||
lizmat | the default is to use .succ | ||
jnthn | Oh wait, that's actaully derived from .succ behavior :) | ||
So the "magic" is just there | |||
So what *does* ... do on Str? :) | 12:24 | ||
AlexDaniel | same as .. some sort of string generation based on the patterns you give | ||
jnthn | m: say "a", "c" ... "x" | 12:25 | |
camelia | (a c d e f g h i j k l m n o p q r s t u v w x) | ||
AlexDaniel | pfffft | ||
jnthn | Arguably that should be "a", "c", "e", though maybe that's asking for trouble :P | ||
AlexDaniel | .oO( coming up: geometric string ranges ) |
12:26 | |
jnthn | I'm not convinced it's actually very useful :) | ||
lizmat | I think in the specs, TimToady said to only do that magic on numerics | ||
jnthn | Yeah | 12:27 | |
AlexDaniel | I mean, sequences, but you get the point :) | ||
jnthn | I mean, even dice faces, but by the time you specified 2, 4, and 6 you've written the full list of them :P | ||
12:27
Kaeipi joined,
Kaiepi left
|
|||
lizmat | also, 'a' ... 'c' will do codepoint increment if both endpoints are 1 codepoint | 12:27 | |
jnthn | So yeah, I'd agree with TimToady to keep deduction just to numerics | 12:28 | |
lizmat | otherwise it will do .succ | ||
jnthn | Hmm, why? | ||
lizmat | jnthn: ask TimToady ? | ||
jnthn | haha :) | 12:29 | |
lizmat | but basically, anything that knows how to do .succ should work | ||
m: dd Date.today ... Date.new(2020,5,1) | |||
camelia | (Date.new(2020,4,11), Date.new(2020,4,12), Date.new(2020,4,13), Date.new(2020,4,14), Date.new(2020,4,15), Date.new(2020,4,16), Date.new(2020,4,17), Date.new(2020,4,18), Date.new(2020,4,19), Date.new(2020,4,20), Date.new(2020,4,21), Date.new(2020,4,22)… | ||
jnthn | Yes, that makes sense, I'm just not sure why single codepoints are different, and wondering if it was just optimization or something else. | ||
lizmat | I don't think it's an optimization, it's to allow things like this to work: | 12:30 | |
AlexDaniel | jnthn: dunno if you read my thoughts on it some time ago, but even if we do remove special casing for Strs and just let it .succ then we'll still have this issue: | ||
m: .say for (‘-5’..*)[^10] | |||
camelia | -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 |
||
AlexDaniel | which is kinda bad in its own way | ||
lizmat | m: dd "█" ... "▁" | ||
camelia | ("█", "▇", "▆", "▅", "▄", "▃", "▂", "▁").Seq | ||
AlexDaniel | uniprop: █ | 12:32 | |
unidump: █ | |||
unicodable6 | AlexDaniel, gist.github.com/301a4a59a858070344...d72b7db42d | ||
12:40
sena_kun joined
12:41
Altai-man_ left
|
|||
nine | I've just looked through our HTML templating modules and none of them, not even Cro::WebApp::Template does the right thing and puts a compiled result into a precomp store :( | 13:02 | |
Xliff | nine++: I was wondering about that. | ||
nine: What do you think... Templates compile down to a QAST? | 13:03 | ||
nine | Xliff: well Cro::WebApp::Template for example compiles the template into Raku and EVALs that. | 13:06 | |
The precomp store and the precompilation repository would provide lots of very useful functionality for such a used case, e.g. all the up-to-date checking | 13:07 | ||
lizmat | jnthn: just having watched your excellent presentation... looking forward to the initial release and applying my sprintf work on it | ||
13:07
Kaeipi left
|
|||
lizmat | jnthn: one question, re LessVM: have you considered going for something like LLVM as a base ? And if not, why not :-) | 13:08 | |
jnthn | nine: I tried to do some kind of precomp for template modules (e.g. where you have a distribution just for templates) and ran into trouble. | 13:09 | |
nine: And didn't have time to debug it (actually needed to work on the project we were meant to be delivering :)) | |||
Xliff | nine: Ahh. Yeah. It would be nice take said Raku and get it rendered into a QAST. Then we can take that to bytecode. | ||
13:11
Kaiepi joined
|
|||
jnthn | nine: On templates at development time, though, I'd like an option to reload the on any change without restarting the process during development, because it's a bit of a waste to restart the whole process just for a template tweak (especially when doing visual/layout tweaks) | 13:11 | |
nine | true, true | 13:12 | |
jnthn | lizmat: Well, the whole joke there is largely that "less is moar" - e.g. it's evolution rather than revolution. :) There are numerous articles out there on the downsides of LLVM for a dynamic language JIT from those who have tried it, however. | 13:13 | |
Well, maybe numerous overstates it, but they exist. | |||
13:14
Kaiepi left,
Kaiepi joined
|
|||
sena_kun | oh, there is a talk released? link pls? | 13:14 | |
lizmat | twitter.com/jnthnwrthngtn/status/1...0666461185 | 13:15 | |
sena_kun | yay, thanks! will watch after $dayjob... | 13:16 | |
13:38
Kaiepi left
13:44
Kaiepi joined
|
|||
MasterDuke | jnthn++ very interesting | 13:56 | |
14:06
Kaeipi joined
|
|||
nine is quite proud that he thought of the bootstrap issue and that the variable is gonna need a block to live in bevore jnthn said it :) | 14:06 | ||
14:07
Kaiepi left
|
|||
nine | Sounds like in the end, the mbc backend I wrote in NQP will be somewhat beneficial for the RakuAST and maybe even for migrating spesh into the higher levels :) | 14:38 | |
14:39
Altai-man_ joined
14:42
sena_kun left
|
|||
Kaeipi | the rakuast stuff is really exciting, macros are something i've wanted to be usable for a long time | 14:57 | |
Xliff | Same here | 15:10 | |
15:51
patrickb joined
|
|||
Geth_ | nqp: acf41ba617 | Coke++ | docs/ops.markdown Add substr3 doc |
16:09 | |
[Coke] | going through docs, I see a lot of VM specific opcodes. Should we be working towards unifying the opcode set? | 16:27 | |
e.g. : 'rindexfromend' in the JVM backend only. it's only used to supply the 2 arg version of rindex | 16:28 | ||
(I see that they're tagged as "Internal" in the docs (need to update the doc test to understand that), but that's just advisory. | 16:29 | ||
16:40
sena_kun joined
16:41
Altai-man_ left
|
|||
Geth_ | nqp: 6ad50effff | Coke++ | t/docs/opcodes.t allow VM overrides at the opcode level... ... not just for the heading row. Follows what the existing markdown was already doing, improves test reporting |
17:22 | |
nqp: f6906e4678 | Coke++ | docs/ops.markdown Update VM marks |
|||
nqp: 1c3a49def5 | Coke++ | docs/ops.markdown Treat JS-specific NFG opcodes as variants |
17:26 | ||
nqp: 9074950e41 | Coke++ | docs/ops.markdown treat substr2/3 as variants |
17:32 | ||
nqp: f9df3f1cab | Coke++ | docs/ops.markdown add substr variants |
|||
[Coke] wonders why the opcode is 'falsey' and not 'not' | 17:51 | ||
Geth_ | nqp: 8ce2ce4cc6 | Coke++ | docs/ops.markdown document falsey |
18:00 | |
nqp: a7bb66ddac | Coke++ | docs/ops.markdown add some variants |
|||
18:09
AlexDaniel left
|
|||
Geth_ | nqp: 70520fb5f7 | Coke++ | t/docs/opcodes.t Find a few more op definitions in JS VM |
18:10 | |
[Coke] | (326 fails left) | 18:11 | |
Geth_ | nqp: coke self-assigned Bunch of things undocumented github.com/Raku/nqp/issues/293 d06ab4ee3e | (Stefan Seifert)++ | src/vm/moar/HLL/Backend.nqp Seems like sqlite3 deals badly with insert statements containing a large number of data records. A generated profile with lines that are several 100 MB long, sqlite3 can use 10s of GB of memory to process. Use the already existing batching infrastructure to split those lines into multiple insert statements for call data. |
18:21 | |
18:39
Altai-man_ joined
18:42
sena_kun left
|
|||
lizmat | m: use nqp; say nqp::falsey(42) | 19:00 | |
camelia | ===SORRY!=== No registered operation handler for 'falsey' |
||
lizmat | [Coke] ^^^ ?? | ||
[Coke] | Whoops. | 19:01 | |
maybe it's QAST only? | |||
was just pulling them out of the source, wasn't actually testing they were usable. :) | |||
lizmat | I only see it in nqp, nowhere in the Raku sources | 19:02 | |
maybe it's an old name of nqp::isfalse ? | |||
[Coke] | both moar & jvm nqp have: $ops.add_hll_op for it. | ||
and js has a slightly different variant. | 19:03 | ||
nqp: nqp::say(3) | |||
camelia | 3 | ||
[Coke] | nqp: nqp::say(nqp::falsey(0)); | ||
camelia | 1 | ||
[Coke] | No clue why it isn't mapped in rakudo. | 19:04 | |
lizmat | well, for the functionality documented, I use nqp::isfalse in Rakudo | 19:05 | |
[Coke] | Maybe we can kill it. | 19:06 | |
worth opening a ticket for "why do we have both of these" - if there is a difference, we should document it. | |||
lizmat | nine++ | 19:08 | |
nine | With this sqlite3 tops out at ~ 4G of RSS versus running out of memory with > 44G available... | ||
I think splitting allocations would be quite beneficial as well. Alas, rakudo probably will run out of memory before being able to write a profile that large | 19:09 | ||
dogbert17 | m: my int $i = -(2**63); say $i; say abs($i) # ? | 19:39 | |
camelia | -9223372036854775808 -9223372036854775808 |
||
20:10
AlexDaniel joined,
AlexDaniel left,
AlexDaniel joined
20:34
AlexDaniel left
20:40
sena_kun joined
20:41
Altai-man_ left
21:10
AlexDaniel joined,
AlexDaniel left,
AlexDaniel joined
21:18
Kaeipi left
21:19
Kaeipi joined
21:22
AlexDaniel left
21:24
AlexDaniel joined
21:28
AlexDaniel left
21:40
AlexDaniel joined,
AlexDaniel left,
AlexDaniel joined
|
|||
AlexDaniel | sourceable6: &[…]((1, 2, 4), ∞) | 22:29 | |
sourceable6 | AlexDaniel, github.com/rakudo/rakudo/blob/b910...s.pm6#L129 | ||
AlexDaniel | hmm | 22:30 | |
sourceable6: Seq.new(SEQUENCE((1, 2, 4), ∞)) | |||
sourceable6 | AlexDaniel, github.com/rakudo/rakudo/blob/b910...eq.pm6#L10 | ||
AlexDaniel | sourceable6: SEQUENCE((1, 2, 4), ∞) | 22:31 | |
sourceable6 | AlexDaniel, github.com/rakudo/rakudo/blob/b910...NCE.pm6#L1 | ||
22:39
Altai-man_ joined
22:42
sena_kun left
22:48
patrickb left
|
|||
AlexDaniel | m: say (1, -1, 1 … -1)[^5] | 22:50 | |
camelia | (1 -1 Nil Nil Nil) | ||
AlexDaniel | hmm | ||
arguably same as this: | 22:51 | ||
m: say (1, 2, 3 … 2)[^5] | |||
camelia | (1 2 Nil Nil Nil) | ||
AlexDaniel | kinda makes sense, kinda | ||
23:02
cognominal joined
|
|||
AlexDaniel | lizmat, jnthn: okay that may sound crazy but even geometric sequences are not very justified in my eyes | 23:04 | |
as a party trick, maybe | |||
23:05
cognomin_ left
|
|||
AlexDaniel | m: say (-1, -2, -4 … *)[^10] | 23:05 | |
camelia | (-1 -2 -4 -8 -16 -32 -64 -128 -256 -512) | ||
AlexDaniel | m: say (-1, -2, -4 … -16)[^10] | ||
camelia | (Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil) | ||
AlexDaniel | bug. | ||
probably the first bug I discovered solely by staring at the code :) | |||
like, I think it'd be nice to have a well-defined feature set that we can actualy get right | 23:08 | ||
and also * × 2 isn't that hard to write anyway | 23:10 | ||
jnthn | Complexity you push out of the standard library will just pop up in non-standard ones. | 23:13 | |
AlexDaniel | except that nobody is going to implement the absolutely unnecessary logic for geometric sequences or weird string generation | 23:14 | |
m: say (-1, {$_ × 2} … -16)[^10] | 23:15 | ||
camelia | (-1 -2 -4 -8 -16 Nil Nil Nil Nil Nil) | ||
jnthn | Dunno about the string one; geometric progressions aren't so unusual though. | ||
AlexDaniel | look how this just works | ||
it's a bit more complicated if the endpoint is not in the sequence though | 23:16 | ||
jnthn | (For example, in doing back-off when retrying) | ||
AlexDaniel | jnthn: if they're so unusual add another operator or function | ||
same for string stuff | |||
how come a single operator has to deal with all of the edge cases | 23:17 | ||
(and get half of them wrong) | |||
jnthn | I said they're *not* unusual | ||
AlexDaniel | jnthn: yeah, I read it right but replied wrong. If they're so common add another operator or function | 23:18 | |
jnthn | I don't really see how that'd help; you'd just have the logic elsewhere. Logic that only comes into play if you don't provide a function to generate the next value. | 23:19 | |
AlexDaniel | m: say (1,2,4 … 256 … 2)[^10] | 23:21 | |
camelia | (1 2 4 8 16 32 64 128 256 255) | ||
AlexDaniel | so you don't think that separate manageable functionality where all the unneeded stuff is thrown away is easier to maintain? | ||
or that it is easier to document, understand and teach? | 23:22 | ||
jnthn | You're assuming your lack of need reflects everyone elses. | ||
AlexDaniel | what's the need we're talking about | 23:23 | |
jnthn | Anyway, enough. | ||
& | |||
AlexDaniel | I just can't look at this bloat anymore | ||
m: say (1, 2, 4 … 256 … ∞)[^10] | 23:29 | ||
camelia | (1 2 4 8 16 32 64 128 256 257) | ||
AlexDaniel | it's kinda cool you can actually reverse it geometrically too | 23:31 | |
m: say (1, 2, 4 … 256, 128, 64 … 0)[^20] | |||
camelia | (1 2 4 8 16 32 64 128 256 128 64 32 16 8 4 2 1 0.5 0.25 0.125) | ||
AlexDaniel | this one is kinda interesting :) | 23:46 | |
m: say (-Inf, 0, Inf … Inf)[^20] | |||
camelia | (-Inf NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN) | ||
AlexDaniel | m: say (-Inf, 0, Inf … 0)[^20] | ||
camelia | (-Inf 0 Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil) | ||
AlexDaniel | but yeah infs are unfair | 23:47 | |
there are other meaningless cases that are weird too, but at least they don't matter as much | 23:50 | ||
like | |||
m: say (False, True … False)[^20] | |||
camelia | (False 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19) | ||
AlexDaniel | m: say (False, True … True)[^20] | 23:51 | |
camelia | (False Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil) | ||
AlexDaniel | so both are wrong because of Bool special-casing on the endpoint, but there's probably some reason for it | ||
ah | 23:54 | ||
finally found something in the most basic code path | |||
m: say (5, 5 … 10)[^20] | |||
camelia | (Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil) | ||
AlexDaniel | m: say (5, 5 … -10)[^20] | 23:55 | |
camelia | (5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5) |