Prolog 当从其他谓词调用时,谓词retruns false
我用Prolog编写了这个程序Prolog 当从其他谓词调用时,谓词retruns false,prolog,Prolog,我用Prolog编写了这个程序 su([], Counter, Counter). su([G|O], N, Count) :- Counter is Count + G, su(O,N,Counter). custom_sum(L,X) :- su(L,X,0). write_file :- write('Type list: '), read(L1), tell('file.txt'), write(L1), write(.), nl, told.
su([], Counter, Counter).
su([G|O], N, Count) :- Counter is Count + G, su(O,N,Counter).
custom_sum(L,X) :- su(L,X,0).
write_file :-
write('Type list: '),
read(L1),
tell('file.txt'),
write(L1), write(.), nl,
told.
read_file :-
write('Reading from file...'), nl,
see('file.txt'),
read(L),
seen,
write('sum of list elements: '),
custom_sum(L,Sum),
write(Sum), assertz(my_sum(Sum)).
当我尝试使用自定义金额时,一切都很好。与write_文件相同。但read_文件在“write('列表元素之和:')之后返回false。好像自定义金额在这里是个问题。出于好奇,我运行了你的代码,没有做任何更改。您的代码与我在Windows 10上使用SWI Prolog的系统上预期的一样工作
Welcome to SWI-Prolog (threaded, 64 bits, version 8.1.24)
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software.
Please run ?- license. for legal details.
For online help and background, visit https://www.swi-prolog.org
For built-in help, use ?- help(Topic). or ?- apropos(Word).
?- consult("C:/Users/Groot/Documents/Projects/Prolog/SO_question_180.pl").
true.
?- custom_sum([1,2,3],R).
R = 6.
?- working_directory(Working_directory,'C:/Users/Groot/Documents/Projects/Prolog/SO_question_180/').
Working_directory = 'c:/users/groot/documents/prolog/'.
?- working_directory(D,D).
D = 'c:/users/groot/documents/projects/prolog/so_question_180/'.
?- write_file.
Type list: [1,2,3].
true.
?- read_file.
Reading from file...
sum of list elements: 6
true.
?-
我唯一的猜测是您在提示时输入的列表不正确
它应该是[1,2,3]。
您需要[]
和结束期间
创建的
file.txt文件的内容
[1,2,3].
嗯。有趣。快速黑客永远存在(或至少40年以上)。当您在看到后立即写出L
时会发生什么?您使用的是哪种Prolog系统?SWI Prolog?@David Tonhofer它只是在输出上写L,没有任何输出ordinary@Guy来自Manjaro pacman Manager的编码器最新swi prolog可以显示swi prolog的版本。e、 g.我的是欢迎使用SWI Prolog(线程,64位,版本8.1.24)