我想要创建一个名为square square的浅谓词,以对列表中的每个数字进行平方 例如:
e.g. ?-square([a,[[3]],b,4,c(5),8],X).
X=[a,[[3]],b,16,c(5),64]
答案 0 :(得分:2)
微不足道的。
sq(X) :-
number(X) -> X2 is X*X ; X2 = X.
square(List, Squared) :-
maplist(sq, List, Squared).
但请注意square([X], X2), X=2
不会产生预期效果。