2013-07-25 46 views
1

我是Eclipse的新手,我一直在嘗試讀取文件流而沒有成功。我通常使用這種在SWI-Prolog的代碼是這樣的:如何在Eclipse CLP中讀取流?

read_until_stop(File, [L|Lines]) :- 
    read_line_to_codes(File, Codes), 
    Codes \= end_of_file, 
    atom_codes(L, Codes), 
    L \= stop, 
    !, 
    read_until_stop(File, Lines). 
read_until_stop(_, []). 

read_line_to_codes不可在Eclipse明顯。什麼是這個好的替代方案?

回答

1

正如Eclipse manual建議Eclipse的對應將

read_line(Stream, String) :- 
    read_string(Stream, end_of_line, _Length, String). 

read_string返回實際的字符串,而不是代碼列表中的差,即atom_codes不再是必要的:

?- read_string(input, end_of_line, Length, String). 
     abcdefghi 
     Length = 9 
     String = "abcdefghi" 
     yes. 
1

我認爲read_line_to_codes/2可以很容易地在ECLiPSe中實現,但爲了高效地重用可用的內置函數。你可以使用read_line/2。

嘗試定義

:- use_module(library(util)). 
read_line_to_codes(S, L) :- read_line(S, L). 

或直接致電read_line ...