我不明白爲什麼5(X,Y)在句法上不正確,而+(北,西)是正確的。
一個數字不是一個原子,而是一個數字。
在第33個第2.1.1節原子和數字記載:
Atoms can be constructed in three ways:
1. Strings of letters, digits and the underscore character,
starting with a lower-case letter.
2. Strings of special characters such as + - */< > = : . & _ ~
3. Strings of characters enclosed in single quotes.
字符5
- 失敗規則1,因爲字符串不以下劃線 字符或更低啓動 - 字母
- 由於不是規則2而不是一個 的特殊字符
- 因爲它不是在單引號
字符+
成功,因爲規則2是一個特殊字符封閉 失敗規則3。進一步探討這種
一種方式是通過使用SWI-Prolog的functor/3
?- functor(+(north,west),Name,Arity).
Name = (+),
Arity = 2.
?- functor(5(X,Y).
ERROR: Syntax error: Operator expected
ERROR: functor(
ERROR: ** here **
ERROR: 5(X,Y) .
準確的區別是什麼關係和結構之間
在第4頁第1.1節定義關係通過事實
通常,關係被定義爲其所有實例的集合。例如,親本(湯姆,鮑勃)是親本關係的特定實例。其他情況如下:
parent(pam,bob)
parent(tom,liz)
parent(bob,ann)
parent(bob,pat)
parent(pat,jim)
第35頁第2.1節。3層結構
結構化對象(或簡稱結構)是具有幾個組件對象,例如你的問題
date(1, may, 2001)
point(1,1)
seg(P1,P2)
seg(point(1,1),point(2,3))
(a + b) * (c - 5) % uses infix operator
*(+(a,b),-(c,5)) % uses prefix operator
尋找讓我覺得你正在尋找雙方的關係和結構,可用於區分一個與其他公共財產。我不知道一個;當我考慮使用Prolog時,我並不認爲should I use a relation or a structure
,我認爲how is the data structured
它可以像一個數字一樣簡單,或者可以是一個更復雜的結構或結構的結構,然後給出數據。在給出最好的定義時,我可以說的是,一個特定的關係可以由許多具有相同函數的結構組成,但這不是一個在我的腦海裏經過這段時間的想法。
'原子(5)'失敗。所以從技術上講,一個數字不是一個原子。我沒有那本書,所以知道他們聲稱的原因是一個原子也可以是數字*。 – lurker
這也許會有所幫助:[Prolog。結構(複雜的術語)與謂詞,我真的沒有區別](https://stackoverflow.com/questions/28972038/prolog-structurecomplex-term-vs-predicate-i-dont-really-get-the-difference/ 28972664#28972664) – lurker
謝謝!我不知道這樣的謂詞。 – milanv