Trying to break elements which are lists in a list? [closed]

I am trying to write a program which make the following:

``````?- g([2,3, [22,,9] ,4,,99],X).

X= [2,3,22,,9 ,4,5,99]
``````

so it searches for lists in the given list and replace it by their elements without brackets [].

so I wrote this program:

The first block just searches for the first element in the list which is list
If there is no such element it returns `[there_is_no_list]`.

``````first_list_in_the_list([],[there_is_no_list]):-!.
first_list_in_the_list([H|_],X):-is_list(H),X=H,!.
first_list_in_the_list([_|T],X):-first_list_in_the_list(T,X).
``````

The first block works in prolog perfectly.

The second block just search in the list for an element X and then split the list into a two lists one is the list of all elements before X and the second is the elements after X.

``````splite_when_find_element([H|T],H,[],T):-!.
splite_when_find_element([H|T],X,F,G):-
splite_when_find_element(T,X,F1,G),append([H],F1,F).
``````

it also works fine in Prolog.

and the third block is append, and it joins two list together in a new list.

``````append([],L,L).
append([H|T],L,[H|U1]):- append(T,L,U1).
``````

and the last part is:

``````gg(L,L):-first_list_in_the_list(L,[there_is_no_list]),!.
gg(L,U):-first_list_in_the_list(L,X),
splite_when_find_element(L,X,F,G),gg(G,R),append(F,X,E),
append(E,R,U).
``````

when I give a `query [2,,5]` I get also `[2,,5]` and I really don't understand why it does this.

closed as off-topic by user40980, Jalayn, Dan Pichelman, BЈовић, Kilian FothAug 9 '13 at 7:27

• This question does not appear to be about software engineering within the scope defined in the help center.
If this question can be reworded to fit the rules in the help center, please edit the question.

• why didn't you ask at Stack Overflow? – gnat Aug 8 '13 at 14:19