Prolog - 将列表保存到原子之类的东西中?
Prolog - Save List into something like an atom?
我做了一些谓词,它将一个非常复杂的列表保存到一个变量中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)
?
简单的方法是调用您定义的谓词:
pred2(L) :-
pred(P), % :- P = [[1, a, b, c, 234],d].
nth1(2, P, L).
这将首先“设置”而不是实例化逻辑变量P
,然后用它来“设置”L
。
注意P
这里已经变成内部变量了。调用 pred2
时不必设置它。 pred2
将为您调用 pred
,设置 P
。
我做了一些谓词,它将一个非常复杂的列表保存到一个变量中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)
?
简单的方法是调用您定义的谓词:
pred2(L) :-
pred(P), % :- P = [[1, a, b, c, 234],d].
nth1(2, P, L).
这将首先“设置”而不是实例化逻辑变量P
,然后用它来“设置”L
。
注意P
这里已经变成内部变量了。调用 pred2
时不必设置它。 pred2
将为您调用 pred
,设置 P
。