我需要将一个列表提供给谓词,并从中获取包含该列表元素的术语。
因此,我需要类似于以下内容:
turn_into_struct(+List, -Term).
我曾考虑过为列表中的每个元素递归使用nb_setarg/3
,但这样我需要用特定的arity实例化术语,而我找不到如何做到这一点。
我需要将一个列表提供给谓词,并从中获取包含该列表元素的术语。
因此,我需要类似于以下内容:
turn_into_struct(+List, -Term).
我曾考虑过为列表中的每个元素递归使用nb_setarg/3
,但这样我需要用特定的arity实例化术语,而我找不到如何做到这一点。
findall
)填充每个参数。如果需要,我可以提供更多细节(只要不破坏你自己的工作)。length(List, Len),
functor(Struct, struct, Len),
% Fill in each argument of Struct here...
不过,使用SWI-Prolog的=..
谓词有一种更简单的一行技巧。
functor
谓词也很不错。 - Iulius Curtturn_into_struct(List, Struct) :-
Struct =.. [structure|List].
在原问题中,“struct”的正确术语应为“term”。
(在其他答案的评论中提到了Univ,但我将其重新发布为答案,以便后人更容易看到)
=..
,还是你的作业是使用其他谓词重新创建执行相同工作的东西? - Edmund