Prolog unpacking lists predicate

prolog

Solution

You probably meant:

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

There are more concise ways to write this - and more efficient, too.

Problem

I tried to create something what would work like this: ``` ?- unpacking([[1], [1,2], [3]], Lst1, NewLst). NewLst=[1,3] ``` I wrote it like this: ``` unpacking([], Lst1, Lst1). unpacking([[H]|T], Lst1, NewLst):- append([H], Lst2), unpacking(T, Lst2, NewLst). unpacking([_|T], Lst1, NewLst):- unpacking(T, Lst1, NewLst). ``` and I know that I am doing something wrong. I am starting in Prolog so, need to learn from my mistakes :)

Original source

Related problems