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

Prolog predicate to multiply two lists (representing unary numbers)

我想编写一个代码,将表示数字的列表相乘,例如:
?- 次 ([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 是否为列表。你应该看看 append/3 [swi-doc] 例如附加两个列表:

times([], _, []).
times([_|T], Lis, <b>R</b>) :-
    append(<b>Lis</b>, <b>H</b>, <b>R</b>),
    times(T, Lis, <b>H</b>).