lisp-无法在Windows上加载.lisp文件
我正在Windows 7上使用clisp 2.49。我启动命令窗口并导航到带有.lisp文件的目录。然后我运行clisp并尝试加载该文件。我得到一个错误,上面没有名为C的包。在本例中,C指驱动器C,因为填充的绝对路径以C:/../../../lispFile开始。我也尝试过在Allegro CL上加载该文件,但得到了相同的错误 下面是错误消息的屏幕上限 编辑: 我已确定导致错误消息的代码行为:lisp-无法在Windows上加载.lisp文件,windows,common-lisp,clisp,Windows,Common Lisp,Clisp,我正在Windows 7上使用clisp 2.49。我启动命令窗口并导航到带有.lisp文件的目录。然后我运行clisp并尝试加载该文件。我得到一个错误,上面没有名为C的包。在本例中,C指驱动器C,因为填充的绝对路径以C:/../../../lispFile开始。我也尝试过在Allegro CL上加载该文件,但得到了相同的错误 下面是错误消息的屏幕上限 编辑: 我已确定导致错误消息的代码行为: (defparameter c:\\workdir\\aima\\ (truename "~/publ
(defparameter c:\\workdir\\aima\\ (truename "~/public_html/code/");
"The root directory where the code is stored.")
我不确定语法是否不正确
解决:我发现我做错了什么。我被指示修改lisp文件,但我误解了它,并替换了行中错误的部分。这是正确的代码行
(defparameter *aima-root* (truename "c:\\workdir\\aima\\");
"The root directory where the code is stored.")
请注意,还可以在加载期间计算目录:
(defparameter *aima-root*
(when *load-pathname*
(make-pathname :defaults *load-pathname*
:name nil
:type nil))
"The root directory where the code is stored.")
*load pathname*是一个标准的公共Lisp变量,将在加载期间绑定到与load函数使用的路径名类似的路径名。因此,它指向正在加载的文件。然后,我们构造一个新的路径名,默认值由加载路径名、无名称和无路径名类型组件填充
因此,您可以基于该计算设置*aima root*变量,并且无论何时加载该文件,都将计算正确的目录
在加载期间绑定了两个常见的Lisp变量*load pathname*和*load truename*。后者是文件的实际物理路径名。通常我更喜欢使用*load pathname*,它可能与物理路径名结构无关。这里的代码使用函数truename,因此可能需要使用*load truename*。常见的Lisp实现通常通过存储路径名来记录函数和其他内容的定义位置。使用路径名查找文件有时比使用truename更容易,因为它可以使用逻辑路径名进行与设备/机器无关的间接寻址。这看起来更像是您的代码试图使用不存在的包C:something。。。。你能发布文件的内容吗?接下来,你将查看回溯:bt,看看它发生在哪里。请发布一个自我回答,而不是将已解决的问题放在标题中,并将你的答案放在问题中: