资源介绍
图 6.1 实用函数
你可以藉由撰写实用函数,在你的程序里做到同样的事情。图 6.1 挑选了一套实用的函数。
前两个 single? 与 append1 函数,纳入的原因是要演示,即便是小程序也很有用。前一个
函数 single? 当参数是一个只有一个元素的列表时,返回真。
1
2
> (single? '(a))
T
而後一个函数 append1 和 cons 很像,但在列表後面新增一个元素,而不是在前面:
1
2
> (append1 '(a b c)'d)
(A B C D)
下一个实用函数是 map-int ,接受一个函数与整数 n ,并返回将函数应用至整数 0 到 n-1
的结果的列表。
这在测试的时候非常好用 (一个 Lisp 的优点之一是,互动环境让你轻松写出测试你程序的
程序)。如果我们只想要一个 0 到 9 的列表,我们可以:
1
2
> (map-int #'identity 10)
(0 1 2 3 4 5 6 7 8 9)
然而要是我们想要一个具有 10 个随机数的列表,每个数介於 0 至 99 之间(包含),我们
可以忽略参数并只要:
1
2
3
> (map-int #'(lambda (x) (random 100)
10)
(85 50 73 64 28 21 40 67 5 32)
map-int 的定义说明了 Lisp 构造一个列表的标准方法 (standard idiom)之一。我们创建
一个累积器 acc ,初始化是 nil ,并将之後的对象累积起来。当我们完成时,我们反转累积
器。 [1]
我们在 filter 中看到同样的方法 (idiom)。这个函数接受一个函数与一个列表,将函数应用
至列表元素上时,返回所有非 nil 元素:
- 上一篇: 解释了如-vtk用户手册
- 下一篇: 符号的结构-vtk用户手册