2016-04-26 192 views
-1

可以说我有包含参数的列表,我怎样才能显示它没有括号,例如:球拍如何从列表中删除括号和撇号?

(定义LST(列表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))) 

它返回不带括号的列表中,但带有错误信息...任何人都可以帮助我?另外请注意,即时通讯和拍子是我的第一个编程语言。欣赏所有答案!

回答

3

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

这是一个正确的版本:

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

需要注意的是此功能只打印在不带括号列表的第一级的元素,但如果一个元素是它印有括号的列表。

+0

很好的使用'when'。我没有看到它使用太多,我真的很喜欢这里。 – naomik