2011-11-08 30 views
1

我試圖想創造一個淺謂語每個號碼說方方列表中的 例如每個號碼:淺謂語方列表

e.g. ?-square([a,[[3]],b,4,c(5),8],X). 
     X=[a,[[3]],b,16,c(5),64] 

回答

2

微不足道。

sq(X) :- 
    number(X) -> X2 is X*X ; X2 = X. 

square(List, Squared) :- 
    maplist(sq, List, Squared). 

但是請注意,square([X], X2), X=2將不會產生預期的效果。

+0

你可以引導我而不使用地圖列表 – iDev

+0

@iDev:爲什麼,它不工作? –

+0

我想做它遞歸沒有使用地圖列表 – iDev