理论上,如果一组子句包含空列表([]),我的函数应该能够返回True或False,我实际上定义了下一个数据类型:
data Literal = V String | NotV String deriving Eq
type Clause = [Literal]
type Interpretacion = [( String , Bool ) ]
type State = ( Interpretation , [ Clause ])
对于函数,我是这样做的:
conflict :: State -> Bool
| [] `elem` xs = True
| otherwise = False
但我真的认为这还不够,我的下一个工作是做另一个函数,确定模型搜索是否成功,(这发生在子句集为空时),我认为我必须使用相同的(State -〉Bool)使用上面的函数,但如果第一个函数不工作,第二个也不能工作。
我最大的问题是:你认为我需要做什么?任何评论都会对我有很大的帮助,我有点迷失了。我的工作是关于DPLL算法的转换规则,一旦我有了,我会在Github分享给新的程序员。
1条答案
按热度按时间lymnna711#
我想我在另一个网站上实现DPLL算法时也遇到过同样的问题,也许您可以尝试使用这样的函数:
对于下一个函数,可以实现一个helper函数来检查第一个函数,另一个helper函数返回第一个函数的结果,如下所示:
我认为你试图用第一个函数来达到的目的是,当你编译的时候,你可以得到这样的东西: