2012-10-17 10 views
7

私はよく質問what does slash(/) do in prolog?What is the meaning of predicate “simple/1” in Prolog (SWI-Prolog)を読んだことがありますが、これらのリンクは私を助けてくれないようです。Prologで述語名の後にスラッシュの意味は何ですか?

私はPrologに関するいくつかの初心者のチュートリアルを行っていました。 Solve/4Go/1のようなフレーズは私を混乱させます。そのスラッシュと数字は何を意味しますか?

答えて

13

関数がその署名に期待する引数の数です。中置演算子に注意してください。中置演算子は、呼び出される方法が引数の間に置かれていても、複数の引数を受け入れることができます。つまり、通常の追加のようなものを、バイナリ演算子として考えることができます。+したがって、A+Bは実際には+(A,B)と同じです。つまり、++/2と定義します。

+4

質問のポスターに留意してください。これは、述語のアリティとも呼ばれます。 –

+0

@DavorinRuševljan...「Arity」は何ですか? –

+2

述部の引数の数。私はPrologについて読んでいる間にあなたが頻繁にその言葉を見つけるので、それを言いました。 –

2

私は 'Prolog:The Standard:Reference Manual'(私がgoogled 'prolog述語インジケータ'のときは2番目のエントリ)の8ページから引用します。

述語インジケータが...それはフォーム名の接地用語'S /アリティ

ISO組み込みファンクタ/ 3がアクセス

そのようなデータEMSとチャックモールは、この番号を説明したように

?- functor(append(a,b,c),Name,Arity). 
Name = append, 
Arity = 3. 
2

引数の数を示します。ドキュメントでこの番号が見つかる理由は、同じ名前と異なるアーリー(引数の数)を持つ述語が異なる述語であるためです。

だから、述語:

my_predicate/3 

が異なる述語です:

my_predicate/4 

と数は彼らがについて話されている1について明確な指示を与えるために含まれています。

関連する問題