ばかげているように聞こえますが、私の述語 maximum/2 がリスト内の最大の要素を返すとしましょう...出力は次のようになります。
?- largest([1,2,3,4,5], X).
X = 5.
false.
私が実装した最大のものは、「false」を出力しないことを除いて、上記のように機能します。この「false」も出力するようにするにはどうすればよいですか。価値?これは、私が終わらせなければならない厄介な任務のためです。:(
ばかげているように聞こえますが、私の述語 maximum/2 がリスト内の最大の要素を返すとしましょう...出力は次のようになります。
?- largest([1,2,3,4,5], X).
X = 5.
false.
私が実装した最大のものは、「false」を出力しないことを除いて、上記のように機能します。この「false」も出力するようにするにはどうすればよいですか。価値?これは、私が終わらせなければならない厄介な任務のためです。:(
その余分なfalse.
またはNo
は、プログラムを実行している人がX
、最初の可能な解だけでなく、 のすべての可能な解を取得するように要求したことを意味します。
;
ほとんどの対話型 Prolog インタープリターでは、セミコロン ( ) キーを押して、別の解決策があるかどうかを確認します。
述語が失敗した場合、自由変数のバインディングは発生しないため、不可能のように聞こえます。
?- A=5.
A = 5.
?- A=5,false.
false.
でも
?- A=5;false.
A = 5 ;
false.
これを実現するには、述語を「最大」の非決定論的にする必要があります。しかし、私にはこれはかなりばかげているようです。