Мелкий предикат для возведения в квадрат каждого числа в списке - PullRequest
1 голос
/ 08 ноября 2011

Я пытаюсь создать неглубокий предикат, называемый скажем квадрат, чтобы возвести в квадрат каждое число в примере списка:

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

1 Ответ

2 голосов
/ 08 ноября 2011

Trivial.

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

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

Но учтите, что square([X], X2), X=2 не даст желаемого эффекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...