Dav*_*vid 0 monads haskell maybe
我的Prolog解释器分配中有一个Haskell函数
renames :: Rule -> State ExecState [(Term, Term)]
Run Code Online (Sandbox Code Playgroud)
它产生(几乎)Prolog规则中的变量替换(以便变量名称在统一期间不会发生冲突).
由此函数生成的对具有形式(Variable "X", Variable "X_11"),这意味着变量X应该重命名为X_11等(重命名的计数器包含在其中ExecState).
问题是我已经定义了替换
type Subst = Maybe [(Term, Term)]
Run Code Online (Sandbox Code Playgroud)
这是有道理的,因为有时无法找到统一两个术语的替代品.(但总是找到重命名变量的替代.)
我试过了
renames' :: Rule -> State ExecState Subst
renames' rule = Just $ renames rule
Run Code Online (Sandbox Code Playgroud)
但这显然不会起作用,因为我包装了State而Just不是计算结果.
如何将实际[(Term, Term)]结果包装在Just?我有什么名字要做吗?
谢谢!