APL-为什么会产生乘法表?

APL-为什么会产生乘法表?,apl,Apl,我(无意中)在APL中编写了以下函数: {⍳⍵ ⍵} 我很惊讶,当我调用这个函数时,它生成了一个有效的乘法表: {⍳⍵ ⍵} 3 ┌───┬───┬───┐ │1 1│1 2│1 3│ ├───┼───┼───┤ │2 1│2 2│2 3│ ├───┼───┼───┤ │3 1│3 2│3 3│ └───┴───┴───┘ 用我目前在APL方面的知识,我不能确切地理解它是如何产生一个有效的乘法表的,因为我没有正确地在这里写内积。一元⍳是最新版本。它将数组s的形状作为其唯一参数。它

我(无意中)在APL中编写了以下函数:

{⍳⍵ ⍵}
我很惊讶,当我调用这个函数时,它生成了一个有效的乘法表:

      {⍳⍵ ⍵} 3
┌───┬───┬───┐
│1 1│1 2│1 3│
├───┼───┼───┤
│2 1│2 2│2 3│
├───┼───┼───┤
│3 1│3 2│3 3│
└───┴───┴───┘

用我目前在APL方面的知识,我不能确切地理解它是如何产生一个有效的乘法表的,因为我没有正确地在这里写内积。

一元
是最新版本。它将数组
s
的形状作为其唯一参数。它生成一个shape
s
数组,其中每个元素都是该元素的索引:

      ⍳5  ⍝ vector
1 2 3 4 5
      ⍳2 3  ⍝ matrix
┌───┬───┬───┐
│1 1│1 2│1 3│
├───┼───┼───┤
│2 1│2 2│2 3│
└───┴───┴───┘
      ⍳2 3 4  ⍝ block of 2 layers, each with 3 rows and 4 columns
┌─────┬─────┬─────┬─────┐
│1 1 1│1 1 2│1 1 3│1 1 4│
├─────┼─────┼─────┼─────┤
│1 2 1│1 2 2│1 2 3│1 2 4│
├─────┼─────┼─────┼─────┤
│1 3 1│1 3 2│1 3 3│1 3 4│
└─────┴─────┴─────┴─────┘
┌─────┬─────┬─────┬─────┐
│2 1 1│2 1 2│2 1 3│2 1 4│
├─────┼─────┼─────┼─────┤
│2 2 1│2 2 2│2 2 3│2 2 4│
├─────┼─────┼─────┼─────┤
│2 3 1│2 3 2│2 3 3│2 3 4│
└─────┴─────┴─────┴─────┘
当您将结果称为乘法表时,没有乘法运算,只有沿每个轴并列的索引。然而,您是对的,它类似于带有串联函数(
∘.,):


我从未使用过
具有两个或多个右参数。。。现在我在引用中找到了它。@a'.'从技术上讲,它只是一个正确的参数,尽管它有多个元素。
      (⍳2)∘.,(⍳3)
┌───┬───┬───┐
│1 1│1 2│1 3│
├───┼───┼───┤
│2 1│2 2│2 3│
└───┴───┴───┘