use*_*376 6 recursion haskell type-inference hindley-milner recursion-schemes
我希望能够使用定点数据类型和递归方案来制定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)
...
Run Code Online (Sandbox Code Playgroud)
该算法在env递归遍历树直到它到达叶子时构建环境数据结构.然后它再次使用此信息建立结果.
没有这env部分,这可以很容易地实现cata.这个(with env)一般可以使用递归方案吗?
\n\n\n\n
cata是的,只需将a 函数作为目标即可Env -> a
\xe2\x80\x93 卢基
\n\n\n\n\n是的,但您可能需要使用
\ncata更高阶的载体类型,计算可以修改环境并可能失败的操作。
\xe2\x80\x93 猪工
\n