* Pyke 知识库是一维结构,知识库中只有事实陈述语句,不允许包含其他知识库。同时,事实陈述语句也是一维结构,句中不能包含其他语句。
* 语句::= 标识.标识(参数,参数,……)
* 参数可以是 Python 简单的数据结构(数字,字符串,None,True 或 False),或者由它们组成的元组(包括嵌套的元组)。
文字模式:匹配对象是一模一样的值,即其自身。
模式变量:匹配的可以是任何对象(包括其他模式变量)。
还有一种复合模式:
元组模式:匹配对象是元组。
若想陈述某个事实,直接把数据写成参数就行。
但若要通过提问等方式,推断某个结论,需要以模式作为参数。
模式变量用做输出变量。形式上以美元符号 $ 开头。
匿名变量的名字,开头字符是下划线(_),其余字符无关紧要,顶多有点文档助记的作用。不过符号 $ 必不可少。匿名变量,从不约束值。或者说,从不赋值给它,它总是自由的。
模式变量是如何与数据值匹配合一的。
首先,检验模式变量是否已经约束了值。
若已经约束了值,则把它与数据的值比对,若一致,则匹配成功。
若尚未约束值,则把数据的值与其匹配合一,这种匹配总会成功。
模式变量在未受约束 时,可与任何值合一匹配。匹配后,变量约束了那个值。这也是匹配的副作用。模式变量在约束了值以后,只能与完全相同的值匹配,很像个文字模式。
元组模式只与元组合一匹配。它形式上是在圆括号中,成员由逗号隔开的模式列表,元组的最后那个变量,用星号(*)修饰成“其余模式”。这个“其余模式”的变量,总是约束为元组。
若模式变量A约束成B,即A变成了B,则它们实际上成为相同的模式变量。 模式变量A约束成B之后,B依旧是自由的、未受约束的。
网友评论