SICP学习笔4--邱奇整数
来源:互联网 发布:fnis 超出数组界限 编辑:程序博客网 时间:2024/04/28 13:58
邱奇非负整数0的定义如下:
(define zero (lambda (f) (lambda (x) x)))
下面定义加一运算
(define (add-1 n) (lambda (f) (lambda (x) (f ((n f) x)))))
问1:如何定义1, 2?(定义中不包含zero和add-1)
(add-1 zero) => ((lambda (n) (lambda (f) (lambda (x) (f ((n f) x))))) (lambda (f) (lambda (x) x))) => (lambda (f) (lambda (x) (f (((lambda (f) (lambda (x) x))) f) x))) => (lambda (f) (lambda (x) (f x))) (define one (lambda (f)(lambda (x) (f x))))
(add-1 one)=> ((lambda (n) (lambda (f) (lambda (x) (f ((n f) x))))) (lambda (f)(lambda (x) (f x))))=> (lambda (f)(lambda (x) (f ((lambda (f) (lambda (x) (f x))) f) x)))=> (lambda (f)(lambda (x) (f (lambda (x) (f x)) x)))=> (lambda (f)(lambda (x) (f (f x))))(define two (lambda (f)(lambda (x) (f (f x)))))
问2:如何定义加法
(define plus (m n) (lambda (f)(lambda (x) ((m f) ((n f) x)))))
python 等价代码:
>>> def zero(): return lambda f: lambda x: x... >>> def one(): return lambda f: lambda x: f(x)... >>> def two(): return lambda f: lambda x: f(f(x))... >>> def addone(n): return lambda f: lambda x: f(n(f)(x))... >>> def plus(m,n): return lambda f: lambda x: m(f)((n(f)(x)))
0 0
- SICP学习笔4--邱奇整数
- SICP学习笔记(4)
- SICP学习笔3--lambda
- SICP学习笔记(1.3.4)
- SICP学习笔记 (2.2.4)
- SICP学习笔记(2.3.4)
- 起初学习简单练习,有关整数的求和,求偶,求奇,求素数.
- SICP学习有感
- 学习SICP,好好研究
- SICP学习笔记(1)
- SICP学习笔记(0)
- SICP学习笔记(1.1)
- sicp 学习 0
- sicp 学习 1.1
- sicp 学习 1.2
- SICP学习 - 序
- sicp学习笔记
- SICP第一章学习笔记
- 提高ios app性能 初中高级实践
- 《31天成为IT服务达人》--做事篇(二)之计划
- sizeof and strlen整理
- SHELL学习笔记----IF条件判断,判断条件
- 搜索不到共享打印机怎么办
- SICP学习笔4--邱奇整数
- Android---Matrix类的使用
- 划分子网和构造超网(一)
- bundle install 长时间无响应的原因及解决办法
- myeclipse 启动过程
- Spring源码解析(一) Spring事务控制之Hibernate
- CGI使用
- 100万条记录的文本文件,取出重复数最多的前10条
- 基于Spring的包含特定注解bean的package扫描工具