7

私は Prolog を学ぼうとしてきましたが、述語 s() が何をするのか完全に困惑しています。私はそれが頻繁に使用されているのを目にしますが、インターネット上には Prolog に関するリソースがほとんどないため、答えを見つけることができません。

元。

    /* sum(Is,S) is true if S is the sum of the list of integers Is.           */
    sum([],0).
    sum([0|Is],S):-sum(Is,S).
    sum([s(I)|Is], s(Z) ):-sum([I|Is],Z).
4

3 に答える 3

16

s/1それ自体は何もしませんし、実際には述語ではありません。それらは単なる用語であり、彼らの議論の後継者を表しています。したがって、s(0)0(ie 1)の後継を表すために使用され、( ie )s(s(0))の後継を表すために使用されます。Prologは記号計算を実行するための非常に優れた言語であるため、Prologで非常に普及していますが、単純な算術演算でさえ不格好であり、プログラミングパラダイムとシームレスに統合されていないことを意味します。s(0)2

于 2011-11-19T21:55:20.080 に答える
1

s/1 は後継者を表します。論理的にアクセス可能な方法で数値を表すために使用されます。

于 2011-11-19T20:45:43.170 に答える
0

これはProlog実装固有です。後継述語を指します。詳細については、これを参照してください

于 2011-11-19T21:12:08.653 に答える