为什么我的函数返回的列表结果看起来很有趣?

Why does the list result returned by my function look funny?

(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).

据我所知,您的代码有效并给出了正确的输出。我猜您正在使用初级学生语言。使用 Beginning Student Language 时,列表 (2 4) 在 REPL 中表示为 (cons 2 (cons 4 '()));使用中级学生语言时,此相同列表在 REPL 中表示为 (list 2 4)。在 #lang racket 中,您会在 REPL 中看到它表示为 '(2 4)。在所有情况下,底层列表数据结构都是相同的;这只是列表的打印表示形式的问题。