为什么plant1保持NIL?

ait*_*zos 1 lisp

请问,有人可以解释为什么"make-array"对plant1没有影响吗?

(LET(plant1)((setq plant1(make-array'(4 4)))(print plant1)(setf(AREF PLANT1 0 0)1)))

NIL错误:尝试在非数组的NIL上执行数组操作.[条件类型:TYPE-ERROR]

Rai*_*wig 5

(LET (plant1) ((setq plant1 (make-array '(4 4))) (print plant1) (setf (AREF PLANT1 0 0) 1)))
Run Code Online (Sandbox Code Playgroud)

第一条规则:格式化代码.

(LET (plant1)
  ((setq plant1 (make-array '(4 4)))
   (print plant1)
   (setf (AREF PLANT1 0 0) 1)))
Run Code Online (Sandbox Code Playgroud)

括号太多了.let的语法有一个代码体,它是一系列形式.序列周围有括号,这是错误的.阅读LET的Common Lisp HyperSpec条目.它提到了语法.

使用:

(LET (plant1)
   (setq plant1 (make-array '(4 4)))
   (print plant1)
   (setf (AREF PLANT1 0 0) 1))
Run Code Online (Sandbox Code Playgroud)

这与以下相同:

(LET ((plant1 (make-array '(4 4))))
   (print plant1)
   (setf (AREF PLANT1 0 0) 1))
Run Code Online (Sandbox Code Playgroud)