Chapter 4 习题 (Exercises)
- 定义一个函数,接受一个平方数组(square array,一个相同维度的数组
(n n)
),并将它顺时针转 90 度。
> (quarter-turn #2A((a b) (c d)))
#2A((C A) (D B))
你会需要用到 361 页的 array-dimensions
。
- 阅读 368 页的
reduce
说明,然后用它来定义:
(a) copy-list
(b) reverse(针对列表)
- 定义一个结构来表示一棵树,其中每个节点包含某些数据及三个小孩。定义:
(a) 一个函数来复制这样的树(复制完的节点与本来的节点是不相等( `eql` )的)
(b) 一个函数,接受一个对象与这样的树,如果对象与树中各节点的其中一个字段相等时,返回真。
- 定义一个函数,接受一棵二叉搜索树,并返回由此树元素所组成的,一个由大至小排序的列表。
- 定义
bst-adjoin
。这个函数应与bst-insert
接受相同的参数,但应该只在对象不等于任何树中对象时将其插入。
勘误: bst-adjoin
的功能与 bst-insert
一模一样。
- 任何哈希表的内容可以由关联列表(assoc-list)来描述,其中列表的元素是
(k . v)
的形式,对应到哈希表中的每一个键值对。定义一个函数:
(a) 接受一个关联列表,并返回一个对应的哈希表。
(b) 接受一个哈希表,并返回一个对应的关联列表。
脚注
[1] | 一个简单数组大小是不可调整、元素也不可替换的,并不含有填充指针(fill-pointer)。数组缺省是简单的。简单向量是个一维的简单数组,可以含有任何类型的元素。 |
[2] | 在 ANSI Common Lisp 里,你可以给一个 :print-object 的关键字参数来取代,它只需要两个实参。也有一個宏叫做 print-unreadable-object ,能用则用,可以用 #<…> 的语法来显示对象。 |
当前内容版权归 readthedocs 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 readthedocs .