lambda calculus
;;;lambda calculus
;;;booleans
true = \x.\y.x
false = \x.\y.y
if = \v.\t.\f. v t f
;;;ex
if true M N = M
--->(\v.\t.\f. v t f) (\x.\y.x) M N
--->(\x.\y.x) M N
--->M
;;;Pairs
;fst(mkpair M N) = M
;snd(mkpair M N) = N
makpair = \x.\y.\f. f x y
fst =\p.p true
snd =\p.p false
;;;Church number
;;;a lambda function stand for natrual number
;;;encoded by a function of two arguments, f and x
;;;where the function applies f to x n tims (number n)
0 = \f.\x.x
1 = \f.\x.f x
2 = \f.\x.f (f x)
3 = \f.\x.f (f (f x))
...
n = \f.\x.f...ntimes...(f x)
add1 = \n.\f.\x f (n f x) ;apply f n+1 times
add = \m.\n. m add1 n ;m haapens to be a function that will take add1 and apply it m times
iszero = \n. n (\x.false) true
;;;减法,主要就是要减少一次f的调用
;;;把n的f全部替换为warp f,x替换成<true,x>
;;;其中这个true主要是用来表示是否为第一次执行f,如果是那么就是x,如果不是那么就继续保持f x
;;;很简单,带入展开就知道了
sub1 = \n.\f.\x. snd(n (warp f) <true,x>)
warp = \f.\p.<false , if (fst p) (snd p) (f (snd p))>
---未完---
lambda calculus的更多相关文章
- [转帖]The Lambda Calculus for Absolute Dummies (like myself)
		Monday, May 7, 2012 The Lambda Calculus for Absolute Dummies (like myself) If there is one highly ... 
- [Lua]50行代码的解释器,用来演示lambda calculus
		嗯,来写写经过: 在知乎上看见用Belleve牛用javascript写了一个精简的lisp解释器 => 我也想写一个,用lua写,能多简单呢? => 写了一个阉割的scheme解释器,包 ... 
- C++ 泛型编程/模板 泛函编程/Lambda/λ演算
		1.泛型编程(C++模板) 其中,Ada, Delpha, Java, C#, Swift 称之为 泛型/generics; ML, Scala和 Haskell 称之为 参数多态/parametri ... 
- 聊聊Java 8 Lambda 表达式
		早在2014年oracle发布了jdk 8,在里面增加了lambda模块.于是java程序员们又多了一种新的编程方式:函数式编程,也就是lambda表达式.我自己用lambda表达式也差不多快4年 ... 
- Haskell语言学习笔记(79)lambda演算
		lambda演算 根据维基百科,lambda演算(英语:lambda calculus,λ-calculus)是一套从数学逻辑中发展,以变量绑定和替换的规则,来研究函数如何抽象化定义.函数如何被应用以 ... 
- JDK 8 -  Lambda Expression 的优点与限制
		我们知道 JDK 8 新增了 Lambda Expression 这一特性. JDK 8 为什么要新增这个特性呢? 这个特性给 JDK 8 带来了什么好处? 它可以做什么?不可以做什么? 在这篇文章, ... 
- 我的最爱Lambda演算——开篇
		(在这个帖子的原始版本里,我试图用一个JavaScript工具来生成MathML.但不太顺利:有几个浏览器没法正确的渲染,在RSS feed里也显示的不好.所以我只好从头开始,用简单的文本格式重新写一 ... 
- lambda表达式、匿名函数
		lambda表达式是函数式编程中的匿名函数语法规范. In computer programming, an anonymous function (function literal, lambda ... 
- SpringCloudGateWay学习 之 从函数式编程到lambda
		文章目录 前言: 函数式编程: 什么是函数式编程: 函数式编程的特点 lambda表达式: 核心: 函数接口: 方法引用: 类型推断: 变量引用: 级联表达式跟柯里化: 前言: 这一系列的文章主要是为 ... 
随机推荐
- 9 与python2交互
			1.创建外键 # 创建room表 mysql> create table rooms(id )); Query OK, rows affected (0.01 sec) #创建学生表 mysql ... 
- 1 HTML + CSS
			1.HTML的基础用法 2.标签的嵌套 3.常见的网页结构 header content footer 
- notepad++ 换行技巧  log换行
			有时候,服务器收集上来的日志,格式很乱,看log很难,如下: java.lang.IllegalStateException: BEvent.init() must be call first\n\t ... 
- 有关ViewFlipper的使用及设置动画效果的讲解
			说到左右滑动,其实实现左右滑动的方式很多,有ViewPaer,自定义实现Viewgroup,gallery等都可以达到这种效果.这里做下ViewFliper实现左右滑动的效果. 会用到以下的技术: 1 ... 
- 【Python】Python PYQT4 GUI编程与exe打包
			本篇文章承接http://www.cnblogs.com/zhang-zhi/p/7646923.html#3807385,上篇文章描述了对文本文件的简单处理,本章节结合PYQT4实现该功能的GUI图 ... 
- selenium IDE录制脚本和自定义脚本-->Katalon Recorder(二)
			selenium IDE提供了两种生成脚本的方式:录制脚本和自定义脚本 录制脚本:1.打开firefox空白标签,在标签上输入需要录制脚本的网址:2.打开selenium IDE界面中的录制按钮(圆形 ... 
- 解决display:inline-block;行内块元素出现空白空隙问题
			给他的父元素加:font-size:0px;, ul { font-size:0px;} li { font-size:16px;} 
- [问题解决]ps aux中command命令相同,如何找出自己要的进程号?
			问题提出: 我们通过ps aux能够查看各个进程的状态,很多时候启动命令相同,我们没有办法判断,我们要查找的进程到底是那个? 我们该用什么方式来找出我们要操作的进程号呢? 解决步骤: 找出有可能的进程 ... 
- vmware中三种网络连接方式(复制)
			原文来自http://note.youdao.com/share/web/file.html?id=236896997b6ffbaa8e0d92eacd13abbf&type=note 我怕链 ... 
- sqlalchemy presto 时间比较
			大数据统计时,需要计算开仓订单减掉经纪商时间差,等于n 小时 或 星期几的订单. presto sql语句如下: select sum(profit) from t_table where open_ ... 
