我不明白为什么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