求助: 序列 A() 语法可否支持负数

大佬们,早上好,Happy Friday😄

集算器函数中对长度为 n 的序列 A 获取值时有这样的语法:

1、A(i),此时序号或者索引号 i 的取值范围是 i ∈ [1,n]

2、A(p),此时 p 是一个数列,且 p 中的每一个元素 pi ∈ [1,n]

很明显,A()这样获取值的方式是不支持负数的。当然,如果单纯是为了按索引号获取值,spl 还提供了 A.m() 这样的写法,不仅支持负数还支持序号超界时的回转等功能。

但 A()和 A.m() 这两种写法有一个不同的地方,A()还可以用于赋值和修改。比如,A(i)=x 就可以把序列 A 中索引号为 i 处的值修改为 x,但 i 仅限于不超过序列长度的正整数,不适用于 i 等于负数的情形,比如,对一个未知长度的序列 A 想修改其倒数第一个的值,A(-1)=x 这样是不行的。如果非要用这种负数索引号的方式修改序列中的值,除了用 A.modify()之外,还可以用 A.p(-1) 获取倒数第一个的位置,写成 A(A.p(-1))=x 这样也是可以的,且 A.p@r() 还支持回转,这个也很友好。

在 Python 中,对序列取值或者赋值时是支持负数的,比如 A[-1] 取值,或者 A[-1]=x 赋值均有效。那 SPL 中用 A() 取值赋值是不是也可以支持一下负数,使得以下写法有效:

A(-1)=x
A([1,-2])=[x,y]

恳请大佬们得闲时指导解惑,谢谢🙏 🙏