【发布时间】:2016-11-06 07:44:54
【问题描述】:
我必须创建一个predicate/2,它需要一个“正确”数字列表作为验证,以及一个需要验证的函数。函数中的数字(表示为number(X))必须与验证列表中的数字相同,才能变为“真”。
当列表在库中“硬编码”时,我可以制作两个单独的 predicates/1 给出正确答案,但我可以不将这些组合在一起。
到目前为止我有这个:
number(X) :- member(X, [1,2,3,4,5]).
这给出了正确的结果,例如当我询问 and(number(2),number(4)) 时,它说是,而 and(number(2),number(6)) 给出否。
但现在我必须做predicate/2,它将列表作为第一个参数。
任何人都可以帮助/提供任何提示吗?
predicate(ValidationList, Function) :- ????
【问题讨论】:
-
不确定...
and(number(2),number(4))和and(number(2),number(6))是要验证的函数示例吗?或者你是什么意思(你能举一些例子吗?)“需要验证的功能”?无论如何...你能显示你的predicate/1吗? -
是的,这些是要验证的函数的示例。这是关于命题公式的。如果 "and(number(1),number(2))" 是正确的,那么验证列表必须包含数字 1 和 2。这就是为什么 "number(X) :- member(X, [1,2 ,3,4,5])”的作品。我的问题是定义一个谓词,以便之后我可以输入例如“谓词([1,3,5,7],或(数字(1),数字(2)))。它会检查 1 和 2 是否是列表的一部分。
标签: prolog