- 浏览: 417554 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (433)
- 编程语言-JAVA/Scala/Clojure/Grovvy (86)
- 编程语言-C (227)
- 编程语言-Rust/C++/Objective-C/Objective-C++ (97)
- 编程语言-PHP (4)
- 编程语言-Perl (4)
- 编程语言-Javascript (6)
- 编程语言-Scheme/Lisp (9)
- 编程语言-lua (5)
- 编程语言-erl (4)
- 编程语言-go (4)
- 编程语言-Ruby (3)
- 编程语言-python (4)
- 编程语言-smalltalk (3)
- 编程语言-guile (3)
- 算法结构 (32)
- 多线程编程 (2)
- 网络编程 (7)
- 并发编程 (21)
- 并行编程 (2)
- 事务 (4)
- 架构/编程-模型/模式/思想 (6)
- 开发框架-Spring (2)
- 开发框架-ibatis (0)
- 开发框架-Struts (0)
- 开发框架-Hibernate (0)
- 开发框架-mybatis (0)
- 分布式 (38)
- 分布式存储 (10)
- 分布式文件系统-dfs (4)
- 分布式计算 (2)
- 分布式事务 (10)
- 分布式数据中间件 (1)
- 分布式服务框架 (12)
- rpc (8)
- 通信 (23)
- 电信 (3)
- 电商 (1)
- 互联网应用 (2)
- 大前端 (5)
- 第三方支付 (2)
- CSS (1)
- android (3)
- ios (0)
- html5 (0)
- kafka (0)
- memcached (2)
- nginx (1)
- 并行计算 (1)
- 实时计算 (0)
- Storm (0)
- 数据库 (7)
- mysql (6)
- oracle (3)
- redis (4)
- mongodb (2)
- hbase (1)
- dal (0)
- handoop (1)
- 机器学习-ML (3)
- 深度学习-DL (0)
- 神经网络 (0)
- netty (4)
- mina (0)
- 大数据 (7)
- 大数据-算法 (0)
- 大数据-框架&平台 (3)
- 人工智能 (7)
- 人工智能-算法 (4)
- 人工智能-框架&平台 (0)
- 协议 (42)
- 安全 (15)
- 消息队列 (2)
- os(linux、windows) (85)
最新评论
λ-calculus
- 博客分类:
- 编程语言-JAVA/Scala/Clojure/Grovvy
- 编程语言-C
- 编程语言-Rust/C++/Objective-C/Objective-C++
- 编程语言-PHP
- 编程语言-Javascript
- 编程语言-Perl
- 编程语言-Scheme/Lisp
- 编程语言-lua
- 编程语言-erl
- 编程语言-python
- 架构/编程-模型/模式/思想
- 编程语言-Ruby
- 编程语言-go
- 编程语言-smalltalk
λ-calculus:α-conversion,β-reduction以及η-conversion
lambda abstraction:
(λx.t)
lambda abstraction是一个匿名函数定义:它有一个输入x,然后将输入x替换为t。它其实定义的是这样一个匿名函数:传入x,返回t。例如:λr.3.14 * r2为
f(r)= 3.14 * r2的lambda abstraction。
lambda abstraction的函数定义为仅仅"sets up"了一个函数,相当于定义了一个函数,但并不调用。
lambda abstraction同样抽象为:绑定变量x到t。
application:
(ts)
application表示将一个函数t应用于输入s,也就是说,它表示一个函数调用:t(s),t为调用的函数,s为输入。
lambda abstraction和application的本质区别为:
1、应用到函数上,前者为定义,后者为调用。
2、应用到变量上,前者为定义,后者为使用。
α-conversion:
λx.t
β-reduction:
((λV.E) E′)
下面例子就是一个((λV.E) E′)的形式定义: 表示将一个函数t应用于输入s, t就是这里的(λV.E),s就是这里的E′,也就是说,它表示一个函数调用:t(s),t为调用的函数(λV.E),s为输入E′。
在这里定义了一个匿名函数,对应形式中的(λV.E),形式中它接收V作为输入,替换为E。在例子中实际上定义了两个函数的重载:一个接收两个参数, 一个无参。
reduce的函数定义:
有两种形式, 第一种形式:
(reduce f coll)
第二种形式:
(reduce f val coll)
f should be a function of 2 arguments. If val is not supplied,
returns the result of applying f to the first 2 items in coll, then
applying f to that result and the 3rd item, etc. If coll contains no
items, f must accept no arguments as well, and reduce returns the
result of calling f with no arguments. If coll has only 1 item, it
is returned and f is not called. If val is supplied, returns the
result of applying f to val and the first item in coll, then
applying f to that result and the 2nd item, etc. If coll contains no
items, returns val and f is not called.
=> (reduce (fn
#_=> ([]
#_=> 0)
#_=> ([va1 va2]
#_=> (+ va1 va2)))
#_=> [1 2 3 4 5])
15
可以拆解为:
=> (def fx (fn
#_=> ([]
#_=> 0)
#_=> ([va1 va2]
#_=> (+ va1 va2))))
#'user/fx
=> (reduce fx [1 2 3 4 5])
15
=> (reduce fx [6])
6
=> (reduce fx [])
0
如果应用的函数定义为无参:
=> (def fx (fn
#_=> []
#_=> 0))
#'user/fx
=> (reduce fx [1 2 3 4 5])
ArityException Wrong number of args (2) passed to: user/fx
=> (reduce fx [6])
6
=> (reduce fx [])
0
如果应用的函数定义为只接收一个参数:
=> (def fx (fn
#_=> [va]
#_=> va))
#'user/fx
=> (reduce fx [1 2 3 4 5])
ArityException Wrong number of args (2) passed to: user/fx
=> (reduce fx [6])
6
=> (reduce fx [])
ArityException Wrong number of args (0) passed to: user/fx
如果应用的函数定义为只接收两个参数:
=> (def fx (fn
#_=> [va1 va2]
#_=> (+ va1 va2)))
#'user/fx
=> (reduce fx [6])
6
=> (reduce fx [])
ArityException Wrong number of args (0) passed to: user/fx
如果应用的函数定义为只接收多于两个的参数:
=> (def fx (fn
#_=> [va1 va2 va3]
#_=> (+ va1 va2 va3)))
#'user/fx
=> (reduce fx [1 2 3 4 5])
ArityException Wrong number of args (2) passed to: user/fx
=> (reduce fx [6])
6
=> (reduce fx [])
ArityException Wrong number of args (0) passed to: user/fx
η-conversion:
λx.(f x)
只需要前两个:α-conversion及β-reduction就可以实现任何情况下的形式推演。
public Function<Input, Boolean> fx() {
return Input -> (result(Input));
}
lambda abstraction:
(λx.t)
lambda abstraction是一个匿名函数定义:它有一个输入x,然后将输入x替换为t。它其实定义的是这样一个匿名函数:传入x,返回t。例如:λr.3.14 * r2为
f(r)= 3.14 * r2的lambda abstraction。
lambda abstraction的函数定义为仅仅"sets up"了一个函数,相当于定义了一个函数,但并不调用。
lambda abstraction同样抽象为:绑定变量x到t。
application:
(ts)
application表示将一个函数t应用于输入s,也就是说,它表示一个函数调用:t(s),t为调用的函数,s为输入。
lambda abstraction和application的本质区别为:
1、应用到函数上,前者为定义,后者为调用。
2、应用到变量上,前者为定义,后者为使用。
α-conversion:
λx.t
β-reduction:
((λV.E) E′)
下面例子就是一个((λV.E) E′)的形式定义: 表示将一个函数t应用于输入s, t就是这里的(λV.E),s就是这里的E′,也就是说,它表示一个函数调用:t(s),t为调用的函数(λV.E),s为输入E′。
在这里定义了一个匿名函数,对应形式中的(λV.E),形式中它接收V作为输入,替换为E。在例子中实际上定义了两个函数的重载:一个接收两个参数, 一个无参。
reduce的函数定义:
有两种形式, 第一种形式:
(reduce f coll)
第二种形式:
(reduce f val coll)
f should be a function of 2 arguments. If val is not supplied,
returns the result of applying f to the first 2 items in coll, then
applying f to that result and the 3rd item, etc. If coll contains no
items, f must accept no arguments as well, and reduce returns the
result of calling f with no arguments. If coll has only 1 item, it
is returned and f is not called. If val is supplied, returns the
result of applying f to val and the first item in coll, then
applying f to that result and the 2nd item, etc. If coll contains no
items, returns val and f is not called.
=> (reduce (fn
#_=> ([]
#_=> 0)
#_=> ([va1 va2]
#_=> (+ va1 va2)))
#_=> [1 2 3 4 5])
15
可以拆解为:
=> (def fx (fn
#_=> ([]
#_=> 0)
#_=> ([va1 va2]
#_=> (+ va1 va2))))
#'user/fx
=> (reduce fx [1 2 3 4 5])
15
=> (reduce fx [6])
6
=> (reduce fx [])
0
如果应用的函数定义为无参:
=> (def fx (fn
#_=> []
#_=> 0))
#'user/fx
=> (reduce fx [1 2 3 4 5])
ArityException Wrong number of args (2) passed to: user/fx
=> (reduce fx [6])
6
=> (reduce fx [])
0
如果应用的函数定义为只接收一个参数:
=> (def fx (fn
#_=> [va]
#_=> va))
#'user/fx
=> (reduce fx [1 2 3 4 5])
ArityException Wrong number of args (2) passed to: user/fx
=> (reduce fx [6])
6
=> (reduce fx [])
ArityException Wrong number of args (0) passed to: user/fx
如果应用的函数定义为只接收两个参数:
=> (def fx (fn
#_=> [va1 va2]
#_=> (+ va1 va2)))
#'user/fx
=> (reduce fx [6])
6
=> (reduce fx [])
ArityException Wrong number of args (0) passed to: user/fx
如果应用的函数定义为只接收多于两个的参数:
=> (def fx (fn
#_=> [va1 va2 va3]
#_=> (+ va1 va2 va3)))
#'user/fx
=> (reduce fx [1 2 3 4 5])
ArityException Wrong number of args (2) passed to: user/fx
=> (reduce fx [6])
6
=> (reduce fx [])
ArityException Wrong number of args (0) passed to: user/fx
η-conversion:
λx.(f x)
只需要前两个:α-conversion及β-reduction就可以实现任何情况下的形式推演。
public Function<Input, Boolean> fx() {
return Input -> (result(Input));
}
发表评论
-
Android: 动画
2023-02-23 22:23 0动画 Animation Android提供了一个动画 ... -
Android: LayoutInflater
2023-02-23 22:19 0LayoutInflater android.view.La ... -
Android: 配置清单
2023-02-21 20:12 0配置清单 Android的一个重要的配置文件Androi ... -
Android: 位置服务
2023-02-21 20:05 0位置服务 LocationManager l ... -
Android: 位置服务
2023-02-21 20:05 0位置服务 LocationManager l ... -
Android: SQLite
2023-02-21 19:59 0SQLite SQLiteOpenHelper ... -
Android: 容器视图
2023-02-02 14:35 0容器视图 容器视图和其他的视图不一样的是容器视图可以添加 ... -
C: 类型转换
2022-07-30 15:58 196写道 https://lobin.iteye.com/ad ... -
C: 类型转换
2022-07-30 15:58 0类型转换 类型转换包 ... -
C: lvalue & rvalue
2022-07-30 15:43 157写道 https://lobin.iteye.com/ad ... -
C: lvalue & rvalue
2022-07-30 15:42 0值和引用 C语言并没有引用这个概念。C相对其他编程语言有 ... -
C: 标准库
2022-07-30 13:31 183写道 https://lobin.iteye.com/ad ... -
C: 标准库
2022-07-30 13:30 0标准库 我们在开始使用VC或Visual Studio这些 ... -
C: 语句
2022-07-30 13:19 175写道 https://lobin.iteye.com/ad ... -
C: 语句
2022-07-30 13:19 0语句 块 多条语句用一对大括号括起来组成块。这样的语 ... -
C: 表达式求值
2022-07-30 12:36 218写道 https://lobin.iteye.com/a ... -
C: 表达式求值
2022-07-30 12:36 0表达式求值 表达式求值(expression evalua ... -
第9章 C++ 引用
2022-07-09 18:18 0C++在C的基础上加入了引用的概念。 C++ ... -
第23章 C++ 虚表
2022-07-09 18:12 0虚表 #define GET_CLASS_NA ... -
第22章 C++ 对象布局
2022-07-07 22:34 0对象布局 标准布局 standard-lay ...
相关推荐
基于java网上球鞋竞拍系统设计与实现.docx
基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip 个人大四的毕业设计、课程设计、作业、经导师指导并认可通过的高分设计项目,评审平均分达96.5分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 [资源说明] 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设或者课设、作业,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96.5分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),供学习参考。
基于java的足球赛会管理系统设计与实现.docx
基于java的婚纱摄影网的设计与实现.docx
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
基于java的农产品仓库管理系统系统设计与实现.docx
【作品名称】:基于Java swing +mysql(Oracle)实现的飞机订票系统项目(含毕业论文+答辩 ppt+双数据库版本源码) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 系统功能需求 本系统用于远程机票预订,包括远程航班信息查询、机票预订与确认等;主要分为四大功能:查询、订票、退票和管理。 管理员登录、注销 到系统并进行插入、删除、更新以及查看机票后台数据库操作 插入:机票的插入可以按照航班号、班期、公司、座位号、起飞地以及抵达地等等插入数据库。 删除:机票可以按照航班号、起止城市、星期进行删除 3.1.1客户端系统功能 1.普通用户: 查询:根据航班号、航空公司以及目的地查询出票类信息 订票: 根据出发日期和第一航班号预订机票,机票类型分为单 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。不一定能够满足所有人的需求,需要有一定的基础能够看懂代码,能够自行调试代码并解决报错,能够自行添加功能修改代码。
2018信基广场“红动佛山”春节新媒体营销方案.pptx
均包含代码,文章,部分项目包含ppt
基于java的蜀都天香酒楼的网站设计与实现.docx
1、开发环境:SSM框架;内含Mysql数据库;VUE技术;内含说明文档 2、项目代码都经过严格调试,代码没有任何bug! 3、该资源包括项目的全部源码,下载可以直接使用! 4、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 5、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。
基于java的英语单词学习网站设计与实现.docx
基于java企业销售人员培训系统设计与实现.docx
2019优益C x 易烊千玺微博营销案结案报告.pptx
基于java的单位人事管理系统设计与实现.docx
该网站采用SSM框架和Eclipse编辑器、MySQL数据库设计并实现的。网站功能包含系统用户管理、图书管理、用户管理、借书管理、续借管理、违章缴款管理等模块。 首页是网站的入口,主要包含了:新闻信息、图书信息等导航功能。 用户有独立的注册界面,用户填写好注册信息后,会有个一审核的过程,经过管理员审核注册成功,并将注册的信息加入用户表中。 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7+ 后端技术:ssm 前端技术:Vue 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
docker安装部署gorse