假设我有一个包含参数的列表,如何在没有括号的情况下显示它,例如:
(定义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)))
它会返回没有括号的列表,但会显示错误消息......有谁可以帮我这个?另请注意,我最新的球拍和球拍是我的第一种编程语言。感谢所有答案!
答案 0 :(得分:3)
错误是由于您总是在if
之后递归调用该函数,即使列表为空也是如此。
这是一个正确的版本:
(define (clean-list lst)
(when (cons? lst)
(display (car lst))
(display #\space)
(clean-list (cdr lst))))
请注意,此函数仅打印列表第一级中没有括号的元素,但如果元素是列表,则使用括号打印。