map (LMNtal)

ふとしたきっかけで LMNtal map関数のつもり.


map(f, [1,2,3], result).

f(X, R) :- R=X+1.
map(f, [X|XS], R) :- YS=map(f, XS), f(X, Z), R=[Z|YS].
map(f, [], R) :- R=[].


20071011-map_lmntal.png
20071011-map_result_lmntal.png

追記:コメントいただきました.汎用的な map はコメント参照.