Prolog错误:“预期流,但发现'$ stream'......”

时间:2013-07-29 17:10:04

标签: stream prolog sicstus-prolog

我正在研究一个大学任务的程序,目前我正试图从写在文件上作为完整性约束的诱导程序写一些否认,但我遇到了一些问题。

我对任务的预测看起来像这样:

append_denials(_, []).
append_denials(File, [fail(_, Den)|Tail]) :-
    open(File, append, Stream), 
    write(Stream, 'ic :- '),
    write_denials(Stream, Den),    
    write(Stream, '.'),
    nl(Stream),
    close(Stream),
    append_denials(File, Tail).

write_denials(Stream, [T]) :-
    write(Stream, T).                      
write_denials(Stream, [H|T]) :-
    write(Stream, H), 
    write(Stream, ', '),
    write_denials(Stream, T).

他们被问到这些问题:

append_denials('denyagain.txt', [fail([_C],[battery_flat(_C),lights_go_on(_C)]),fail([_D],[has_no_fuel(_D),\+fuel_indicator_empty(_D),\+broken_indicator(_D)])]).

问题是,如果我将它们放在一个单独的文件上(使用这些谓词而没有其他内容)它们似乎有用,但是在程序中使用时(Prolog的3000行我不能在这里发布...)我收到这个错误:

! Domain error in argument 1 of write/2
! expected stream, but found '$stream'(139681177337584)
! goal:  write('$stream'(139681177337584),\+broken_indicator(_116))
% source_info

我检查过,我可以确认谓词没有被覆盖......我真的不明白这是怎么回事。

非常欢迎任何有关我可能出错的建议或线索!

非常感谢, 大卫。

0 个答案:

没有答案