SLIME中执行Common Lisp文件写入代码报错,求可行解决方案
在SLIME中调用Lisp文件追加函数失败的解决方法
问题场景
通过clisp test.lisp命令运行以下代码时,能正常向test.c文件追加文本:
;;contents of test.lisp file (defun wtof (filename text) "Append TEXT to the file specified by FILENAME." (with-open-file (stream filename :direction :output :element-type 'character :if-does-not-exist :create :if-exists :append) (write-string text stream))) (wtof "test.c" "/* hello world */")
但在SLIME中单独输入(wtof "test.c" "/* hello world */")调用函数时,出现错误无法写入文件。
可行,解决步骤如下:
- 确保函数已加载到SLIME环境:SLIME的REPL是独立运行环境,直接调用函数前必须先加载
wtof的定义。有两种方式:- 打开
test.lisp文件后,按C-c C-k快捷键(SLIME加载文件的默认快捷键),将整个文件代码加载到当前会话。 - 在SLIME的REPL中逐行输入
wtof函数的定义并执行。
- 打开
- 核对文件路径:SLIME的工作目录可能和直接运行
clisp时不同,建议调用函数时使用绝对路径,比如(wtof "/home/yourusername/test.c" "/* hello world */"),避免相对路径导致找不到目标文件。 - 检查文件权限:如果SLIME运行的用户权限与直接运行
clisp时不一致,可能没有目标文件的追加写入权限。可查看目标文件的权限设置,确保SLIME运行用户拥有相应权限。
内容的提问来源于stack exchange,提问作者nadirkazan
相关产品推荐
相关产品推荐

