2011-04-28 49 views
1

在線學習練習/教程之後,在運行我的簡單Prolog程序時遇到以下錯誤。在Prolog中反轉列表時發生運行時錯誤

testReverse :- 
    transImage(reserseList,'imageIN.pgm','imageOUT.pgm'). 

transImage(R,In,Out) :- 
    read_pgm(In,PGM), 
    transf_pgm(R,PGM,PGM2), 
    write_pgm(Out,PGM2). 

transf_pgm(R, pgm(A,B,H,W,M,L), pgm(A,B,H,W,M,L2)) :- 
    Term =.. [R,L,L2], 
    call(Term). 

reserseList([],[]). 
reserseList([X|R],Reversed):- 
    reserseList(R, RevList), 
    append(RevList,[X],Reversed). 

和運行時錯誤時獲得的SWI-Prolog是

10 ?- testReverse 
| . 
ERROR: read_pgm/2: Undefined procedure: fread/4 
ERROR: However, there are definitions for: 
ERROR:   read/1 
ERROR:   read/2 

任何想法,爲什麼?對於prolog來說,這是非常新的,從網上教程的字面意思是2天,所以請提前接受我的道歉。如果我向您提供有關您的答案的進一步問題。謝謝。

回答

3

根據您未定義fread/4的錯誤消息。
另一方面,你給read_pgm/2的代碼也沒有定義(除非我失去了一些東西)。

可能的原因:
定義在其他文件中。
fread/4未在您的prolog實現中實現。
你沒有加載fread/4的庫。

我認爲你應該發佈代碼的其餘部分以及你使用的prolog實現。
如果你使用swi-prolog,我不認爲有fread/4。

相關問題