proc `...`*[T](a, b: T): Slice[T] {.noSideEffect, inline, magic: "DotDot".} =
## `slice`:idx: operator that constructs an interval ``[a, b)``. `a` is
## inclusive and `b` is exclusive. Slices can also be used in the set
## constructor and in ordinal case statements, but then they are
## special-cased by the compiler.
result.a = a
result.b = b - 1
let s = "test1234"
echo s[0...s.len]
echo s[0..s.len]
echo s[0...4]
echo s[4...8]
echo s[0..<4]
echo s[4..<8]
echo s[0..4]
echo s[4..8]