Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scheme 如何解决因定义变量而产生的错误?_Scheme - Fatal编程技术网

Scheme 如何解决因定义变量而产生的错误?

Scheme 如何解决因定义变量而产生的错误?,scheme,Scheme,上面的程序是用scheme编写的,但我得到一个错误,说定义的上下文无效。这就是(定义compMove(random 3))。您的代码不是Scheme 根据您的要求,您只允许定义顶级和lambda主体的第一个表达式、let、let*、let value、let*-value、let*-value、或let*表达式 此外,您还将两个表达式包装在括号中,好像这将构成一个块。没有。它将尝试做的是评估操作符,然后将结果作为一个过程调用。因为define是特殊的,所以它失败了。使用任何其他形式都可以。好的,

上面的程序是用scheme编写的,但我得到一个错误,说定义的上下文无效。这就是(定义compMove(random 3))。

您的代码不是Scheme

根据您的要求,您只允许定义
顶级和
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))
        )
      )
  )