标量和向量之间的区别在APL中有用吗?

时间:2019-01-20 15:50:01

标签: apl

我是一位经验丰富的软件工程师,开始研究APL,为了尽早更好地理解该语言,我想了解为什么该语言向编码器揭示标量和向量之间的差异。据我在研究中所说的那样,这仅限制了灵活性,而没有任何收益可弥补它。结果是APL代码杂乱无章,没有其他必要的解决方法,例如混乱,封闭和公开。

由于APL是一种奇怪且难以理解的语言,因此我将在APL中建立自己的帮助程序库以创建自己的APL式界面,并避免在原始APL中使用怪异的“成语”来做日常任务。在建立整个帮助程序库中标量/向量区别的抽象之前,我是否应该意识到这样做可能会牺牲的任何实用程序?

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您正在编写需要向量的函数,我建议您忘记有关输入可能是标量的可能性(考虑其未定义的行为),并强制使用 caller 将参数转换为向量。到目前为止,应该 是少数情况(如果不是,则说明您做错了事)。就像您编写一个采用矩阵的函数一样,您不会期望给它一个向量。在向量位置使用标量与在矩阵位置使用向量一样奇怪。

1 2 31 2都是向量,这确实很奇怪,但是1本身就是一个标量,因此,如果要保持一致性,请不要使用A B C创建向量表示法(又称链表示法)而忘记了可以完全像这样创建数组。当然,我实际上不希望您这样做,并且我想如果有一种注释可以用相同的方式创建任何大小的向量。

此外,请不要忘记APL支持rank> 1的数组,正确使用数组是编写APL的主要部分。标量为0级(0维),向量-1(1D),矩阵-2(2D)等。