在线学习练习/教程后,我在运行简单的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天,所以请事先接受我的道歉如果我向你提出有关你的答案的进一步问题。谢谢。
答案 0 :(得分:3)
根据你没有定义fread / 4的错误信息。
另一方面,你给的read_pgm / 2代码也没有定义(除非我遗漏了什么)。
我认为您应该发布剩余的代码以及您使用的prolog实现 如果你使用swi-prolog,我不认为有fread / 4。