... Skeleton
infix ...
...The rules for ... have not been written yet. Everything below is extracted rather than authored: the official documentation supplies the classification, and the interpreters were asked directly about the rest.
What is established #
Classification #
... is parsed as an infix at the list infix precedence level, list-associative.
That is level 22 of 27 on the ladder, counting from the tightest. Operators sharing a level bind equally; grouping among them is decided by associativity alone.
Shares its precedence level with #
These all bind equally tightly, so an expression mixing them groups by associativity alone.
What the interpreter said #
Raku++ parses this spelling. Asked to compile:
my $a = 6; my $b = 3; sink($a ... $b)
…it got through the parser. On its own that establishes very little: it says nothing about whether the construct executes, let alone whether the result is right. Where the behaviour table below exists, that is the stronger evidence — those expressions were actually run.
Covered upstream #
The official documentation has a section for this construct: docs.raku.org. Until the rules here are written, that is the better reference.
Observed behaviour #
Each expression below was executed by both interpreters when this page was built; the results are recorded, not written. The operands are chosen to cross the boundaries that catch people out: string against number, a list where a scalar was meant, a boolean, an undefined value, and an exact rational.
3 of 7 of these disagree between Raku++ and Rakudo — shown side by side below. A disagreement here is a defect report waiting to be written, not a documented rule.
| Expression | Raku++ | Rakudo |
|---|---|---|
1 ... 2 | Seq | (1 2) | |
"a" ... "b" | Seq | (a b) | |
1 ... "2" | Seq | (1 2) | |
(1, 2) ... (3, 4, 5) | Seq | (1 2 3) | Seq | (1 2 3 4 5) |
True ... False | Seq | (True 0) | Seq | (True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True ...) |
Nil ... 1 | Seq | (Nil 1) | ERR Use of uninitialized value of type Any in string context. |
1/2 ... 1/3 | Seq | (0.5) | |