如何在程序终止前使用Scheme的(read)函数输入?代码报错求助
修复Scheme读取输入时的“k is not bound”错误
你的代码里(lambda k (read))只是定义了一个匿名函数,既没有执行它,而且变量k仅属于这个匿名函数的局部作用域,后续的(write k)根本找不到这个变量,所以会报“k is not bound”。
修复方案1:使用define定义局部变量
(define (main) (write "Enter K: ") (define k (read)) ; 将read的结果绑定到k (write k))
修复方案2:使用let创建局部绑定
(define (main) (write "Enter K: ") (let ((k (read))) ; 在let的作用域内绑定k (write k)))
加载修复后的代码并调用(main),程序会输出“Enter K: ”,输入任意值后,会打印出你输入的内容,正常完成执行。
内容的提问来源于stack exchange,提问作者Guy 33344
相关产品推荐
相关产品推荐

