是否可以使用未初始化的变量作为函数参数?对于作业,我必须使用CLOS编写语义网络系统,我的教授包括一个测试函数来测试我们的输出,其中一个指定:
(print (def-concept Human))
,
这意味着将参数Human传递给函数def-concept . 运行此测试功能时,我无法摆脱错误(在Allegro CL中):
Error: Attempt to take the value of the unbound variable
人类
由于这是测试中的第一个函数,因此在此之前不会初始化任何变量 . 有没有办法绕过传递未初始化的变量作为函数的参数?
提前致谢 .
1 回答
在常规Common Lisp函数调用中,不可能将unitialized值用作函数参数 . Common Lisp使用急切评估:在函数调用发生之前,参数表达式会减少到它们的值 .
我怀疑也许你并不完全理解家庭作业的结构 .
如果
def-concept
是一个需要一个值的函数,并且未定义human
,则根本无法测试该函数 .也许您需要定义变量
human
,然后加载包含(print (def-concept human))
的文件 .仅仅因为在同一文件中该表格之前没有任何内容并不意味着没有先前的评估是可能的 . 可以在该文件之前加载其他文件,也可以在侦听器中评估表单 .