逻辑学与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 ...
随机推荐
- linux exit 和 _exit的区别
今天仔细看了一下exit和_exit这两个函数的区别,实际上exit也是调用了_exit退出函数的,只不过在调用_exit之前,exit还进行了一些多余的工作,也正是因为这样,相比起来exit就没有那 ...
- cf Learn from Life (简单贪心)
有N个人站在一楼.一个电梯最多承载K个人. 每个人都有一个想去的楼层.f[1]....f[N]. f[i]属于[2,2000] 从a层到b层需花费abs(a-b)秒. 问电梯送完所有人然后回到一楼至少 ...
- 如何选择普通索引和唯一索引《死磕MySQL系列 五》
系列文章 一.原来一条select语句在MySQL是这样执行的<死磕MySQL系列 一> 二.一生挚友redo log.binlog<死磕MySQL系列 二> 三.MySQL强 ...
- SpringMVC配置知识点
SpringMVC原生知识点 通过idea新建一个SpringMVC的Project(新建普通的项目就行了) 填写完之后Finish就行了 (实际开发不会这么用,这么做是为了理解!) 然后就是Spri ...
- 【Python+postman接口自动化测试】(7)Postman 的使用教程
Postman v6的使用 Postman: 简单方便的接口调试工具,便于分享和协作.具有接口调试,接口集管理,环境配置,参数化,断言,批量执行,录制接口,Mock Server, 接口文档,接口监控 ...
- k3s单机版安装部署 附一键安装脚本
作者:SRE运维博客 博客地址: https://www.cnsre.cn/ 文章地址:https://www.cnsre.cn/posts/211109907029/ 相关话题:https://ww ...
- 你以为我在玩游戏?其实我在学 Java
大家好,我是程序员cxuan!今天和大家一起Look一下这个有趣的国外编程网站! 寓教于乐 "今天我们来学习 Java " . "Java 是一门面向对象的编程语言&qu ...
- go条件语句
1. if else package main import "fmt" func main(){ a :=123 if a>100{ fmt.prinln("大于 ...
- ubuntu install redis
ubuntu install redis apt-get update apt-get install redis-server redis-server --daemonize yes
- airflow 安装问题
sasl Debian/Ubuntu: apt-get install python-dev libsasl2-dev gcc CentOS/RHEL: yum install gcc-c++ pyt ...