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).