Pyke 学习笔记(一)

事实陈述


* Pyke 知识库是一维结构,知识库中只有事实陈述语句,不允许包含其他知识库。同时,事实陈述语句也是一维结构,句中不能包含其他语句。

* 语句::= 标识.标识(参数,参数,……)

* 参数可以是 Python 简单的数据结构(数字,字符串,None,True 或 False),或者由它们组成的元组(包括嵌套的元组)。


模式匹配

文字模式:匹配对象是一模一样的值,即其自身。 

模式变量:匹配的可以是任何对象(包括其他模式变量)。 

还有一种复合模式: 

元组模式:匹配对象是元组。


若想陈述某个事实,直接把数据写成参数就行。 

但若要通过提问等方式,推断某个结论,需要以模式作为参数。

模式变量用做输出变量。形式上以美元符号 $ 开头。

匿名变量的名字,开头字符是下划线(_),其余字符无关紧要,顶多有点文档助记的作用。不过符号 $ 必不可少。匿名变量,从不约束值。或者说,从不赋值给它,它总是自由的。

模式变量是如何与数据值匹配合一的。 

首先,检验模式变量是否已经约束了值。 

若已经约束了值,则把它与数据的值比对,若一致,则匹配成功。 

若尚未约束值,则把数据的值与其匹配合一,这种匹配总会成功。 

模式变量在未受约束 时,可与任何值合一匹配。匹配后,变量约束了那个值。这也是匹配的副作用。模式变量在约束了值以后,只能与完全相同的值匹配,很像个文字模式。


元组模式只与元组合一匹配。它形式上是在圆括号中,成员由逗号隔开的模式列表,元组的最后那个变量,用星号(*)修饰成“其余模式”。这个“其余模式”的变量,总是约束为元组。

若模式变量A约束成B,即A变成了B,则它们实际上成为相同的模式变量。 模式变量A约束成B之后,B依旧是自由的、未受约束的。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 8,076评论 2 9
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 10,032评论 0 5
  • 基础部分(The Basics) 当推断浮点数的类型时,Swift 总是会选择Double而不是Float。 结合...
    gamper阅读 5,245评论 0 7
  • 1. 机器学习 评估假设一旦我们通过以下方式在我们的预测中做了一些故障排除:获得更多培训示例尝试更小的功能集尝试其...
    molscar阅读 4,057评论 0 0
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 9,489评论 1 10

友情链接更多精彩内容