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_Prolog_Successor Arithmetics - Fatal编程技术网

List 将两个列表相乘的Prolog谓词(表示一元数)

List 将两个列表相乘的Prolog谓词(表示一元数),list,prolog,successor-arithmetics,List,Prolog,Successor Arithmetics,我想写一个代码,将代表一个数字的列表相乘,比如: -时间([1,1,1],[1,1],Res) Res=[1,1,1,1,1,1] times([], _, []). % base case times([_|T], Lis, [Lis|H]) :- times(T, Lis, H). 我已经有了上面的代码,它有点像我想要的,但不是真的。例如,询问时: ?次数([1,1,1],[1,1],Res) Res=[[1,1],[1,1],[1,1]] 这个想法就在那里,但我只是不知道如何解决这个

我想写一个代码,将代表一个数字的列表相乘,比如:
-时间([1,1,1],[1,1],Res)
Res=[1,1,1,1,1,1]

times([], _, []). % base case
times([_|T], Lis, [Lis|H]) :-
  times(T, Lis, H).
我已经有了上面的代码,它有点像我想要的,但不是真的。例如,询问时:
?次数([1,1,1],[1,1],Res)
Res=[[1,1],[1,1],[1,1]]

这个想法就在那里,但我只是不知道如何解决这个问题,我知道为什么会发生(我正在添加一个列表作为标题),所以我只是想知道是否有人可以帮助我

提前感谢。

[Lis | H]
将使用
Lis
作为第一个元素,无论
Lis
是否为列表。例如,您应该查看附加两个列表:

times([], _, []).
times([_|T], Lis, R) :-
    append(Lis, H, R),
    times(T, Lis, H).
times([],[uu,[])。
次数([u124; T],Lis,R):-
附加(Lis,H,R),

时间(T,Lis,H)。
[Lis | H]
将使用
Lis
作为第一个元素,无论
Lis
是否为列表。例如,您应该查看
append/3
来附加两个列表。这些是不同形式下的Peano数字。你能用append&friends吗?或者你应该用Peano数公理吗?这正是我需要的!当你看到它时,它总是有意义的,但是你自己想出来。。。谢谢:)