On Mon, 22 May 2017 05:20:25 -0700, pawel.pab...@getresponse.com wrote:
> I'm not sure what proper behavior should be in this useless code below
> :)
> Probably something like in "say @t[*]" - constructing items until OOM
> - because Inf -1 = Inf.
> 
> $ perl6 -e 'my @t := 1 .. *; say @t[*-1]'
> Cannot coerce Inf to an Int
>   in block <unit> at -e line 1
> 
> Actually thrown at:
>   in block <unit> at -e line 1
> 
> 
> Also using two Whatevers on infinite list gives another cast error.
> IMO in this case exception should be thrown because Inf - Inf = NaN.
> 
> $ perl6 -e 'my @t := 1 .. *; say @t[*-*]'
> Cannot coerce NaN to an Int
>   in block <unit> at -e line 1
> 
> Actually thrown at:
>   in block <unit> at -e l

Thank you for the report. However, the errors reported are correct, as the 
indexing operation coerces the final indices to Int:

    dd <a b c>[1.2, ⅓ .. 1.5 ]
    ("b", ("a", "b"))

The @t[*] case you mention riefies all, hence the OOM, while the *-1 and *-* 
are Inf-1 and Inf-Inf in your case, so the resultant indices are Inf and NaN, 
and they cannot be coerced to Int.

Reply via email to