【发布时间】:2020-03-03 21:24:42
【问题描述】:
我必须编写一个执行以下操作的方案函数:
定义一个名为 (rev p) 的 SCHEME 函数,它将一对作为参数并计算为
另一对与对 p 中的第一个和第二个元素以相反的顺序排列。例如,
( rev ( cons 1 2))
> (2 . 1)
这是我的代码:
(define (rev p)
(cond ((null? p) '())
(not (pair? (car p)) p)
(else (append (rev (cdr p)) (list (rev (car p))))
但是,当我测试它时,我的代码返回 (1 . 2),而它应该返回 (2 . 1)。
【问题讨论】:
-
从您提供的描述来看,您似乎只处理对而不是列表。
-
那么
(rev '(1 2 3)) ; ==> ((2 3) . 1)?
标签: scheme racket computer-science