2
美好的一天,Prolog的樹遍歷
我想寫給定一個樹的一個仿函數Prolog的程序:
start(a(f,2,9), X).
我想它,使其產生正方形內的任何值:
X = a(f,4,81).
我有一個代碼,已在列表中正常工作的數字。 這是我到目前爲止有:
start([],[]).
start(Tree, []) :- Tree =.. [P|C], write(P), nl, write(C), nl, squareMe([P|C], []).
squareMe([X|T], [Y|Result]) :- % I think the problem is here
atom(X),
Y=X,
squareMe(T, Result).
squareMe([X|T], [Y|Result]) :-
number(X),
Y is X * X,
squareMe(T, Result).
squareMe([], []).
當代碼寫入P和C,我通過金大運營商處獲得正確的價值觀,但它似乎裏面squareMe要失敗
。
當我調用squareMe([P | C],[]),我的理解是P = a和C = [F,2,9]。原子(a)不應該是真的嗎?它似乎並非如此,我不知道爲什麼?
我使用跟蹤/ notrace跟蹤我的路試,但它肯定是高興地看到,被傳遞到squareMe值。那可能嗎?我正在使用SWI-Prolog。
TIA, COSON