今天重新拿起了SICP,准备继续之前被The Little Schemer打断的计划。
今天重新实现了下第一章的习题16,还重新实现了那个测试工具。
习题代码:
(define square
(lambda (n)
(* n n)))
(define fast-expt
(lambda (a n ex)
(cond
((zero? a) 0)
((zero? n) ex)
((even? n) (fast-expt (square a) (/ n 2) ex))
(else (fast-expt a (- n 1) (* ex a))))))
测试工具代码(和之前比,变化是如果测试失败会打出实际结果):
(define testN
(lambda (func test-cases)
(cond
((null? test-cases) '())
(else (map (lambda (it)
(let ((v (apply func (car it)))) (if (eq? v (car (cdr it))) #t v))) test-cases)))))
测试用例:
(testN fast-expt '(
((0 0 1) 0)
((2 0 1) 1)
((2 1 1) 2)
((1 2 1) 1)
((2 3 1) 8)
((2 5 1) 32)
((2 10 1) 1024)
)
)
测试结果:
'(#t #t #t #t #t #t #t)
分享到:
相关推荐
sicp in python 中文版 sicp in python 中文版 sicp in python 中文版 !!!download>>>https://github.com/wizardforcel/sicp-py-zh
《SICP 2.2.4 节:图形语言》是计算机科学经典教材《结构与解释程序》(Structure and Interpretation of Computer Programs)中的一个重要章节,它深入介绍了如何利用编程来创建图形,以及如何设计和理解复杂的计算...
SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版
Python提供了`lambda`表达式、`map()`、`filter()`和`reduce()`等工具,这些都与Lisp的特性相呼应,可用于实现SICP中的算法。 书中的第一部分主要关注基本的计算概念,如组合器、求值器、环境模型和控制结构。这些...
用于控制实现Philips SICP协议的Philips显示的API客户端。 使用跨平台的.NET Core构建。 创建该项目是为了通过Philips SICP协议管理Philips 10BDL3051T显示器。 该协议定义了大约50个不同的命令,但是仅实现了10...
书中的习题设计巧妙,旨在引导读者深入思考编程语言的内部机制以及如何设计和实现自己的编程环境。 《SICP解题集》中可能包含以下关键知识点: 1. **函数式编程**:SICP强调使用函数而不是改变状态来解决问题,这...
- **表处理**:SICP介绍了基于链表的表结构,包括表的创建、访问和修改操作,以及表操作的高效实现,如尾递归优化。 4. **抽象和模式**: - **过程抽象**:通过定义新的过程来封装计算,降低复杂性,提高代码复用...
在SICP中,函数不仅仅是计算的工具,它们也可以拥有自己的状态,这通常通过闭包实现。这部分可能要求读者理解函数作用域、变量绑定以及如何构建和使用闭包。 4. **1.29~1.30.ss**: 这两个文件可能涵盖的是宏和元...
《SICP:多语言实现的示例与解决方案》 SICP,全称为《Structure and Interpretation of Computer Programs》,是一本计算机科学领域的经典教材,由Harold Abelson和Gerald Jay Sussman合著,它以其深入浅出地探讨...
SICP-Python版本
SICP 使用的scheme解释器 以前叫DrScheme
本书名为《a_book_sicp_py》,是一本以Python语言为基础介绍设计模式和计算机科学基础的书籍。根据描述和部分内容,可以提炼出以下知识点: 1. 编程语言的重要性:在计算机科学的宽泛领域中,编程语言扮演着至关...
通过学习SICP,学生将能够理解如何设计、分析和实现复杂的程序系统,培养出强大的抽象思维能力。 课程内容涵盖了以下几个关键知识点: 1. **基本编程概念**:包括变量、数据结构(如列表、树)、控制结构(条件...
6. **对象和模拟**:通过引入面向对象的概念,SICP展示了如何用过程来模拟对象和消息传递,从而实现模块化和封装。 7. **组合硬件和软件**:最后,SICP引导读者思考如何将软件与硬件结合,构建实际的计算机系统,如...
Python SICP epub版本,很适合学习抽象的思想,用Python版本比lisp更实用
- **1.2.4 幂运算**(Exponentiation):介绍幂运算的不同实现方法。 - **1.2.5** - **第二章:通过数据构建抽象**(Building Abstractions with Data) - 探讨如何使用数据结构来组织和操作信息,包括列表、树...
标题中的"PyPI 官网下载 | sicp-0.0.1b102.dev4.tar.gz"指的是从Python的官方包索引(Python Package Index,简称PyPI)上下载的一个名为"sicp"的软件包的版本号为0.0.1b102.dev4的压缩文件,其格式是tar.gz。...
### 结构与解释计算机程序 (SICP) #### 标题和描述中的核心知识点解析 **《结构与解释计算机程序》(Structure and Interpretation of Computer Programs, SICP)** 是由哈佛大学的 Harold Abelson 和麻省理工学院...
sicp in python 中文版 sicp in python 中文版 sicp in python 中文版 download : https://github.com/wizardforcel/sicp-py-zh