1

私はプロローグが初めてです。これは架空の質問です。実際には役に立たないことは承知しています。しかし、「いいえ」の返信を受け取った場合にPrologを1つの方法で動作させ、「はい」の返信を受け取った場合に別の方法で動作させる方法を見つけようとしています。

gothroughリストを受け取り、リストの先頭が ',' と等しいかどうかを確認し、等しい場合は別の関数に渡す関数を作成しようとしていますcheckitcheckit渡された変数が「;」と等しいかどうかを確認します。そうであれば、yes を返します。そうでない場合は、no を返します。gothroughこの戻り値を理解して行動したい。プロローグが実際に値を返さないことは理解していますが、自分がやりたいことを他にどのように説明すればよいかわかりません....だから、これまでのところ:

 checkit(H):- H==';'.
 gothrough([H|T]):- H==',', checkit(H), /*what do put here?  if/else statement depending on return value of checkit*/

ありがとうございました!

4

1 に答える 1

3

checkit/1まず、呼び出している方法は常に失敗することに注意してください。H既にバインドされているため、同時に','統合できないことは明らかです。';'

ここで、if-then-else の質問に関して、->/2制御述語を使用します。

gothrough([H|T]):- 
   H==',', 
   (checkit(H) -> 
         writeln(true_part) ; 
         writeln(false_part)
   ).
于 2013-02-14T19:31:55.657 に答える