Clozure Common Lisp — file-exists-p не определен

Я получаю сообщение об ошибке «Неопределенная функция FILE-EXISTS-P, вызванная с аргументами…» при вызове (file-exists-p «somepath») в Clozure Common Lisp, но везде, где я смотрю, эта функция должна быть доступна. Я даже вижу это при использовании M-x кстати.

Я использую LispBox для Windows.

Есть ли у кого-нибудь идеи о том, что может быть не так, или, может быть, предложить процесс, с помощью которого я могу попытаться понять это?


person Denis    schedule 17.12.2018    source источник
comment
M-x apropos показывает вам функции Emacs Lisp, а не функции Common Lisp (которые вы найдете с помощью (apropos "...") в REPL или эквивалентных командах Slime). Также вам следует рассмотреть возможность использования Portacle вместо LispBox (который не обновлялся годами).   -  person jkiiski    schedule 17.12.2018
comment
FILE-EXISTS-P не является стандартной функцией Common Lisp или специальной функцией Clozure Common Lisp. Вы можете использовать стандартную функцию PROBE-FILE (см. руководство), чтобы проверить, существует ли файл.   -  person Renzo    schedule 17.12.2018
comment
Спасибо! Я рассмотрю Портакл. Теперь я вижу, что я искал не в том месте - PROBE-FILE работает. @Renzo - я думаю, что ваш комментарий - лучший ответ, но, поскольку это комментарий, я не могу пометить его как таковой.   -  person Denis    schedule 17.12.2018


Ответы (1)


FILE-EXISTS-P не является стандартной функцией Common Lisp или специальной функцией Clozure Common Lisp.

Вместо этого вы можете использовать стандартную функцию PROBE-FILE (см. руководство).), чтобы проверить, существует ли файл:

CL-USER> (probe-file "not-existant-file.lisp")
NIL
CL-USER> (probe-file "/Users/myname/temp.lisp")
#P"/Users/myname/temp.lisp"

Обратите внимание, что в стандарте не определен результат применения функции к каталогу, в то время как реализация CCL (по крайней мере, в некоторых системах) также правильно проверяет, существует ли каталог:

CL-USER> (probe-file "/Users/myname/")
#P"/Users/myname/"
person Renzo    schedule 17.12.2018
comment
Также есть uiop:probe-file*. Он работает с файлами и каталогами, и, поскольку uiop является частью asdf, вероятность того, что он доступен, довольно высока. - person Pascal; 03.05.2019