看到sicp的第2章,突然又想做做题了,一般我是有兴趣才做一下,
Exercise 2.4. Here is an alternative procedural representation of pairs. For this representation, verify that (car (cons x y)) yields x for any objects x and y.
(define (cons x y)
(lambda (m) (m x y)))
(define (car z)
(z (lambda (p q) p)))
What is the corresponding definition of cdr?
挺容易得到正确答案的,
(define (cdr z)
(z (lambda (p q) q))) 把p换成q就可以了,可以想通可费了点时间,呵呵
需要置换进去才知道是怎么回事,呵呵
以car为例
定义个 pair
(define x (cons 12 34))
当调用(car x) 的时候
置换进去,实际上就是
( (lambda (m) (m 12 34)) (lambda (p q) p))
继续,根据语法
(lambda (p q) p)就是前面 (lambda (m) (m 12 34))的参数了,
是参数就代入看看
函数体(m 12 34) 变为 ((lambda (p q) p) 12 34)
哈哈,12 34又变成(lambda (p q) p)的参数了,
结果 12就出来,绕口吧,^_^,无聊的时候做做题目挺开心的。
要是实际项目写这样的代码,有人读吗,
分享到:
相关推荐
### Scheme语言介绍与计算机科学基础 #### 一、标题与描述概述 - **标题**:“Learn Scheme” - **描述**:“Lisp is a perfect language. Hack language.” 从标题和描述中可以看出,本文档旨在引导读者学习...
Scheme-Lib是一个专门为Scheme编程语言设计的库,特别针对Android平台进行了优化和适配。Scheme是一种历史悠久、功能强大的Lisp方言,以其简洁的语法和强大的函数式编程特性著称。在Android平台上使用Scheme-Lib,...
3. **标准兼容性**:GoScheme通常会遵循R5RS或R6RS等Scheme标准,确保其与其他Scheme实现的兼容性,让开发者可以使用广泛认可的Scheme语言特性。 4. **可扩展性**:由于Go语言的并发支持和模块化设计,GoScheme可以...
这份参考手册按照章节结构组织,涵盖了Scheme语言的各个方面,包括但不限于特殊形式、等价谓词、数字处理、字符和字符串操作、列表管理、向量和位串的使用、杂项数据类型、关联数组、过程、环境、输入输出、操作系统...
### Scheme in Gambit教程概述与知识点详解 #### 引言 《A Tour of Scheme in Gambit》是...通过这份详尽的指南,读者不仅可以学习到如何在Gambit-C中使用Scheme语言,还能深入了解Scheme语言的核心概念和高级特性。
1. 教育领域:由于Lisp的简洁性和可读性,MIT-Scheme常被用作计算机科学教育的入门语言,帮助学生理解编程基本原理和函数式编程思想。 2. 科学计算:Lisp的灵活性使其在数值计算、符号计算等领域有独特优势,MIT-...
"scheme"指代这个项目是关于Scheme语言的,而"haskell"则表示它与Haskell语言紧密相关。重复的"HaskellHaskell"标签可能是无意的,但可以理解为强调Haskell平台的重要性。 **压缩包子文件的文件名称列表:** "husk...
Scala的设计目标是提高代码的可读性、安全性和可伸缩性,同时允许程序员利用多核处理器的优势进行并行处理。 在类型系统方面,Scala是一个强类型语言,它的类型系统在编译时进行严格检查,确保代码的安全性和一致性...
"Color scheme 汉化版.htm"可能是该工具的中文版本,使得中国用户能够更直观地理解和操作,避免语言障碍。 在实际设计中,配色不仅要考虑美学,还要考虑可读性和对比度,尤其是在网页设计中,颜色的选用会影响到...
声明式语言,如Html、XSLT、Scheme、Clojure、Haskell、SQL等,描述目标的性质,让电脑明确目标,而不是流程函数式编程是其一个子集。多范式语言,如C#、Lisp等,既可以支持传统命令式编程范式,又可以支持函数式...
4. **宏系统(Scheme)**:Scheme语言的宏系统允许在编译时进行代码生成,这对于构建复杂的表达式非常有用。 5. **反射(Reflection)**:在Java中,反射机制可能用于动态创建和执行参数表达式。 6. **元编程...
本书不仅适用于Scheme语言的初学者,同时也为高级用户提供了一个深入探索Scheme特性的平台。Scheme是一种简洁而功能强大的Lisp编程语言方言,以其精简的语法、函数式编程特性以及灵活的语法扩展机制而闻名。下面将...
《GNU Guile Scheme中的功能性React式游戏编程:深入探索guile-sly》 ...对于想要探索Scheme语言在游戏开发中的应用或者寻求不同寻常的编程体验的开发者来说,guile-sly无疑是一个值得研究的项目。
Scheme 是一种 Lisp 家族的编程语言,以其简洁的语法、强大的宏系统和递归特性著称。Cyclone 项目旨在提供一个既能满足学术研究又能用于实际开发的 Scheme 实现,它强调静态类型检查和内存安全性,以减少运行时错误...
R 语言的语法是来自 Scheme。R 语言的作者是 George Ross Ihaka,他是一名统计学家和奥克兰大学统计系的副教授。R 语言排名第十名,作者头发浓密度:100%。 Python Python 是一种广泛使用的高级编程语言,属于通用...
XSieve是一种创新的XML转换工具,它将XSLT(Extensible Stylesheet Language Transformations)的灵活性与Scheme编程语言的强大功能结合在一起。XSLT是一种广泛使用的标准,用于转换XML文档,以改变其结构、样式或...
这是一项关键任务,因为它确保团队成员之间的代码一致性、可读性和维护性。编码规范不仅包括变量命名规则、注释标准,还涵盖缩进、空格、换行等格式约定,以及更高级别的设计原则。 描述中的"Developing a coding ...
通过研究HS-Scheme的源代码,开发者不仅可以学习到Haskell的编程技巧,还能深入理解Scheme语言的内部工作原理以及解释器的设计和实现。这对于想要提升编程技能,特别是对编译器和解释器感兴趣的开发者来说,是一个...