尝试使用时如何修复DrRacket中的"application: not a procedure;"参考函数



我正在尝试在方案中制作井字游戏,当尝试引用变量时,我得到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;

问题是:

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

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

(vector-set! row spot 1)

但是,如果您真的打算spot成为一个过程,那么应该这样声明它:

(define (spot) (read-line))

相关内容

最新更新