我试图创造一些像这样工作的东西:
?- 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/