首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包装状态会导致公正

包装状态会导致公正
EN

Stack Overflow用户
提问于 2017-06-12 08:52:40
回答 1查看 83关注 0票数 0

我在我的Prolog解释器分配中有一个Haskell函数,它可以读取

代码语言:javascript
复制
renames :: Rule -> State ExecState [(Term, Term)]

它产生(几乎) Prolog规则中变量的替换(以便变量名在统一期间不会发生冲突)。

这个函数产生的对是表单(Variable "X", Variable "X_11"),这意味着变量X应该重命名为X_11等等(重命名的计数器包含在ExecState中)。

问题是我定义了一个替换

代码语言:javascript
复制
type Subst = Maybe [(Term, Term)]

这是有道理的,因为有时无法找到将两个术语统一起来的替代词。(但是总是可以找到重命名变量的替代方法。)

我试过了

代码语言:javascript
复制
renames' :: Rule -> State ExecState Subst
renames' rule = Just $ renames rule

但这显然行不通,因为我将State封装在Just中,而不是计算结果。

如何在[(Term, Term)]中包装实际的Just结果?我想做的事有什么名字吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

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

您可以使用Just <$> renames rule,其中<$>操作是fmap

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

https://stackoverflow.com/questions/44495169

复制
相关文章

相似问题

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