变量B在Lisp中未绑定

变量B在Lisp中未绑定,lisp,scope,Lisp,Scope,对不起,我的英语很差:) 我有一个口齿不清的问题。我在此处键入代码以sbcl * (define a 3) ; in: DEFINE A ; (DEFINE A 3) ; ; caught WARNING: ; undefined variable: A ; ; caught STYLE-WARNING: ; undefined function: DEFINE ; ; compilation unit finished ; Undefined function: ;

对不起,我的英语很差:) 我有一个口齿不清的问题。我在此处键入代码以sbcl

* (define a 3)

; in: DEFINE A
;     (DEFINE A 3)
; 
; caught WARNING:
;   undefined variable: A
; 
; caught STYLE-WARNING:
;   undefined function: DEFINE
; 
; compilation unit finished
;   Undefined function:
;     DEFINE
;   Undefined variable:
;     A
;   caught 1 WARNING condition
;   caught 1 STYLE-WARNING condition

debugger invoked on a UNBOUND-VARIABLE in thread #<THREAD
                                               "initial thread" RUNNING
                                                {10029211E1}>:
The variable A is unbound.

Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
 0: [ABORT] Exit debugger, returning to top level.
*(定义一个3)
; 在中:定义一个
;     (定义A 3)
; 
; 捕获警告:
;   未定义变量:A
; 
; 警告:
;   未定义的函数:定义
; 
; 编译单元已完成
;   未定义的函数:
;     定义
;   未定义变量:
;     A.
;   捕获1个警告条件
;   捕捉到1个警告状态
在线程#中的未绑定变量上调用调试器:
变量A未绑定。
键入“帮助”以获取调试器帮助,或键入(SB-EXT:QUIT)以退出SBCL。
重新启动(可通过数字或可能的缩写名称调用):
0:[中止]退出调试器,返回顶层。

有人给我帮助吗?

您使用DEFUN定义函数:

(defun a () 3)
在您的例子中,您试图使用参数A调用函数DEFINE。。。这当然是未定义的

更一般地说,您可以向函数提供参数:

请注意,Scheme是1-lisp(函数和变量的名称空间相同),而SBCL和所有常见的lisp实现一样,是2-lisp(函数和变量的名称空间不同)

因此,在Scheme
(define foo 3)
中定义了一个常量,而
(define foo(lambda()3))
定义了一个常量函数。在公共Lisp中,定义常量是

(defconstant foo 3)

SICP使用Scheme,一种Lisp方言。SBCL实现了另一种Lisp方言Common Lisp。我认为您需要使用一个方案实现。这对我从记忆中工作来说很合适。
()
表示函数不接受任何参数。已解决!原因是我使用sbcl,但编写了方案代码,:P,谢谢,是的,我假设您打算将方案转换为Common Lisp!很高兴我能帮忙,至少。非常感谢:),链接对我很有用
(defconstant foo 3)