Prolog 如何声明变量列表
Prolog How to Declare a List to a Variable
在 Prolog 中,我很难理解如何将列表的列表绑定到变量。例如,假设我有谓词 makeList(我不知道如何写),那么我应该可以输入:
makeList([[0, 0], [1, 0]]).
现在我想在另一个带有变量 ListList 的谓词中引用 [[0, 0], [1, 0]],例如:
predicateThatDoesSomething(ListList) :- write(ListList).
预期输出:
[[0, 0], [1, 0]]
显然 predicateThatDoesSomething() 已经知道名为 ListList 的变量。但是如何制作谓词 makeList()?我希望能够键入 makeList([[ANY, LIST, IN, HERE], [ANOTHER, LIST]]) 并将其设置为 ListList 例如。
您必须编写一个合并两个列表的谓词,因此该谓词必须与类似的东西统一:
makeList(List1, List2, [List1, List2]).
在您的知识库中定义此谓词后,您可以询问序言引擎并询问:
makeList([1,2],[2,4],D).
你会得到:D = [[1, 2], [2, 4]]
创建另一个谓词(在您的知识库中定义)
predicateThatDoesSomething(ListList) :- write(ListList).
知道了结果(输出参数,合一的结果),就得从逻辑上and
陈述。所以你要问:
makeList([1,2],[2,4],D) , predicateThatDoesSomething(D).
在 Prolog 中,我很难理解如何将列表的列表绑定到变量。例如,假设我有谓词 makeList(我不知道如何写),那么我应该可以输入:
makeList([[0, 0], [1, 0]]).
现在我想在另一个带有变量 ListList 的谓词中引用 [[0, 0], [1, 0]],例如:
predicateThatDoesSomething(ListList) :- write(ListList).
预期输出:
[[0, 0], [1, 0]]
显然 predicateThatDoesSomething() 已经知道名为 ListList 的变量。但是如何制作谓词 makeList()?我希望能够键入 makeList([[ANY, LIST, IN, HERE], [ANOTHER, LIST]]) 并将其设置为 ListList 例如。
您必须编写一个合并两个列表的谓词,因此该谓词必须与类似的东西统一:
makeList(List1, List2, [List1, List2]).
在您的知识库中定义此谓词后,您可以询问序言引擎并询问:
makeList([1,2],[2,4],D).
你会得到:D = [[1, 2], [2, 4]]
创建另一个谓词(在您的知识库中定义)
predicateThatDoesSomething(ListList) :- write(ListList).
知道了结果(输出参数,合一的结果),就得从逻辑上and
陈述。所以你要问:
makeList([1,2],[2,4],D) , predicateThatDoesSomething(D).