2017-02-22 144 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