Show HN: Combinators in Array Languages
2 days ago
- Y组合子(知更鸟)通过无命名函数实现不动点递归,但在sw-MLPL这类急求值语言中,除非延迟调用否则会发散
- 应用式知更鸟(Z组合子)通过将自应用包裹在具名偏函数中解决此问题,从而在严格求值下实现递归
- 鸟类对照表(恒等鸟、红隼鸟、画眉鸟、模仿鸟、蓝鸟、红衣凤头鸟、鹪鹩鸟、椋鸟、知更鸟)展示了每个组合子的λ项、行为及其sw-MLPL定义
- sw-MLPL特意保持急求值特性;APL类语言(Dyalog、BQN、J)通过内置自引用(⍺、𝕊、^:_)使不动点组合子在实用递归中不再必要
- 实际实现:定义接收递归参数的构造器函数(如fact_body),使用`applicative_sage`绑定循环,调用结果即可实现无需命名的正确递归
- 知更鸟通过`call(:u:bluebird, :u:mockingbird, :u:lark)`实现,但在sw-MLPL中永不强制求值;安全急求值版本使用`z_step`和`z_recur`进行实际不动点计算
- 四个资源提供可运行代码:演示组合子(源码、教程、文档)及包含u:fix的APL2惯用语法平面文件