我希望能够使用定点数据类型和递归方案来制定hindley-milner 类型推理算法。忽略除实际递归部分之外的所有细节:
w env term = case term of
Lam n e -> lam (w (modify1 env) e)
App a b -> app (w (modify2 env) a) (w (modify3 env) b)
...
env
该算法在递归遍历树直到到达叶子时构建环境数据结构。然后它在再次构建结果时使用此信息。
如果没有这env
部分,这可以很容易地用cata
. 这(与env
)一般可以使用递归方案来完成吗?