Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 访问存储在变量中的列表的头和尾,作为进一步谓词(Prolog)的输入_List_Recursion_Prolog_Element - Fatal编程技术网

List 访问存储在变量中的列表的头和尾,作为进一步谓词(Prolog)的输入

List 访问存储在变量中的列表的头和尾,作为进一步谓词(Prolog)的输入,list,recursion,prolog,element,List,Recursion,Prolog,Element,所以,我有一个简单的列表。比如说: L([a,b,c]). 我想访问Head和Tail(H | T),以便递归地使用元素作为其他谓词的输入。基本上 somePredicate(a), someOtherPredicate(T). 直到列表为空。我该怎么做 我使用以下方法生成了列表: range(0,L) :- L = []. range(1,L) :- L = []. range(M,L) :- NewM is M - 1, numlist(1, N

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

L([a,b,c]).
我想访问Head和Tail(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).
简单:

 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
[]

只是想谋生你拥有的东西没有一个清单。这是一个列表:
[a,b,c]
。如果你在一个变量中有一个列表,你可以像这样把它分成头和尾:
L=[a,b,c],L=[H|T]