Я пытаюсь создать неглубокий предикат, называемый скажем квадрат, чтобы возвести в квадрат каждое число в примере списка:
e.g. ?-square([a,[[3]],b,4,c(5),8],X). X=[a,[[3]],b,16,c(5),64]
Trivial.
sq(X) :- number(X) -> X2 is X*X ; X2 = X. square(List, Squared) :- maplist(sq, List, Squared).
Но учтите, что square([X], X2), X=2 не даст желаемого эффекта.
square([X], X2), X=2