我是新来的yap
(以及一般的Prolog),我不知道如何获得当前目录。
实际上,我无法理解文档:
working_directory(-CurDir,?NextDir)
在
CurDir
处获取当前目录。如果NextDir
绑定到原子,则将其值作为当前工作目录。
我不明白 at CurDir
&quot。
另外,我找不到在正式参数之前的-
和?
上的文档。(我猜?
意味着该参数是可选的,但我对-
不知道。)
底线,我不知道如何使用此信息查询当前工作目录。
我尝试了许多盲目的猜测,并且始终会得到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
文档中的正式参数前? - 如何获得当前的工作目录?
更新:以下内容也失败:
$ 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-Prok手册中找到元文档,但对于YAP来说是相同的(一目了然的YAP手册中找不到任何参考)。
<</p> -
当前工作目录(CWD)可以像这样检索:
working_directory(X,'').
...这意味着使用CWD统一X并将其更改为一无所有(我知道,但我没有做到),或者:
working_directory(X,X).
...正如@paulomoura指出的那样,这意味着用CWD统一X并将其更改为自己(对我来说似乎也很奇怪,但是C'est la Vie)。
CWD可以像这样更改:
working_directory(X,'Some New Directory').
...它将用CWD统一X,然后将CWD更改为"一些新目录",因此X将是以前的工作目录。