Wie schreiben Sie ein Prolog-Prozedur map(List, PredName, Result)
gilt das Prädikat PredName(Arg, Res)
auf die Elemente des List
und gibt das Ergebnis zurück in die Liste Result
?
Beispiel:
test(N,R) :- R is N*N.
?- map([3,5,-2], test, L).
L = [9,25,4] ;
no
InformationsquelleAutor der Frage General_9 | 2011-07-13
Dies ist in der Regel genannt
maplist/3
und ist Teil der Prolog-Prolog. Beachten Sie die verschiedenen argument um!Den verschiedenen argument, um Ihnen erlaubt, leicht nest mehrere
maplist
-Ziele.maplist
kommt in verschiedenen arities und entspricht die folgenden Konstrukten in funktionalen Sprachenerfordert aber, dass alle Listen sind von gleicher Länge. Beachten Sie, dass der Prolog nicht die Asymmetrie zwischenzip
/zipWith
undunzip
. Ein Zielmaplist(C_3, Xs, Ys, Zs)
fasst beide und bietet sogar mehr allgemein verwendet.maplist/2
entsprichtall
maplist/3
entsprichtmap
maplist/4
entsprichtzipWith
aber auchunzip
maplist/5
entsprichtzipWith3
undunzip3
InformationsquelleAutor der Antwort false