浅谓词对列表中的每个数字进行平方

时间:2011-11-08 01:45:47

标签: prolog

我想要创建一个名为square square的浅谓词,以对列表中的每个数字进行平方 例如:

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

1 个答案:

答案 0 :(得分:2)

微不足道的。

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

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

但请注意square([X], X2), X=2不会产生预期效果。