如何解决“应用程序:不是过程;”在尝试使用引用功能时在DrRacket中

时间:2019-10-01 19:11:25

标签: scheme racket

我正在尝试在方案中打井字游戏,当尝试引用变量时,我得到application: not a procedure;

(display "1 turn")
(define spot (read-line))
(vector-set! row
             (spot)
             1)
(print-gameboard) ; just a display function

如果给它一个向量,我希望这能将向量更改为1 0 0 0 0 0 0 0 0,但我刚得到application: not a procedure;

1 个答案:

答案 0 :(得分:1)

问题出在这里

(vector-set! row
             (spot) ; spot is not a procedure
             1)

变量spot只是您从REPL读取的值;不要用()包围值,这就是您在Scheme中调用过程的方式。只需将其传递:

(vector-set! row spot 1)

但是,如果您确实打算将spot设置为过程,则应该这样声明它:

(define (spot) (read-line))