2016-04-26 253 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