>>775
% Prolog 抽象プログラミングの例。
% 具象プログラミングでは述語名に現れていた情報が引数に移動する。
%
% 駒場東大前から下北沢までの距離を求めなさい

隣接する駅間の距離(井の頭線,渋谷,神泉,500).
隣接する駅間の距離(井の頭線,神泉,駒場東大前,900).
隣接する駅間の距離(井の頭線,駒場東大前,池ノ上,1000).
隣接する駅間の距離(井の頭線,池ノ上,下北沢,600).
隣接する駅間の距離(井の頭線,下北沢,新代田,500).

井の頭線の駒場東大前から下北沢までの距離(_井の頭線の駒場東大前から下北沢までの距離) :-
二駅間の距離(井の頭線,駒場東大前,下北沢,_井の頭線の駒場東大前から下北沢までの距離).

二駅間の距離(_,_到達駅,_到達駅,0).
二駅間の距離(_路線,_駅,_到達駅,_到達駅までの距離) :-
隣接する駅間の距離(_路線,_駅,_次の駅,_次の駅までの距離),
二駅間の距離(_路線,_次の駅,_到達駅,_次の駅から到達駅までの距離),
_到達駅までの距離 is _次の駅から到達駅での距離 + _次の駅までの距離.