这似乎是ECL实现中的一个错误 - 或者由于标准中的一些细节:
> (probe-file #P"/usr")
#P"/usr/"
> (probe-file #P"/usr/")
#P"/usr/"
> (probe-file #P"/")
NIL
> (probe-file #P"//")
NIL
再举一个案例:
> (probe-file #P"/.")
#P"/"
更新,FWIW,SBCL做了我所期望的:
* (probe-file #P"/")
#P"/"
这是我正在测试的修复程序的提交消息(希望这能回答问题——这确实是一个错误):
Unixfsys:删除coerce_to_posix_filename
这是围绕cygwin和mingw中的错误的解决方法(它们是 已修复),当目录名称以"/"结尾时。此修复程序 在根目录上调用的探测器文件引入了额外的错误(它 在所有平台上返回 nil)。
原文评论:
这会将路径名指示符转换为名称字符串,其中 目录不以斜杠"/"结尾的特殊性,因为 并非所有POSIX平台(尤其是Windows)都支持此功能。
错误参考:
https://sourceforge.net/p/mingw-w64/patches/34/
修复 #351。