Prolog には次の述語があります。
rules('Archer','NX-01').
rules('Kirk','NCC-1701').
rules('Picard','NCC-1701-D').
rules('Janeway','Voyager').
rules('Almak','IRWTMet').
「Archer」、「Kirk」、「Picard」、「Janeway」、「Almak」は船長で、「NX-01」、「NCC-1701」、「NCC-1701-D」、「Voyager」、「IRWTMet」は'は船です。
ですから、船のリストが与えられた場合、船長のリストを返したいと思います。
私はこれを試しています:
list_ship_commanders([],_).
list_ship_commanders([Ship|T],R):-
findall(Commander,rules(Commander,Ship),R),
list_ship_commanders(T,R).
上記のコードは、Ship リストに要素が 1 つしかない場合にのみ機能します。「findall」を使用していますが、これが正しい方法かどうかはわかりません。