PrologでまったりPart 2
■ このスレッドは過去ログ倉庫に格納されています
0468デフォルトの名無しさん
2006/05/13(土) 12:16:39定義節をいくら眺めていても、さっぱり意味がわからないのがrepeatだ。
使われ方から考えるとだいぶんわかりやすくなる。それでは、
それぞれの定義がどのように負節(Goal)のなかで使われるかの例をみよう。
?- see('foo.pro'),repeat,read(X),(X=end_of_file;write_formatted('%t.\n',[X]),fail),seen.
ファイルを最後まで読んでそのまま表示する簡単なもの。
end_of_fileの判定が変なところにあるのは最終行としてend_of_file.を印刷しないための工夫だ。
一言だけ言っておくと、repeatの後どこかに、折り返す為の副目標(SubGoal)がくる。ここではfailだ。
そして、その間には何か副作用のある副目標がくる! assertz/1やwrite_formantte/2のような。
member/2は
?- member(_季節,[春,夏,秋,冬,恋]),新古今和歌集(_季節,_巻,_歌).
_季節=春,
_巻=1,
_歌=み吉野は山もかすみて白雪のふりにし里に春はきにけり;
_季節=春,
_巻=1,
...
member/2の方は案外とインタプリタトップから使われることが多い。
■ このスレッドは過去ログ倉庫に格納されています