如何解决为什么我的函数返回的列表结果看起来很有趣?
(define (evenList xs)
(cond
((null? xs) '())
((eq? (cdr xs) '()) '())
(else (cons (cadr xs) (evenList (cddr xs))))))
我正在使用此代码,但它没有按照我想要的方式创建列表。 (evenList (list 1 2 3 4))
在 REPL 中的计算结果为 (cons 2 (cons 4 '()))
,但我希望它类似于 (list 2 4)
。
解决方法
据我所知,您的代码可以正常工作并提供正确的输出。我猜您正在使用初级学生语言。当使用初学者语言时,列表 (2 4)
在 REPL 中表示为(cons 2 (cons 4 '()))
;当使用中级学生语言时,这个相同的列表在 REPL 中表示为 (list 2 4)
。在 #lang racket
中,您会看到它在 REPL 中表示为 '(2 4)
。在所有情况下,底层列表数据结构都是相同的;这只是列表的打印表示的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。