来源:readthedocs
浏览 449
扫码
分享
2020-12-10 07:59:53
Chapter 6 练习 (Exercises)
- 定义一个
tokens
版本 (67 页),接受 :test
与 :start
参数,缺省分别是 #'constituent
与 0
。(译注: 67 页在 4.5 小节) - 定义一个
bin-search
(60 页)的版本,接受 :key
, :test
, start
与 end
参数,有着一般的意义与缺省值。(译注: 60 页在 4.1 小节) - 定义一个函数,接受任何数目的参数,并返回传入的参数。
- 修改
most
函数 (105 页),使其返回 2 个数值,一个列表中最高分的两个元素。(译注: 105 页在 6.4 小节) - 用
filter
(105 页) 来定义 remove-if
(没有关键字)。(译注: 105 页在 6.4 小节) - 定义一个函数,接受一个参数丶一个数字,并返回目前传入参数中最大的那个。
- 定义一个函数,接受一个参数丶一个数字,若传入参数比上个参数大时,返回真。函数第一次调用时应返回
nil
。 - 假设
expensive
是一个接受一个参数的函数,一个介于 0 至 100 的整数(包含 100),返回一个耗时的计算结果。定义一个函数 frugal
来返回同样的答案,但仅在没见过传入参数时调用 expensive
。 - 定义一个像是
apply
的函数,但在任何数字印出前,缺省用 8 进制印出。
脚注
[1] | 在这个情况下, nreverse (在 222 页描述)和 reverse 做一样的事情,但更有效率。 |
[2] | “闭包”这个名字是早期的 Lisp 方言流传而来。它是从闭包需要在动态作用域里实现的方式衍生而来。 |
[3] | 以前的 ANSI Common Lisp, compile 的第一个参数也不能是一个已经编译好的函数。 |