Я новичок в yap
(и с Prolog вообще), и я не могу понять, как получить текущий каталог.Как получить текущий рабочий каталог
На самом деле, я не могу разобраться в документации:
working_directory(-CurDir,?NextDir)
Fetch текущего каталога на
CurDir
. ЕслиNextDir
привязан к атому, сделайте его значение текущим рабочим каталогом.
Я не понимаю, что подразумевается под "наCurDir
".
Кроме того, я не могу найти документацию по -
и ?
, предшествующую формальным аргументам. (Я думаю, что ?
означает, что аргумент не является обязательным, но я не имею ни малейшего представления о -
.)
В нижней строке я не могу понять, как использовать эту информацию для запроса текущего рабочего каталога.
Я перепробовал много слепых догадок, и всегда получают либо no.
или ошибку в ответе. Например .:
$ yap
% Restoring file /usr/lib/Yap/startup.yss
YAP 6.2.2 (x86_64-linux): Sat Nov 23 17:51:47 UTC 2013
?- working_directory(CurDir).
no
?- working_directory(-CurDir).
no
?- working_directory().
SYNTAX ERROR at user, near line 7:
working_directory(
<==== HERE ====>
).
?- working_directory.
no
?- CurDir.
ERROR!!
INSTANTIATION ERROR- meta_call(_131099): expected bound value
?- -CurDir.
no
?- working_directory('.').
no
?- working_directory(-'.').
no
У меня есть два вопроса:
- Где я могу найти мета-документации по
-
,?
и+
, которые появляются перед формальных аргументов в документацииyap
? - Как получить текущий рабочий каталог?
UPDATE: Ниже также не:
$ yap
% Restoring file /usr/lib/Yap/startup.yss
YAP 6.2.2 (x86_64-linux): Sat Nov 23 17:51:47 UTC 2013
?- working_directory(X, '').
no
?- working_directory(X, X).
no
Чтобы запросить текущий каталог без его изменения, обычной идиомой является 'work_directory (X, X)'. –
@PauloMoura Aha - это имеет смысл, любопытное. –
Спасибо за указатель на документы SWI-Prolog. Я попробовал как «work_directory (X, '') .', так и' work_directory (X, X) .', но оба они приводят к 'no.'. (Я обновил свой пост соответственно.) – kjo