There are some outputs that I cannot understand when extracting elements, please review the following script
Code : Tout sélectionner
seq1 := ( a, b, c )
/* SIMPLE []
USE OF POSITIVE INDICES [0, ...] */
seq1[ 0 ] -> a
seq1[ 1 ] -> b
seq1[ 2 ] -> c
/* USE OF NEGATIVE INDICES [..., - 1] */
seq1[ -1 ] -> c
seq1[ -2 ] -> b
seq1[ -3 ] -> a
/* DOUBLE [[]]
USE OF POSITIVE INDICES [[0, ...]] */
seq1[[1]] -> a
seq1[[2]] -> b
seq1[[3]] -> c
/* SUBSEQUENCES OR PORTIONS OF A SEQUENCE
SIMPLE []
USE OF POSITIVE INDICES [0, ...] and operator (..)
*/
seq1[ 0 .. 1 ] -> ( a, b )
seq1[ 1 .. 2 ] -> ( b, c )
seq1[ 0 .. 0 ] -> a
seq1[ 1 .. 3 ] -> ( b, c )
seq1[ 0 .. 2 ] -> ( a, b, c )
seq1[ 2 .. 2 ] -> c
/* Combination of signs */
seq1[ 2 .. 0 ] -> seq[ ] // expected 2, from element 2 to element 0 on the left
seq1[ 2 .. -1 ] -> c // expected ( b, c )
seq1[ 2 .. -2 ] -> seq[ ] // expected ( a, b, c )
/* USE OF NEGATIVE INDICES [..., - 1] */
seq1[ -2 .. -1 ] -> ( b, c )
seq1[ -3 .. -1 ] -> ( a, b, c )
/* Combination of signs */
seq1[ -3 .. 0 ] -> a // from element -3 to element 0 on the right
seq1[ -3 .. 1 ] -> ( a, b ) // from element -3 to 1 element on the right
seq1[ -3 .. 2 ] -> ( a, b, c ) // from element -3 to 2 element on the right
seq1[ -3 .. 3 ] -> ( a, b, c )
seq1[ -2 .. 0 ] -> seq[ ] // expected ( b )
seq1[ -2 .. 1 ] -> b // expected ( b, c )