[英]How would I write a function in Dr. Racket which consumes a list of numbers and produces a new list of numbers which have been mapped?
[英]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.