如何获得当前工作目录
问题描述:
我是新的yap
(以及一般的Prolog),我不知道如何获取当前目录。如何获得当前工作目录
事实上,我不能让文档的感觉:
working_directory(-CurDir,?NextDir)
在
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
答
元文档可以在SWI-Prolog的手册here被发现,但将是雅浦岛相同(couldn”在Yap手册中查找符号一目了然)。
当前工作目录(CWD)可以检索像这样:
working_directory(X,'').
...这意味着统一X与CWD并将其更改为无(反直觉的,我知道,但我没能成功),或:
working_directory(X,X).
...由@PauloMoura,指出这意味着ü用CWD来说服X并将其改为自己(这对我来说似乎也很奇怪,但c'est la vie)。
CWD是可以改变的,像这样:
working_directory(X,'Some New Directory').
...这将统一X与CWD那么CWD更改为“一些新的目录”,因此X将之前的工作目录。
要查询当前目录而不更改它,通常的习惯用语是'working_directory(X,X)'。 –
@PauloMoura阿哈 - 这很有道理,还挺。 –
感谢您使用SWI-Prolog文档的指针。我尝试了'working_directory(X,'').'和'working_directory(X,X).',但它们都导致了'no.'。 (我相应地更新了我的帖子。) – kjo