我试图创造一些像这样工作的东西:

?- unpacking([[1], [1,2], [3]], Lst1, NewLst).
NewLst=[1,3]

我是这样写的:
unpacking([], Lst1, Lst1).
unpacking([[H]|T], Lst1, NewLst):-
    append([H], Lst2),
    unpacking(T, Lst2, NewLst).
unpacking([_|T], Lst1, NewLst):-
    unpacking(T, Lst1, NewLst).

我知道我做错了什么。我从 Prolog 开始,所以需要从我的错误中吸取教训:)

最佳答案

你可能的意思是:

unpacking([], []).
unpacking([[E]|T], [E|L]) :-
   unpacking(T, L).
unpacking([[]|T], L) :-
   unpacking(T, L).
unpacking([[_,_|_]|T], L) :-
   unpacking(T, L).

有更简洁的方法来写这个 - 也更有效。

关于Prolog 解包列表谓词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43723424/

10-12 19:05