繁体   English   中英

在 Dr. Racket 中,如何以相反的顺序显示列表中的 2 个元素?

[英]In Dr. Racket, how would I display the 2 elements in a list in the opposite order?

我想编写一个函数,以相反的顺序在列表中显示 2 个元素。 到目前为止,这是我的代码:

(define (reverse-order list)
  (cons (rest list) (cons (first list) empty)))

出于某种原因,此代码不起作用:例如:如果我输入

 (reverse-order (cons 1 (cons 2 empty))) 

我想要的输出是

(cons 2 (cons 1 empty))

然而,相反,我得到

(cons (cons 2 empty) (cons 1 empty))

有关如何解决此代码的任何提示都将非常有帮助。

那是因为您要获取列表的rest ,即'(2) ,而不是第二个元素2 并且您不应该调用与同名内置过程冲突的参数list 试试这个:

(define (reverse-order lst)
  (cons (second lst)
        (cons (first lst)
              empty)))

或者更简单,现在您明白为什么调用参数list是个坏主意:

(define (reverse-order lst)
  (list (second lst) (first lst)))

或者只是使用内置的reverse程序:)

(define reverse-order reverse)

无论如何,它按预期工作:

(reverse-order '(1 2))
=> '(2 1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM