- 110 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 16:42:37 ]
- >>109
% Prolog (その一) 一般化できる部分のみ。集約データの収集/3,_述語/_アリティに対応する述語定義 % データベースの項目に関する情報述語と集約項目に関する述語が別に必要。 集約述語の生成(_述語/_アリティ,_集約述語ならび) :- findall(_集約キー,集約キーの生成(_述語/_アリティ,_集約キー),_集約キーならび), 集約述語の生成(_述語/_アリティ,_集約キーならび,_集約述語ならび). 集約述語の生成(_述語/_アリティ,[],[]) :- !. 集約述語の生成(_述語/_アリティ,[_集約キー|R1],[_集約述語名/_アリティ2|R2]) :- concat_atom(_集約キー,'・',_集約述語名), length([_|_集約キー],_アリティ2), 集約データの収集(_述語/_アリティ,_集約キー,_集約データならび), 集約データの定義(_集約述語名,_集約データならび), 集約述語の生成(_述語/_アリティ,R1,R2). 集約データの定義(_,[]) :- !. 集約データの定義(_集約述語名,[_集約データ|R]) :- P =.. [_集約述語名|_集約データ], assertz(P), 集約データの定義(_集約述語名,R). 集約キーの生成(_述語/_アリティ,_集約キー) :- 集約項目(_述語/_アリティ,L), append(L1,_,L), \+(L1=[]).
|

|