0
我有一個Haskell功能在我的Prolog解釋分配讀取摺疊狀態的結果在剛剛
renames :: Rule -> State ExecState [(Term, Term)]
產生(幾乎)的變量在Prolog的規則替換(這樣的變量名不衝突統一期間)。
由該函數產生的對的形式爲(Variable "X", Variable "X_11")
的,這意味着變量X應當被重命名爲X_11等(用於重命名計數器包含在ExecState
)。
的問題是,我已經定義了一個替代是
type Subst = Maybe [(Term, Term)]
和是有道理的,因爲有時一個替代無法找到統一了兩屆。 (但要重命名的變量替換總能找到。)
我已經試過
renames' :: Rule -> State ExecState Subst
renames' rule = Just $ renames rule
,但是這是行不通的,很明顯,因爲我在Just
包住State
,而不是計算結果。
如何將實際的[(Term, Term)]
結果換算爲Just
?有什麼我想要做的?
謝謝!
難道只有<$>重命名規則工作? – Ryan
嗯,它確實:)。我怎麼能錯過'<$>'?謝謝,@瑞恩!如果您經歷了發佈該問題的麻煩,我很樂意接受。 – David
您可能希望將'Subst'的定義更改爲'type Subst = [(Term,Term)]',然後對可能無法生成替換的操作使用'Maybe Subst',現在您已經發現了'Subst'不需要'Maybe'封裝的情況。 –