APL 中 x,¨y 的语义:即,映射 APL 中的链是什么意思?
Semantics of x,¨y in APL: ie, what does it mean to map a catenate in APL?
考虑表达式 (1 2 3),¨(4 5 6)
。我希望这“将操作 (1 2 3),
映射到 4
、5
和 6
上,给出的答案是:
(1 2 3),¨(4 5 6)
= (1 2 3),¨((4) (5) (6)) [Using (x) = x]
= (((1 2 3), 4) ((1 2 3), 5) ((1 2 3), 6)) [Using definition of map]
= ((1 2 3 4) (1 2 3 5) (1 2 3 6))
然而,这不是答案!在 Dyalog APL 中评估的答案是:
]display (1 2 3),¨(4 5 6)
┌→──────────────────┐
│ ┌→──┐ ┌→──┐ ┌→──┐ │
│ │1 4│ │2 5│ │3 6│ │
│ └~──┘ └~──┘ └~──┘ │
└∊──────────────────┘
怎么样?这个答案背后的原因是什么?我的等式推理哪里出错了?还有更多 "gotchas" 我应该注意的 , (comma)
和 ¨(map)
不正确的心理模型吗?
1 2 3,¨4 5 6
将 1 2 3
的每个元素与 4 5 6
的每个元素连接起来
1 2 3∘,¨4 5 6
将 1 2 3
与 4 5 6
的每个元素连接起来
(2 2⍴⍳4),¨(2 2⍴⎕A)
┌───┬───┐
│1 A│2 B│
├───┼───┤
│3 C│4 D│
└───┴───┘
(2 2⍴⍳4)∘,¨(2 2⍴⎕A)
┌─────┬─────┐
│1 2 A│1 2 B│
│3 4 A│3 4 B│
├─────┼─────┤
│1 2 C│1 2 D│
│3 4 C│3 4 D│
└─────┴─────┘
,
是一个对称函数,它只是连接它的参数。
¨
也是对称的,它从左到右对元素进行配对。
根据 APL 的 scalar extension 规则,作为参数的单个元素被分发以与来自另一个参数的所有元素配对。
你说的是操作(1 2 3),
但是没有这样的操作。如果你试图给这个 "function" 一个名字,它将失败并显示 SYNTAX ERROR
.
但是,您可以创建一个函数,该函数接受其参数并将其作为附加到1 2 3
; 1 2 3∘,
然后您可以将该函数映射到数组的元素 1 2 3∘,¨
.
考虑表达式 (1 2 3),¨(4 5 6)
。我希望这“将操作 (1 2 3),
映射到 4
、5
和 6
上,给出的答案是:
(1 2 3),¨(4 5 6)
= (1 2 3),¨((4) (5) (6)) [Using (x) = x]
= (((1 2 3), 4) ((1 2 3), 5) ((1 2 3), 6)) [Using definition of map]
= ((1 2 3 4) (1 2 3 5) (1 2 3 6))
然而,这不是答案!在 Dyalog APL 中评估的答案是:
]display (1 2 3),¨(4 5 6)
┌→──────────────────┐
│ ┌→──┐ ┌→──┐ ┌→──┐ │
│ │1 4│ │2 5│ │3 6│ │
│ └~──┘ └~──┘ └~──┘ │
└∊──────────────────┘
怎么样?这个答案背后的原因是什么?我的等式推理哪里出错了?还有更多 "gotchas" 我应该注意的 , (comma)
和 ¨(map)
不正确的心理模型吗?
1 2 3,¨4 5 6
将 1 2 3
的每个元素与 4 5 6
1 2 3∘,¨4 5 6
将 1 2 3
与 4 5 6
(2 2⍴⍳4),¨(2 2⍴⎕A)
┌───┬───┐
│1 A│2 B│
├───┼───┤
│3 C│4 D│
└───┴───┘
(2 2⍴⍳4)∘,¨(2 2⍴⎕A)
┌─────┬─────┐
│1 2 A│1 2 B│
│3 4 A│3 4 B│
├─────┼─────┤
│1 2 C│1 2 D│
│3 4 C│3 4 D│
└─────┴─────┘
,
是一个对称函数,它只是连接它的参数。
¨
也是对称的,它从左到右对元素进行配对。
根据 APL 的 scalar extension 规则,作为参数的单个元素被分发以与来自另一个参数的所有元素配对。
你说的是操作(1 2 3),
但是没有这样的操作。如果你试图给这个 "function" 一个名字,它将失败并显示 SYNTAX ERROR
.
但是,您可以创建一个函数,该函数接受其参数并将其作为1 2 3
; 1 2 3∘,
然后您可以将该函数映射到数组的元素 1 2 3∘,¨
.