[02:16] *** human-blip left
[04:38] *** swaggboi left
[06:32] *** human-blip joined
[13:08] *** librasteve_ joined
[17:32] *** librasteve_ left
[17:34] *** human-blip left
[17:36] *** human-blip joined
[18:36] *** librasteve_ joined
[21:01] <disbot1> <timemelon> when I run (1, 2, 3)[* - 4], it raises an Effective index out of range error, but when I run (1, 2, 3)[* - 4] // 0 I get 0

[21:01] <disbot1> <timemelon> how does this work? does indexing 'know' that the // will try to use its result?

[21:02] <disbot1> <timemelon> I was expecting to still see the error, I thought that // just checked for definedness

[21:05] <lizmat> m: dd (1, 2, 3)[* - 4]

[21:06] <camelia> rakudo-moar e4084e61a: OUTPUT: «Failure.new(exception => X::OutOfRange.new(what => "Effective index", got => -1, range => "0..^Inf", comment => Any))␤»

[21:06] <lizmat> it returns a Failure, which is a wrapped Exception.   As soon as you use a Failure in any way other than .defined or .Bool, it will throw the exception

[21:07] <lizmat> the // uses .defined, so it doesn't throw the exception, it just returns False

[21:07] <lizmat> so // 0 will give you 0

[21:07] <disbot1> <librasteve> m: say (1,2,3)[*-4].defined

[21:07] <disbot1> <Raku eval>  False 

[21:10] <disbot1> <timemelon> thanks! that makes sense

[21:56] *** Guest63 joined
[21:56] *** Guest63 left
[22:13] *** librasteve_ left
[23:23] <disbot1> <timemelon>  [0] > Seq(1, 2, 3).WHAT (Seq) [1] > list(Seq(1, 2, 3)).WHAT (Seq) [2] > List(Seq(1, 2, 3)).WHAT (List) [3] > Seq(1, 2, 3).list.WHAT (List) [4] > Seq(1, 2, 3).List.WHAT (List) how come the list sub behaves differently to List and the methods .list and .List here? the docs for list say > if called with a single argument that is a non-itemized Iterable it returns a List based on the argument's iterator; otherwise it just

[23:23] <disbot1> returns the argument list. I think I'm missing something, this reads like it should make a list out of the seq, no?

