Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Lisp 为什么plant1一直是零?_Lisp - Fatal编程技术网

Lisp 为什么plant1一直是零?

Lisp 为什么plant1一直是零?,lisp,Lisp,请问,有人能解释一下为什么make array对plant1没有影响吗 让plant1 setq plant1生成数组'4 4打印plant1 setf AREF plant1 0 1 零 错误:尝试对非数组的NIL执行数组操作。 [条件类型:类型错误] 对此持保留态度,因为我主要处理Scheme,而不是CommonLisp 让我们使用以下语法: (let ((var1 2) (var2 7)) (+ var1 var2)) 如果只想定义一个变量 (let ((var1 2)) ...);;R

请问,有人能解释一下为什么make array对plant1没有影响吗

让plant1 setq plant1生成数组'4 4打印plant1 setf AREF plant1 0 1

零 错误:尝试对非数组的NIL执行数组操作。 [条件类型:类型错误]


对此持保留态度,因为我主要处理Scheme,而不是CommonLisp

让我们使用以下语法:

(let ((var1 2) (var2 7)) (+ var1 var2))
如果只想定义一个变量

(let ((var1 2)) ...);;Replace ... with whatever operations you do in that scope.

据我所知,您从未在let中定义plant1,加上语法错误,因此,一旦您尝试执行set,它就不起作用。当然,我可能完全错了,所以只能将此作为一种尝试,直到知道他们在说什么的人加入进来。

对此持保留态度,因为我主要处理的是Scheme,而不是Common Lisp

(LET (plant1) ((setq plant1 (make-array '(4 4))) (print plant1) (setf (AREF PLANT1 0 0) 1)))
让我们使用以下语法:

(let ((var1 2) (var2 7)) (+ var1 var2))
如果只想定义一个变量

(let ((var1 2)) ...);;Replace ... with whatever operations you do in that scope.
据我所知,您从未在let中定义plant1,加上语法错误,因此,一旦您尝试执行set,它就不起作用。当然,我可能完全错了,所以只能把这当作一种尝试,直到有人知道他们在说什么

(LET (plant1) ((setq plant1 (make-array '(4 4))) (print plant1) (setf (AREF PLANT1 0 0) 1)))
第一条规则:格式化代码

(LET (plant1)
  ((setq plant1 (make-array '(4 4)))
   (print plant1)
   (setf (AREF PLANT1 0 0) 1)))
括号太多了。let的语法有一个代码体,它是一系列形式。序列周围有括号,这是错误的。阅读LET的公共Lisp HyperSpec条目。它提到了语法

使用:

这与:

(LET ((plant1 (make-array '(4 4))))
   (print plant1)
   (setf (AREF PLANT1 0 0) 1))
第一条规则:格式化代码

(LET (plant1)
  ((setq plant1 (make-array '(4 4)))
   (print plant1)
   (setf (AREF PLANT1 0 0) 1)))
括号太多了。let的语法有一个代码体,它是一系列形式。序列周围有括号,这是错误的。阅读LET的公共Lisp HyperSpec条目。它提到了语法

使用:

这与:

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