【Prolog】1.0 基础语法与概念

【概述】
Prolog的语法与其它常用语言(如C,JAVA等)不同,它更接近于自然语言。

【实例】
当我想表示“Mia是以女人”这个事实(之后会提到事实这个概念)的时候,我可以这么写

woman(mia).  

这个格式代表这一个事实,a(b). b是a 事实上命名没什么要求,只要你自己记得就好
当我想要知道某个问题的答案,我就可以通过-?对其进行问询,比如

woman(mia).  
  
-? woman(mia).
yes

这就是使用Prolog的一个简单的例子

【常量和变量】
Prolog常量和变量的区分规则简单粗暴:
小写字母是常量,如abc;大写字母则是变量,如Abc
在要求输出时,常量输出自身,变量输出自己的代表值(比如我给Abc赋值了4396.输出Abc就是输出4396,输出abc就是输出abc)

【关系、属性】
两个对象的关系,用括号()表示,比如mia和zed是朋友,则写成

friend(mia,zed).  
friend(zed,mia).

注意,第一条的意思是mia是zed的朋友,不代表zed是mia的朋友,二者互为朋友则需要各写一次 ,这个就叫关系

如果括号中,只有一个对象,那么这便是属性

woman(mia).  

【规则】
规则是prolog进行推断的依据,可以类比其它语言中的if
比如刚才我们嫌朋友的判定太麻烦,于是就可以加入下面这条规则
friend(X, Y) :- friend(Y,X).
这里面的XY就是变量,其中 A:-B 代表从B可以推断出A,也就是B是true,那么A也是true
**:- **代表推理关系
那么,如果一个推断需要多个条件确定呢,那么就把条件用逗号隔开,就像A:- B,C 比如
mother(X, Y) :- child(Y,X), female(X).
X是Y的妈,需要二者有母子关系,并且X是女的
另外,如果一条规则取决于某个条件为false,则在条件之前加上+表示否定

【查询】
在对应的编译器(有时也叫解释器)中,使用 -? ... 来进行查询,...代表要查询的东西

posted @ 2021-03-21 21:09  RetenQ  阅读(209)  评论(0编辑  收藏  举报