Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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
如何从Prolog中的列表中获取每个连续元素_Prolog - Fatal编程技术网

如何从Prolog中的列表中获取每个连续元素

如何从Prolog中的列表中获取每个连续元素,prolog,Prolog,假设我有一张清单 [[a,b,c],[d,e,f],[g,h,i]] 我想得到每个连续的元素,并把它放在另一个谓词中 func(a,b). func(b,c). func(d,e). func(e,f). func(g,h). func(h,i). 我已经编写了我想输入的谓词,但是我很难从列表列表中获取两个元素。您可以尝试: consecutive(L, R) :- maplist(create_func, L, RT), flatten(RT, R). create_f

假设我有一张清单
[[a,b,c],[d,e,f],[g,h,i]]

我想得到每个连续的元素,并把它放在另一个谓词中

func(a,b).
func(b,c).

func(d,e).
func(e,f).

func(g,h).
func(h,i).
我已经编写了我想输入的谓词,但是我很难从列表列表中获取两个元素。

您可以尝试:

consecutive(L, R) :-
    maplist(create_func, L, RT),
    flatten(RT, R).

create_func([A,B], [func(A,B)]) :- !.

create_func([A,B | T], [func(A,B) | R]) :-
    create_func([B | T], R).

只需将列表展平/2即可轻松消除两个缺点。@joel76建议的元素