好日子,在Prolog中過濾和修改列表
我有一個任務,給出一個列表[3,9,11,2,14],我想過濾掉任何大於6的值。現在有這個工作。
sift([],[]).
sift([X|T], [X|Result]):-
X > 6, /* is X greater than 6 */
write(isList(Result)),
/* append([X]|['CCC'], [Result]), but this didn't work */
sift(T,Result). /* if so then go find the rest */
sift([ThrowAway|Tail],Result):- /* disregard the head */
sift(Tail,Result). /* and look in the tail */
正如我前面提到的,這將返回正確的結果。我的困境是,如果是的值大於6,我想在符合條件的數字後添加'CCC'的附加值。所以它看起來像:
[9,CCC,11,CCC,14,CCC]。
我試着寫出來的列表中的內容,但是當我做,我得到的值:
12 ?- sift([3,9,11,2,14], Results).
isList(_G2271)isList(_G2276)isList(_G2281)
Results = [9, 11, 14].
13 ?-
我試圖檢查列表的內容,看看它是什麼。
有沒有人有任何想法我可以做到這一點?
TIA,
COSON