无法在 Lisp 中创建带有列表的列表
Cannot create a list with list in Lisp
我正在尝试使用以下命令创建一个包含内部列表的列表,但它不起作用:
(list 1 2 3 (list a b c))
*** - SYSTEM::READ-EVAL-PRINT:变量 B 没有值
我不确定这里哪个是变量B。
编辑:我重新启动了 clisp 并再次尝试。这次是变量A!
$ clisp
i i i i i i i ooooo o ooooooo ooooo ooooo
I I I I I I I 8 8 8 8 8 o 8 8
I \ `+' / I 8 8 8 8 8 8
\ `-+-' / 8 8 8 ooooo 8oooo
`-__|__-' 8 8 8 8 8
| 8 o 8 8 o 8 8
------+------ ooooo 8oooooo ooo8ooo ooooo 8
Welcome to GNU CLISP 2.49 (2010-07-07) <http://clisp.cons.org/>
Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2000
Copyright (c) Sam Steingold, Bruno Haible 2001-2010
Type :h and hit Enter for context help.
[1]> (list 1 2 3 (list a b c))
*** - SYSTEM::READ-EVAL-PRINT: variable A has no value
The following restarts are available:
我尝试设置变量a、b、c的值,但还是不行。
[5]> (let ((a 1)(b 2)(c 3)))
NIL
[6]> (list 1 2 3 (list a b c))
*** - SYSTEM::READ-EVAL-PRINT: variable A has no value
The following restarts are available:
USE-VALUE :R1 Input a value to be used instead of A.
STORE-VALUE :R2 Input a new value for A.
ABORT :R3 Abort main loop
Break 1 [7]>
您需要先分配变量才能使用它们。
(defvar a 10)
(defvar b 20)
(defvar c 30)
(list 1 2 3 (list a b c))
这应该return:
(1 2 3 (10 20 30))
当您使用 LET
时,它会创建 local 变量,并且它们的范围只是 LET
.
的主体
(let ((a 1) (b 2) (c 3))
(list 1 2 3 (list a b c)))
=> (1 2 3 (1 2 3))
我正在尝试使用以下命令创建一个包含内部列表的列表,但它不起作用:
(list 1 2 3 (list a b c))
*** - SYSTEM::READ-EVAL-PRINT:变量 B 没有值
我不确定这里哪个是变量B。
编辑:我重新启动了 clisp 并再次尝试。这次是变量A!
$ clisp
i i i i i i i ooooo o ooooooo ooooo ooooo
I I I I I I I 8 8 8 8 8 o 8 8
I \ `+' / I 8 8 8 8 8 8
\ `-+-' / 8 8 8 ooooo 8oooo
`-__|__-' 8 8 8 8 8
| 8 o 8 8 o 8 8
------+------ ooooo 8oooooo ooo8ooo ooooo 8
Welcome to GNU CLISP 2.49 (2010-07-07) <http://clisp.cons.org/>
Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2000
Copyright (c) Sam Steingold, Bruno Haible 2001-2010
Type :h and hit Enter for context help.
[1]> (list 1 2 3 (list a b c))
*** - SYSTEM::READ-EVAL-PRINT: variable A has no value
The following restarts are available:
我尝试设置变量a、b、c的值,但还是不行。
[5]> (let ((a 1)(b 2)(c 3)))
NIL
[6]> (list 1 2 3 (list a b c))
*** - SYSTEM::READ-EVAL-PRINT: variable A has no value
The following restarts are available:
USE-VALUE :R1 Input a value to be used instead of A.
STORE-VALUE :R2 Input a new value for A.
ABORT :R3 Abort main loop
Break 1 [7]>
您需要先分配变量才能使用它们。
(defvar a 10)
(defvar b 20)
(defvar c 30)
(list 1 2 3 (list a b c))
这应该return:
(1 2 3 (10 20 30))
当您使用 LET
时,它会创建 local 变量,并且它们的范围只是 LET
.
(let ((a 1) (b 2) (c 3))
(list 1 2 3 (list a b c)))
=> (1 2 3 (1 2 3))