【问题标题】:Prolog How to Declare a List to a VariableProlog 如何将列表声明为变量
【发布时间】:2015-11-06 04:15:45
【问题描述】:

在 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 为例。

【问题讨论】:

    标签: list prolog


    【解决方案1】:

    您必须编写一个合并两个列表的谓词,因此该谓词必须与以下内容统一:

    makeList(List1, List2, [List1, List2]).
    

    在你的知识库中定义了这个谓词后,你可以询问prolog引擎问:

    makeList([1,2],[2,4],D).
    

    你会得到:D = [[1, 2], [2, 4]]

    制作另一个谓词(在您的知识库中定义)

     predicateThatDoesSomething(ListList) :- write(ListList).
    

    知道结果(输出参数,统一结果),你就得逻辑上and的语句。所以你要问:

     makeList([1,2],[2,4],D) , predicateThatDoesSomething(D).
    

    【讨论】:

    • 感谢您的帮助!这就是我想要的!
    猜你喜欢
    • 2021-11-28
    • 2019-05-09
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 2019-06-08
    • 2013-05-28
    • 2015-09-04
    • 2012-02-13
    相关资源
    最近更新 更多