Процедура карты Prolog, которая применяет предикат к элементам списка
Как вы пишете процедуру Prolog map(List, PredName, Result), которая применяет предикат PredName(Arg, Res) к элементам List и возвращает результат в списке Result?
Например:
test(N,R) :- R is N*N.
?- map([3,5,-2], test, L).
L = [9,25,4] ;
no
Ответ 1
Обычно это называется maplist/3 и является частью пролога Пролога. Обратите внимание на другой порядок аргументов!
maplist входит в разные категории и соответствует следующие конструкции в функциональных языках, но требует, чтобы все списки имели одинаковую длину. Обратите внимание, что Prolog не имеет асимметрии между zip/zipWith и unzip. Цель maplist(C_3, Xs, Ys, Zs) включает и то, и другое предлагает более общие применения.