在存在n值归约的情况下APL中/(归约)的解析规则?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在存在n值归约的情况下APL中/(归约)的解析规则?相关的知识,希望对你有一定的参考价值。
我以为APL的解析规则很简单:看到术语⍺ f ⍵
时,让函数f
接收参数⍺, ⍵
。确实,对于APL中的归约运算符/
,我们可以想到:
+/(1 2 3 4) ⍝ REDUCE(+, (1 2 3))
10
但是,在以下情况下,此逻辑被抛出窗口:
2+/(1 2 3 4) ⍝ REDUCE(2, +, (1, 2, 3)) ?
(3 5 7)
也就是说,它的解析似乎需要在中间解析树中看起来两个后面-一个后面检索操作符+
,两个后面检索数字2
。
这大大增加了我关于如何阅读和解析APL表达式的思维模型---我在这里缺少什么吗?或者,如果这实际上是如何工作的,那么是否还有其他APL运算符“向后”超过1个子表达式?
作为对APL的介绍,关于函数和数组的简单规则就足够了,但是一旦将运算符(尤其是二元运算符)加入混合,精简就会变得更加复杂。尽管函数/数组规则仍然适用,但是现在可以使用一个或多个运算符来derived函数。实际上,您可以最终向左看,以找出函数“开始”的位置。
例如,在上下文*∘*∘*∘*
中,函数2*∘*∘*∘*3
,f(a,b)= a e e e b <>3
这是我们的数组
[*
也许我们会将此功能单调应用于3
,但这取决于…
[∘
nope:这是一个二进位运算符,它“抓住”其右侧的*
来派生新函数
[*
也许这是∘
的左操作数,但这取决于…
[∘
nope:这是一个二进位运算符,它“抓住”其右侧的*
来派生新函数
[*
也许这是∘
的左操作数,但这取决于…
等
事实上,这就是我解析APL的方式。但是,更精确的整体方法是按照documentation和model implementation
使用结合强度表以上是关于在存在n值归约的情况下APL中/(归约)的解析规则?的主要内容,如果未能解决你的问题,请参考以下文章
Python入门之经典函数实例——第3关:Map-Reduce - 映射与归约的思想