Scheme 如何解决因定义变量而产生的错误?
上面的程序是用scheme编写的,但我得到一个错误,说定义的上下文无效。这就是(定义compMove(random 3))。您的代码不是Scheme 根据您的要求,您只允许定义Scheme 如何解决因定义变量而产生的错误?,scheme,Scheme,上面的程序是用scheme编写的,但我得到一个错误,说定义的上下文无效。这就是(定义compMove(random 3))。您的代码不是Scheme 根据您的要求,您只允许定义顶级和lambda主体的第一个表达式、let、let*、let value、let*-value、let*-value、或let*表达式 此外,您还将两个表达式包装在括号中,好像这将构成一个块。没有。它将尝试做的是评估操作符,然后将结果作为一个过程调用。因为define是特殊的,所以它失败了。使用任何其他形式都可以。好的,
顶级和lambda
主体的第一个表达式、let
、let*
、let value
、let*-value
、let*-value
、或let*
表达式
此外,您还将两个表达式包装在括号中,好像这将构成一个块。没有。它将尝试做的是评估操作符,然后将结果作为一个过程调用。因为define
是特殊的,所以它失败了。使用任何其他形式都可以。好的,这是有道理的,但我这样做是为了使compMove的值发生变化。我认为通过调用函数可以工作。那么,每次compMove发生更改时,我怎么能让它这样呢?@JosephMenezes它是一个无用的绑定,因为您可以使用创建值的表达式作为display
:(display(random 3))
。如果你想要一个本地绑定,你应该看看let
我发现这个问题实际上是我的IDE中的一个bug,但是谢谢你的建议,因为它使我的程序看起来更可读。
(define while
(lambda (rounds)
(if (> rounds 0)
((define compMove (random 3)) (display compMove))
(while (- rounds 1))
)
)
)