我必须学习Scheme的基础来完成一个项目,但是我在构造while循环的等价物时遇到了一些困难。例如,在下面的代码中,我想让用户输入一个字符。如果字符是x,我想跳出循环。如果是任何其他字符,则会显示该字符,循环将继续进行下一次迭代。“While”循环在Scheme中跳过迭代
(define getUserChar (lambda()
(define ch)
(let loop()
(display "Enter character: ")
(set! ch (read-char))
(if (not (char=? ch #\x))
(begin
(display choice)
(loop)
)))))
这在技术上是可行的,但它会跳过迭代。例如:
Enter character: a
Enter character:
Enter character: s
我在第二次迭代期间无法输入字符。我似乎无法找出问题所在。任何帮助非常感谢。
在阅读输入时,我总是忘记那个细节。非常感谢您的帮助。 – Rob
@Robbeh我的荣幸!我用更习惯的解决方案更新了我的答案;) –