On Wed, 26 Aug 2020, Tobias Boege wrote:
> Observe:
> 
>   > 1 ...^ 20
>   (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19)
> 
>   > 1 ... ^20  # actually C«1 ... (0..19)»
>   (1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19)
> 
> The documentation [1] states that the C«...» infix is list-associative
> and while I have never seen an example of that (including in that docs
> page), it would explain why it happily takes in your list (1) and then
> your list (0 .. 19) and concatenates them into a sequence, without
> applying any of the usual sequence operator magic.

And I must correct myself. The associativity has nothing to do with this.
I don't know where my mind was when I wrote that. From the documtation,
I would blame the slurpy argument **@ for that behavior of just taking in
lists and effectively iterating them into a new Seq, and in Rakudo it is
apparently this special candidate:

  # https://github.com/rakudo/rakudo/blob/e2855aa/src/core.c/operators.pm6#L129
  multi sub infix:<...>(\a, Mu \b) {
      Seq.new(SEQUENCE(a, b))
  }

Best,
Tobias

Reply via email to