首页 文章

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

提问于
浏览
-1

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

(定义lst(list 1 2 3))(显示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 回答

  • 3

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

    这是一个正确的版本:

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

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

相关问题