0

我是新手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

我有两个问题:

  1. 我在哪里可以找到关于 、 和 的元文档,这些元文档-出现?+文档中的正式参数前面yap
  2. 如何获取当前工作目录?

更新:以下也失败:

$ 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
4

1 回答 1

0
  1. 元文档可以在此处的 SWI-Prolog 手册中找到,但对于 Yap 来说是相同的(在 Yap 手册中一目了然地找不到任何符号参考)。

  2. 当前工作目录(CWD)可以这样检索:

working_directory(X,'').

...这意味着将 X 与 CWD 统一并将其更改为空(违反直觉,我知道,但我没有做到),或者:

working_directory(X,X).

...正如@PauloMoura 所指出的,这意味着将X 与CWD 统一并将其更改为自身(这对我来说也很奇怪,但c'est la vie)。

CWD 可以这样改变:

working_directory(X,'Some New Directory').

...这会将 X 与 CWD 统一,然后将 CWD 更改为“某个新目录”,因此 X 将是以前的工作目录。

于 2017-02-22T18:57:07.090 回答