首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用递归方案的算法W

使用递归方案的算法W
EN

Stack Overflow用户
提问于 2017-09-09 07:43:20
回答 2查看 303关注 0票数 6

我希望能够使用定点数据类型和递归方案来制定hindley-milner类型的推理算法。忽略除实际递归部分之外的所有细节:

代码语言:javascript
复制
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)通常可以使用递归方案来完成吗?

EN

回答 2

Stack Overflow用户

发布于 2017-09-09 12:04:06

没有环境部分的

,这可以很容易地用cata实现。这(使用env)通常可以使用递归方案来完成吗?

你要找的是一个chronomorphism。这允许您使用来自未来和过去的结果进行递归。它并不像听起来那么用户友好,但它是使用递归方案做事情的规范方法。

票数 3
EN

Stack Overflow用户

发布于 2017-09-09 11:22:11

是只将cata的目标设为函数Env -> a

- luqui

可以,但您可能需要使用具有高阶运营商类型的cata,计算一个可能会修改环境并可能失败的操作。

- pigworker

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46125839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档