【问题标题】:Prolog - Save List into something like an atom?Prolog - 将列表保存到类似原子的东西中?
【发布时间】:2021-08-29 08:16:05
【问题描述】:

我做了一些谓词,它将一个非常复杂的列表保存到变量P 中。 比方说:

  pred(P) :- 
    P = [[1, a, b, c, 234],d].

现在我想把这个列表放到另一个谓词中,比如说

  pred2(P, L) :-
    nth1(2, P, L).

我现在的问题是,我不想将[[1, a, b, c, 234], d] 作为参数复制到P。他们是一种简单的方法,也许是定义一个原子或另一个快捷方式,例如'test' := [[1, a, b, c, 234],d]。并致电?- pred2('test', L)

【问题讨论】:

  • 如果您正在使用 SWI-Prolog 并进行单元测试,请参阅Prolog Unit Tests

标签: list prolog


【解决方案1】:

简单的方法是调用你定义的谓词:

   pred2(L) :-
     pred(P),    % :- P = [[1, a, b, c, 234],d].
     nth1(2, P, L).

这将首先“设置”不实例化逻辑变量P,然后使用它来“设置”L

注意P 已成为此处的内部变量。调用pred2 时不必设置。 pred2会为你调用pred,设置P

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多