You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Dyalog APL中,N元归约能否定义为可命名函数?

APL中N元归约的可命名函数实现

你的判断有部分道理,但并非完全无法实现可命名的N元归约函数——2,/确实不能直接作为独立的命名函数对象,但可以通过函数包装的方式将其转化为可复用的命名函数。

语法差异解释

  • -,/是合法的运算符派生函数:归约运算符/作用于单目函数-,形成一个完整的函数结构,因此单独输入能显示其函数定义。
  • 2,/是运算符/的滑动归约用法:左边的2是数值,用来指定滑动归约的窗口大小(即N元归约的N),这种形式必须结合右侧的数组操作数才能构成完整表达式,单独的2,/既不是函数,也不是完整运算式,因此会触发语法错误。

可命名函数的实现方法

方法1:自定义窗口大小的二元函数

通过包装定义一个二元函数,让左侧参数接收窗口大小,右侧参数接收目标数组:

NConcatReduce←{⍺,/⍵}

使用示例:

v←⍳5
2 NConcatReduce v  ⍝ 输出:1 2 2 3 3 4 4 5
3 NConcatReduce v  ⍝ 输出:1 2 3 2 3 4 3 4 5

方法2:固定窗口大小的单目函数

如果只需要固定某一个窗口大小(比如示例中的2元归约),可以直接把窗口大小写入函数:

2ConcatReduce←{2,/⍵}

使用示例:

2ConcatReduce ⍳5  ⍝ 输出:1 2 2 3 3 4 4 5

内容的提问来源于stack exchange,提问作者justin2004

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 22:52:06