2

是否可以使用未初始化的变量作为函数参数?对于一个作业,我必须使用 CLOS 编写一个语义网络系统,我的教授包含了一个测试函数来测试我们的输出,其中一个指定:

(print (def-concept Human)),

这意味着将参数 Human 传递给函数 def-concept。运行此测试功能时,我无法摆脱错误(在 Allegro CL 中):

Error: Attempt to take the value of the unbound variable人类'。

由于这是测试中的第一个函数,因此在此之前没有初始化任何变量。有没有办法绕过将未初始化的变量作为函数的参数传递?

提前致谢。

4

1 回答 1

4

在常规的 Common Lisp 函数调用中,不能使用未初始化的值作为函数参数。Common Lisp 使用急切求值:在函数调用发生之前,参数表达式被简化为它们的值。

我怀疑你可能并不完全理解家庭作业的结构。

如果def-concept是一个需要一个值human且未定义的函数,则您根本无法测试该函数。

也许您应该定义变量human,然后加载包含(print (def-concept human)).

仅仅因为在同一个文件中该表单之前没有任何内容并不意味着不可能进行先前的评估。可以在该文件之前加载其他文件,或者在侦听器中评估表单。

于 2012-03-08T18:33:17.920 回答