Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.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中的列表创建列表_Lisp_Common Lisp - Fatal编程技术网

无法使用Lisp中的列表创建列表

无法使用Lisp中的列表创建列表,lisp,common-lisp,Lisp,Common Lisp,我正在尝试使用以下命令创建包含内部列表的列表,但该命令无效: (名单1、2、3(名单a、b、c)) ***-SYSTEM::READ-EVAL-PRINT:变量B没有值 我不确定这里哪一个是变量B 编辑:我重新启动了clisp并重试。这一次它是一个变量 $ 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

我正在尝试使用以下命令创建包含内部列表的列表,但该命令无效:

(名单1、2、3(名单a、b、c))

***-SYSTEM::READ-EVAL-PRINT:变量B没有值

我不确定这里哪一个是变量B

编辑:我重新启动了clisp并重试。这一次它是一个变量

$ 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:

您需要先分配变量,然后才能使用它们

(defvar a 10)
(defvar b 20)
(defvar c 30)
(list 1 2 3 (list a b c))
这应返回:

(1 2 3 (10 20 30))
当您使用
LET
时,它会创建局部变量,它们的作用域就是
LET
的主体

(let ((a 1) (b 2) (c 3))
  (list 1 2 3 (list a b c)))
=> (1 2 3 (1 2 3))

事实上,我只使用了这个comand,它不起作用——请看我上面编辑的问题。我也试过使用更改后的括号,并错误地将其张贴在这里。您是否设置了变量
a
b
c
?否。这一定是原因。
LET
用于创建局部变量,而不是全局变量。我现在得到了大部分。谢谢。你为什么不像我之前建议的那样,使用Lisp介绍,而不是随机进行实验呢?这是调试像这样奇怪的东西的提示:先用简单的东西试试。如果
(列表1 2 3(列表a b c))
给您带来问题,请先尝试
(列表1 2 3)
(列表a b c)
。如果某个简单的东西起作用,那么就建立复杂的表达式。如果您设置变量的操作似乎不起作用,请了解有关设置变量的更多信息(因为它似乎不起作用)。。。
(let ((a 1) (b 2) (c 3))
  (list 1 2 3 (list a b c)))
=> (1 2 3 (1 2 3))