2016-06-17 9 views
1

私のような、いくつかの基本的なルールで、プロローグで英語の言語の文法を記述しようとしていますが、文法声明のようなルールの場合:確定節はプロローグ

noun(X, woman(X)) --> [woman]. 
iv(Y, snort(Y)) --> [snorts]. 

私は迷っています。これらはどういう意味ですか?変数Xが繰り返し表示されるのはなぜですか?

+0

noun // 2とは無関係**名詞// np-> det、noun.に表示されます。名詞// 2が実際に使用されるコンテキストを表示する必要があります。 Xの引数はラムダ式のようなものである可能性が高いので、フレーズのPOS(品詞)の間で意味情報を転送します。あなたがあなたの探求を理解するのに役立たないならば、あなたは答えを受け入れる義務がありません。 – CapelliC

+0

'noun(X、woman(X))'のように繰り返される変数を見ると、これは、「X」とラベル付けされたすべての変数間で統合が行われていることを意味します。たとえば、 'same(X、X).'というルールがあった場合、' same(Foo、bar) 'と答えると' Foo = bar.'という解決法が得られます。 '名詞(X、女性(X)) - > [女性] .'は、'女性 'が入力に見える場合にのみ、この非融合を行います。これは非常に基本的なPrologの動作です。 Prolog言語の入門資料の研究により、より多くの情報が得られます。 – lurker

+0

@lurkerだから、単に名詞 - > [女性]を書いたらどうなるでしょう。 ? P.S.私は入門的な資料を見ましたが、その一部は実際に混乱しています。 – Alessandro

答えて

2
noun(X, woman(X)) --> [woman]. 

もちろんの

noun(X, woman(X), A, B) :- A = [woman | B]. 

これと同じであるX変数インスタンス生成を残します。 、(X、Y名詞 -

4:?おそらく、あなたは

noun(X, woman(X), A, B) :- A = [woman, X | B]. 

繰り返し論理変数と同等です

noun(X, woman(X)) --> [woman, X]. 

は、いつものように、統一で同一性を示すことを意図し[女性、1]、Z)。
X = 1, Y =女性(1)
Z = []。

5句(名詞(X、Y)、[女性、1])。
X = 1, Y =女性(1)。

+0

説明をありがとうございますが、Prologには新しいですが、私はまだ名詞(X、女性(X)) - > [女性]に混乱しています。実際には意味する。あなたは何が起こっているのかについて言葉で話すことができますか? Tks – Alessandro

+0

「名詞(X、女性(X)、A、B)と同じです: - A = [女性| B]。あなたは後者を理解するのに役立つ必要がありますか?これは単純なPrologで、非dcgです。 –

+0

私はトラブルの女性を理解する(X)名詞文の一部を持って、私は述語にちょうど引数の残り – Alessandro