如何获取当前工作目录

时间:2017-02-22 17:31:59

标签: prolog yap

我是-rw-r--r-- 1 oracle dba 455132 Feb 21 14:14 CC_T2_PERSON.txt CC_T2_PERSON.txt secure copied to ccfilesvr -rw-r--r-- 1 oracle dba 107314 Feb 21 14:14 CC_T2_CAMPUSBOX.txt CC_T2_CAMPUSBOX.txt secure copied to ccfilesvr Number of files to transfer into ccfilesvr: **0** No files to upload. 的新人(以及一般的Prolog),我无法弄清楚如何获取当前目录。

事实上,我无法理解文档:

  

yap

     

获取working_directory(-CurDir,?NextDir)处的当前目录。如果CurDir绑定到一个atom,则将其值设为当前工作目录。

我不明白" NextDir"的含义是什么。

另外,我无法在正式参数之前的CurDir-找到文档。 (我想?意味着参数是可选的,但我对?没有任何线索。)

最重要的是,我无法弄清楚如何使用此信息来查询当前的工作目录。

我尝试了很多盲目的猜测,并且总是得到-或错误的回应。 E.g:

no.

我有两个问题:

  1. 在哪里可以找到$ 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 文档中正式参数前面出现的-?+的元文档?
  2. 如何获取当前工作目录?
  3. 更新:以下内容也失败了:

    yap

1 个答案:

答案 0 :(得分:0)

  1. 元文档可以在SWI-Prolog手册here中找到,但对于Yap也是一样的(在Yap手册中找不到任何参考文献,一目了然)

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

  3. working_directory(X,'').

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

    working_directory(X,X).

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

    CWD可以像这样改变:

    working_directory(X,'Some New Directory').
    

    ...将CW与CWD统一,然后将CWD更改为“某些新目录”,因此X将成为以前的工作目录。