このディレクトリの索引

% % SWI-Prologに於いてfindall/3と同等の述語をmesage_queueを使って定義してみる。 % % findall/3と同じ機能の述語をメッセージキューを利用して定義する。 % メッセージキューを使って全解を収集する(_選択項,_副目標,_回収値ならび) :- message_queue_create(_キュー番号), ( call(_副目標), thread_send_message(_キュー番号,_選択項), fail; メッセージを回収する(_キュー番号,_回収値ならび)), message_queue_destroy(_キュー番号). メッセージを回収する(_キュー番号,[]) :- \+(thread_peek_message(_キュー番号,_)),!. メッセージを回収する(_キュー番号,[_回収値|R]) :- thread_get_message(_キュー番号,_回収値), メッセージを回収する(_キュー番号,R).