Racket如何从列表中删除括号和撇号?

时间:2016-04-26 15:54:21

标签: list racket

假设我有一个包含参数的列表,如何在没有括号的情况下显示它,例如:

(定义lst(list 1 2 3))(display lst)

- > (1 2 3)

但我希望它显示为:1 2 3

我的尝试:

(define (clean-list lst)
  (if
    (null? lst) (display (null))
    (display (car lst)))
  (display #\space)
  (clean-list (cdr lst)))

它会返回没有括号的列表,但会显示错误消息......有谁可以帮我这个?另请注意,我最新的球拍和球拍是我的第一种编程语言。感谢所有答案!

1 个答案:

答案 0 :(得分:3)

错误是由于您总是在if之后递归调用该函数,即使列表为空也是如此。

这是一个正确的版本:

(define (clean-list lst)
  (when (cons? lst)
    (display (car lst))
    (display #\space)
    (clean-list (cdr lst))))

请注意,此函数仅打印列表第一级中没有括号的元素,但如果元素是列表,则使用括号打印。