你如何在Scheme中逐一显示字母?

时间:2017-09-26 01:25:03

标签: scheme

我是Scheme语言的新手,目前正在使用Simply 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 个答案:

答案 0 :(得分:1)

如何将字符串作为输入传递?在这种情况下,不需要使用变量参数,请尝试:

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

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