Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stream 序言错误:“;预期流,但找到'$流'&引用;_Stream_Prolog_Sicstus Prolog - Fatal编程技术网

Stream 序言错误:“;预期流,但找到'$流'&引用;

Stream 序言错误:“;预期流,但找到'$流'&引用;,stream,prolog,sicstus-prolog,Stream,Prolog,Sicstus Prolog,我正在为一个大学作业编写一个程序,目前我正试图在一个文件上写一些关于绑架程序的否认,作为完整性约束,但我遇到了一些问题 我的任务谓词如下所示: append_denials(_, []). append_denials(File, [fail(_, Den)|Tail]) :- open(File, append, Stream), write(Stream, 'ic :- '), write_denials(Stream, Den), write(St

我正在为一个大学作业编写一个程序,目前我正试图在一个文件上写一些关于绑架程序的否认,作为完整性约束,但我遇到了一些问题

我的任务谓词如下所示:

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)])]).
问题是,如果我将它们放在一个单独的文件中(使用这些谓词,没有其他内容),它们似乎可以工作,但是当在程序中使用时(3000行Prolog,我不能在这里发布…),我会得到以下错误:

! Domain error in argument 1 of write/2
! expected stream, but found '$stream'(139681177337584)
! goal:  write('$stream'(139681177337584),\+broken_indicator(_116))
% source_info
我检查过了,我可以确认谓词没有被覆盖。。。我真的不明白这怎么会发生

任何关于我可能出错的地方的建议或线索都是非常受欢迎的

非常感谢,,
David.

“$stream”(139681177337584)实际上看起来很像一条流,可能是一条封闭的流。。。我认为您正在经历意外的回溯(即写拒绝失败怎么办?)。无论如何,关闭/重新打开文件是没有意义的。非常感谢你,你的评论让我开始修补剪切,在写拒绝的基本案例中添加一个。现在,我将研究如何避免打开/重新打开该文件。非常感谢!