【问题标题】:Access Head and Tail of List stored in a variable as input to further predicate (Prolog)访问存储在变量中的列表的头部和尾部作为进一步谓词的输入(Prolog)
【发布时间】:2021-02-27 04:09:19
【问题描述】:

所以,我有一个简单的列表。比方说:

L([a,b,c]).

我想访问头尾 (H|T),这样我就可以递归地将元素用作其他谓词的输入。基本上

somePredicate(a),
someOtherPredicate(T).

直到列表为空。我该怎么做?

我使用以下方法生成了列表:

range(0,L) :-    
    L = [].
range(1,L) :- 
    L = [].
range(M,L) :-
    NewM is M - 1,
    numlist(1, NewM, L).

【问题讨论】:

  • 只是想谋生
  • 你所拥有的不是一个列表。这是一个列表:[a,b,c]。如果您在变量中有一个列表,您可以像这样将其拆分为头部和尾部:L = [a,b,c], L = [H|T]

标签: list recursion prolog element


【解决方案1】:

简单:

 pre([H|T]):-
        writeln(H),
        writeln(T),
        pre(T).

?-pre([a,b,c]).
OUTPUT:
a
[b, c]
b
[c]
c
[]

如果您想将值与另一个谓词一起使用:

pre([H|T]):-
            writeln(H),
            pre1(T),
            pre(T).

pre1([H|T]):-
 writeln([H|T]).

?-pre([a,b,c]).
OUTPUT:
a
[b, c]
b
[c]
c
[]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多