gpt4 book ai didi

apl - foldr vs foldl 作为 APL 中的 reduce 运算符

转载 作者:行者123 更新时间:2023-12-04 19:25:19 26 4
gpt4 key购买 nike

在 Kenneth Iverson 的 A Programming Language 中,约简操作 op/定义为 foldl(左折叠):

The ◌-reduction of a vector 𝑥 is denoted by ◌/𝑥 and defined as
z←◌/𝑥 ⟺ z = (⋯((𝑥₁ ◌ 𝑥₂) ◌ 𝑥₃) ◌ ⋯ 𝑥ᵢ)

然而在现代 APL 中,它显然是一个正确的折叠 (foldr)
      {⍺⍵}/'abcd'
┌→─────────┐
│a ┌→─────┐│
│ │b ┌→─┐││
│ │ │cd│││
│ │ └──┘││
│ └∊─────┘│
└∊∊────────┘

我想知道这种变化是什么时候发生的(动机是什么)?

也许(?)定义 ◌/v仅作为 v₁ ◌ v₂ ◌ ⋯ ◌ vₙ ,这(给定 APL 规则)将解析为 foldr 确实有意义。另一方面,实现高效的 foldl 更容易。

最佳答案

编程语言来自 1962 .

1963 论文系统设计中的编程符号有 the same definition .

1964 论文共同语言
用于硬件、软件和应用程序 quotes A Programming Language 的定义。

的最后1966 论文规范评估顺序,艾弗森 wrote :

  1. In the definition

    F/x ≡ x1 F x2 F x3 F ... F x⍴x

    the right-to-left convention leads to a more useful definition for nonassociative functions F than does the left-to-right convention. For example, -/x denotes the alternating sum of the components of x , whereas in a left-to-right convention it would denote the first component minus the sum of the remaining components. Thus if d is the vector of decimal digits representing the number n , then the value of the expression 0=9|+/d determines the divisibility of n by 9 ; in the right-to-left convention, the similar expression 0=11|-/d determines divisibility by 11 .

关于apl - foldr vs foldl 作为 APL 中的 reduce 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59034531/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com