逻辑学与Prolog学习笔记
int a = 3 + 5; 很自然。如果Matrix a, b要加呢?没有运算符重载,a + b是不行的,只能add(a, b). int a = add(3, 5)也行。如果函数名可以用+呢?+(a, b); +(3, 5). 如果括号和逗号是多余的呢?3 + 5叫中缀表达式,+35叫前缀表达式或波兰式,还有35+后缀/逆波兰式。前缀的好处之一是没有歧义,例如+3*25和+32*5分别相当于中缀的3+2*5和(3+2)*5。中缀要规定运算符优先级,前后缀不需要,为啥我没明白,和“结合律”有关?add是个操作/动作,想到动词verb,动词有宾语,不止一个。is和give也是动词。tom is cat (不聊英语语法),give man horse, give horse man. 动词做谓语,谓词。
Prolog是个好语言,可我咋觉得发明者和写例子的人的英语都诡异呢? cat(tom), friend(sheldon, kripie). 没有catize(猫化)这个词,有befriend这个词。is是动词,除了描述动作,还有/更多陈述事实/命题。有多元谓词。
推理即搜索?
Tom BE Cat
Cat HAVE Leg
>>>Tom HAVE Leg
yes
Penny, Leonard, Raj BE Person
Penny LIKE Leonard; Leonard LIKE Penny; Raj LIKE Penny
this BE_GOOD_COUPLE that IF this LIKE that AND that LIKE this
>>>Penny BE_GOOD_COUPLE Raj
no
Kitchen CONNECTED_TO Hall; Hall CONNECTED_TO Bedroom
Robot AT Kitchen
DEFINE here GOTO there AS NOLONGER AT here and AT there IF AT here AND here CONNECTED_TO there
>>>Robot GOTO Bedroom
no
>>>why
Bedroom no CONNECTED_TO Kitchen
>>>try harder
yes
1, 2, 3 IN A; 2, 4 IN B
%%
a INTERSECT b IS FOREACH x IF x IN a AND x IN b
Prolog一会listing,一会write。不至于不支持\n的写法吧,换个行还得来个nl子句。C++的endl也没啥意思,有flush啊,\n自动flush呗。"%9.2f %7.3f" 用stream的format来写非常啰嗦。
组合爆炸。2个不同的台球,上面分别印着1, 2。从里面取0到2个,组合数=C(2,0) + C(2,1) + C(2,2) = 4 = 2**2. 想象一个机器,每个球下面有个铁片挡着,搬动开关,铁片打开球落下,记为取出。开关从都不按到都按有00 01 10 11四种。2,3,4共4-2+1=3个,3-0+1=4. 背包问题不用写递归。
2>1: 真命题; 3<2: 假命题。>: 关系。(2>1) > (3>2): 不是命题。汪曾祺书里提到某君垂直于黑板。(苹果 比 桔子 好吃) 比 (桔子 比 葡萄 好吃) 好吃。
逻辑学里都是公理吧。
sort是个操作/过程。C里多个procedure 保留字(reserved word)不好吗?python里sorted是个被sort了的对象。def只说了要define,没说定义过程还是函数。for (i = 13; i < 42; i = i + 2) formidable_algorithm(important_data). for为啥是key word? 可能做编译器的人扫描输入,look for for. 我做编译器的,我哪知道你data important不。
class Cat;
tom = Cat();
tom.have_property('leg')
person = { 'Penny', 'Leonard', 'Raj' }
penny.likes = { 'Leonard', 'Raj' }
a = {1, 2, 3}
2 in a
也许能用python的exec()和eval()搞点好玩的:exec('leonard = Person()'); exec('penny.likes += leonard'); 好像也是个费时间换费空间。搜索不需要堆栈吗?
搞个图,节点放Tom, Penny, Lenord,有向的边放谓词(二元)?推理图,推背图。:-)
逻辑学与Prolog学习笔记的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
随机推荐
- python pip whl安装和使用
转载:https://www.cnblogs.com/klb561/p/9271322.html 1 python的安装 首先,从python的官方网站 www.python.org下载需要的pyth ...
- shell 脚本控制命令的执行顺序
&&,||,(),{},& 五个符号的运用shell脚本执行命令的时候,有时候会依赖于前一个命令是否执行成功.而&&和||就是用来判断前一个命令执行效果的. 也 ...
- Centos 8 升级ssl到1.1.1h
升级到1.1.1h版本 #编译openssl和安装 ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl & ...
- echarts 让轴自适应数据为小数整数
echarts 让轴自适应数据为小数整数,以解决y轴数值重复的问题 工作中突然遇到这个问题 试了一下用formatter自适应 ok 在yAxis中提阿尼按键属性 axisLabel 1 axis ...
- 【java+selenium3】元素的扩展操作(二)
1.判断当前元素是否可显示 isDisplay(); //判断元素是否可见 boolean a= driver.findElement(By.id("xxx")).isDispla ...
- 设计模式学习-使用go实现原型模式
原型模式 定义 代码实现 优点 缺点 适用场景 参考 原型模式 定义 如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同),在这种情况下,我们可以利用对已有对象(原型)进行复 ...
- Java测试开发--Set、Map、List三种集合(四)
1.集合类型主要有3种:set(集).list(列表)和map(映射). 2.三者关系 3.Set set接口是Collection接口的一个子接口,是无序的,set去重,也就是说set中不存在两个这 ...
- idea查看方法在哪里被调用
方法一 选中方法名,右键选择Find Usages 方法二 选中方法快捷键ctrl + alt + h查看Hierarchy Callers
- python编写脚本,登录Github通过指定仓库指定敏感关键字搜索自动化截图生成文件【完美截图】
前言:为了避免开发人员将敏感信息写入文件传到github,所以测试人员需要检查每个仓库是否有写入,人工搜索审核比较繁琐,所以写一个脚本通过配置 配置文件,指定需要搜索的仓库和每个仓库需要搜索的关键字, ...
- pylint代码静态检查
使用git-pylint-commit-hook工具 pre-commit脚本 配置文件放在仓库根目录/hooks下面 git-pylint-commit-hook --limit=9.0 --pyl ...