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

4

1 回答 1

1

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

于 2020-12-22T16:04:00.330 回答