私はプロローグに不慣れで、BPrologを使用しています。
関連データのグループに対してクエリを実行するためのサンプルプログラムを読んでいます。しかし、同様の構造を持つ事実から推測するために、彼らは、、のような多くの述語を書きましたがsearch_by_name
、search_by_point
それらは部分的に複製されています。
% working search in example
search_by_name(Key,Value) :-
Key == name,
sname(ID,Value),
point(ID,Point),
write(Value),write(Point),nl.
そして、私がそれらを次のようなより一般的なバージョンに置き換えようとすると:
% a more general search I want to write
% but not accepted by BProlog
search_by_attr(Key,Value) :-
Key(ID,Value),
sname(ID,Name),
point(ID,Point),
write(Name),write(Point),nl.
エラーが発生しました:
| ?- consult('students.pl')
consulting::students.pl
** Syntax error (students.pl, 17-21)
search_by_attr(Key,Value) :-
Key<<HERE>>(ID,Value),
sname(ID,Name),
point(ID,Point),
write(Name),write(Point),nl.
1 error(s)
私はそれを間違った方法でやっていますか、それともプロローグでそのような代用は不可能ですか?
コードとサンプルデータはhttps://gist.github.com/2426119にあります。