flatten([A|B],R):- (islist(A)->(flatten(A,R1),R=R1);(write(A),append([A],R1,R))), flatten(B,R1).
flatten(X,X).
islist([_|_]).
这是我写的代码,但我有奇怪的问题..Prolog的扁平化列表
我得到
257 ?- flatten([1,[],2,[3],[3,[3,5]]],R).
1[]23335335
R = [1, [], 2, [3], [3, [3, 5]]] .
虽然从写没有列出他们被追加为列表中的号码:S ...
请改善您的代码的格式。事实上,这是不可能读的。 – Kaarel 2011-06-17 12:17:26
+1。不知道为什么有人给这个问题-1。有示例代码和输出表明不需要的行为。 – z5h 2011-06-20 15:37:34