代码之家  ›  专栏  ›  技术社区  ›  Kaarel

在Prolog中将列表转换为术语

  •  4
  • Kaarel  · 技术社区  · 17 年前

    在以下方面,将Prolog列表转换为Prolog术语(不是列表)的最佳方式是什么 效率,并尽可能多地使用现有的内置谓词?

    接口和使用示例如下所示。

    %% list_to_term(+List:list, +Functor:atom, -Term:term)
    %
    % Usage:
    %
    % ?- list_to_term([], myfunctor, Term).
    % Term = myfunctor.
    %
    % ?- list_to_term([a, b, [c], D, 2], myfunctor, Term).
    % Term = myfunctor(a, b, [c], D, 2).
    

    也就是说,给定的列表(实际上是一个嵌套的术语)被展平为

    我不是说这样做有意义。(但如果您认为是这样,请在回答中提供一个用例。)

    1 回复  |  直到 17 年前
        1
  •  8
  •   Pesto    17 年前

    你需要使用 =.. 接线员,像这样:

    list_to_term(List, Functor, Term) :-
        Term =.. [Functor | List].
    
    推荐文章