【Scheme】cons的过程性实现
(define (cons x y)
(define (dispatch m)
(cond ((= m 0) x)
((= m 1) y)))
dispatch)
(define (car z) (z 0))
(define (cdr z) (z 1))
(cons x y)实际返回的是一个过程,即内部定义的dispatch,它接收一个参数0或1分别返回x和y。因此,如果z是由(cons x y)产生的过程,(z 0)相当于把0传递给dispatch,就会得到x。(z 1)同理得到y。
(define (cons x y)
(lambda (m) (m x y)))
(define (car x)
(x (lambda (m n) m )))
(define (cdr x)
(x (lambda (m n) n )))
(cons x y)返回一个lambda函数,此函数接收一个过程,并作用于x,y上。那么car和cdr的实现就应该是实现一个过程,该过程接收2个参数,并分别返回第一个和第二个参数。
以car为例,(lambda (m n) m)该函数将两个参数中的第一个返回,
再将其传递给x,相当于调用了((lambda (m n) m ) x y),自然返回了x。
【Scheme】cons的过程性实现的更多相关文章
- Java作业:第四次过程性考核 ——长春职业技术学院 16级网络工程
Java作业:第四次过程性考核 码云链接:https://gitee.com/SoridoD/java_kaohe4 (时间匆忙没打注释,真有急事) (客户端和服务器会自动创建表,所以没有sql ...
- Java作业:第一次过程性考核 ——长春职业技术学院 16级网络工程
Java作业:第一次过程性考核 ••<结构化程序设计>•• 考核目标:初步了解Java基本语法规则,学习结构化程序设计思想. 码云链接:https://gitee.com/SoridoD/ ...
- Java作业:第二次过程性考核 ——长春职业技术学院 16级网络工程
## 时间有限,脑力不足 ## 只给出代码部分(附带注释) 码云 https://gitee.com/SoridoD/codes 7-5: import java.util.Scanner; clas ...
- scheme I/0 输入输出操作
2.1. open-input-file, read-char, and eof-object? The function (open-input-file filename) is availabl ...
- 算法语言Scheme修订6报告 R6RS简体中文翻译
算法语言Scheme修订6报告 R6RS简体中文翻译 来源 https://r6rs.mrliu.org/ MICHAEL SPERBERR. KENT DYBVIG, MATTHEW FLATT ...
- Scheme语言实例入门--怎样写一个“新型冠状病毒感染风险检测程序”
小学生都能用的编程语言 2020的春季中小学受疫情影响,一直还没有开学,孩子宅在家说想做一个学校要求的研究项目,我就说你做一个怎么样通过编程来学习数学的小项目吧,用最简单的计算机语言来解决小学数学问题 ...
- SICP— 第一章 构造过程抽象
SICP Structure And Interpretation Of Computer Programs 中文第2版 分两部分 S 和 I 第一章 构造过程抽象 1,程序设计的基本元素 2,过 ...
- scheme一页纸教程
这是一个大学教授写的,非常好,原文:http://classes.soe.ucsc.edu/cmps112/Spring03/languages/scheme/SchemeTutorialA.html ...
- Oracle PL/SQL,游标,过程
1.PL/SQL 语法相关 -- SQL 语言只是访问,操作数据库的语言,而比并不是程序设计语言,因此不能用于程序开发. -- PL/SQL 是在标准SQl语言上进行过程性扩展后形成的程序设计语言, ...
随机推荐
- python中的find、rfind、index、rindex
find()从左向右寻找子序列的位置,如存在多个相同子序列只返回第一个查找到的位置,如果子序列不存在返回-1 rfind()从右向左寻找子序列的位置..... index()从左向右寻找子序列的位置, ...
- EditText获取焦点
这三个属性必须同时设置: private EditText passwde = null; passwde.setFocusable(true); passwde.setFocusableInTouc ...
- keepalived nginx 双机热备图文讲解
http://blog.csdn.net/wanglei_storage/article/details/51175418
- 抛出异常 exception
throw raise raise Exception.CreateFmt(sFileWithNoExt, [FileName]);
- java中定义的四种类加载器
1,Bootstrap ClassLoader 启动类加载器2,ExtClassLoader 扩展类加载器3,AppClassLoader 系统类加载器4,ClassLoader 类加 ...
- DirectX10安装路径自动生成DXSDK_DIR
DXSDK_DIR C:\Program Files (x86)\Microsoft DirectX SDK (February 2010)\
- 17_react脚手架应用分析
|-- index.html // 启动页(主页) |-- build //构建目录,遵循发布系统规范 | |-- index.html //静态页面 | |-- static //资源文件发布到cd ...
- python之 pendulum讲解
一,下载地址:https://pypi.python.org/pypi/pendulum 二,pendulum的一大优势是内嵌式取代Python的datetime类,可以轻易地将它整合进已有代码,并且 ...
- es6初级之箭头函数实现隔行变色
无论是使用哪种方式实现隔行变色的效果,它的思路都是一样的: 1.定义很多个div 2.给div 加背景 3.鼠标移动到div上时,当前div 背景变色 4.鼠标移出div时,当前div背景恢复 以上4 ...
- Emac
https://emacs-china.org/ 启动 console模式的emacs,$emacs -nw 学习参考: 1)<21天精通emacs> 2)Emacs常用命令简集. 3)& ...