2017-09-26 51 views
1

我是Scheme語言的新手,目前正在使用Simply Scheme教材。我與一些程序嘗試,和我注意到,當我做這些功能(如下圖),它打印的話在「口頭」的時尚:你如何在Scheme中逐一顯示字母?

(define (display-all sep . vs) 
    (for-each display (insert-between sep vs))) 

(define (insert-between v xs) 
    (cond ((null? xs) xs) 
     ((null? (cdr xs)) xs) 
     (else (cons (car xs) 
        (cons v (insert-between v (cdr xs))))))) 

(從How to 'display' multiple parameters in R5RS Scheme使用的代碼)

然後指揮:

(display-all "" 'w 'o 'w " " 't 'h 'i 's " " 'i 's " " 'c 'o 'o 'l)

字母被一個印刷一個人,彷彿有人在打字他們。我想知道是否有任何方法可以讓我更容易輸入這些單詞來發言,而不是逐字輸入。我打算有這樣的事情:

(define (speak . wds) 
    (...)) 

其中wds將是一個字符串。在上面的例子中,我希望它是這樣的:(speak "wow this is cool")並且返回"wow this is cool",但是每個字母都是一個一個顯示的。

非常感謝您的幫助!

回答

1

如何傳遞一個字符串作爲輸入?在這種情況下不需要使用可變參數,請嘗試以下操作:

(define (display-all sep vs) 
    (for-each display (insert-between sep (string->list vs)))) 

(display-all "" "wow this is cool")