2017-02-22 142 views
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. 如何获取当前工作目录?

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 

回答

0
  1. 元文档可以在SWI-Prolog的手册here被发现,但将是雅浦岛相同(couldn”在Yap手册中查找符号一目了然)。

  2. 当前工作目录(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将之前的工作目录。

+1

要查询当前目录而不更改它,通常的习惯用语是'working_directory(X,X)'。 –

+0

@PauloMoura阿哈 - 这很有道理,还挺。 –

+0

感谢您使用SWI-Prolog文档的指针。我尝试了'working_directory(X,'').'和'working_directory(X,X).',但它们都导致了'no.'。 (我相应地更新了我的帖子。) – kjo