In Kenneth Iverson’s A Programming Language the reduction operation op/
is defined as a foldl (left fold):
The ◌-reduction of a vector is denoted by ◌/ and defined as
z←◌/ ⟺ z = (⋯((₁ ◌ ₂) ◌ ₃) ◌ ⋯ ᵢ)
However in modern APLs, it is clearly a right fold (foldr)
{⍺⍵}/'abcd'
┌→─────────┐
│a ┌→─────┐│
│ │b ┌→─┐││
│ │ │cd│││
│ │ └──┘││
│ └∊─────┘│
└∊∊────────┘
I wonder when this change has happened (and what was the motivation)?
Perhaps(?) defining ◌/v
merely as v₁ ◌ v₂ ◌ ⋯ ◌ vₙ
, which (given APL rules) would parse as foldr does make some sense. On the other hand, implementing efficient foldl is rather easier.