APL Fork/Train 压缩
APL Fork/Train with Compression
我想 select 基于一些测试的数组中的元素。目前,我正在尝试通过压缩来做到这一点,我想把它写成一个默认函数。 (我对 APL 很陌生,所以请随时提出其他选择。)下面是一个最小的(不)工作示例。
下面第三行显示我可以在vec
上使用测试函数f
然后进行压缩,第五行显示我可以将恒等函数应用到vec
](如预期)。因此,根据我对 train documentation 的理解,我应该能够从 f
和 ⊢
中以 /
为中心分叉。下面显示这不起作用,我认为这是因为 Dyalog 将第六行和第八行解释为执行 f
-reduce。有没有办法表明我想要压缩列车而不是减少列车? (and/or 是否有更好的方法来完全做到这一点?)
vec ← 10⍴⍳3
f ← {⍵≤2}
(f vec) / vec
1 2 1 2 1 2 1
(f vec) / (⊢ vec)
1 2 1 2 1 2 1
(f/⊢) vec
1
(f(/)⊢) vec
1
是的,通过使 /
成为一个操作数,它被强制表现为一个函数。根据 APL Wiki,在 /
的结果之上应用 ⊢
解决了问题:
vec ← 10⍴⍳3
f ← {⍵≤2}
(f⊢⍤/⊢) vec
1 2 1 2 1 2 1
我想 select 基于一些测试的数组中的元素。目前,我正在尝试通过压缩来做到这一点,我想把它写成一个默认函数。 (我对 APL 很陌生,所以请随时提出其他选择。)下面是一个最小的(不)工作示例。
下面第三行显示我可以在vec
上使用测试函数f
然后进行压缩,第五行显示我可以将恒等函数应用到vec
](如预期)。因此,根据我对 train documentation 的理解,我应该能够从 f
和 ⊢
中以 /
为中心分叉。下面显示这不起作用,我认为这是因为 Dyalog 将第六行和第八行解释为执行 f
-reduce。有没有办法表明我想要压缩列车而不是减少列车? (and/or 是否有更好的方法来完全做到这一点?)
vec ← 10⍴⍳3
f ← {⍵≤2}
(f vec) / vec
1 2 1 2 1 2 1
(f vec) / (⊢ vec)
1 2 1 2 1 2 1
(f/⊢) vec
1
(f(/)⊢) vec
1
是的,通过使 /
成为一个操作数,它被强制表现为一个函数。根据 APL Wiki,在 /
的结果之上应用 ⊢
解决了问题:
vec ← 10⍴⍳3
f ← {⍵≤2}
(f⊢⍤/⊢) vec
1 2 1 2 1 2 1