Prolog可执行文件在代码中写入字符串
我正在尝试创建以下Prolog代码的可执行文件:Prolog可执行文件在代码中写入字符串,prolog,native,Prolog,Native,我正在尝试创建以下Prolog代码的可执行文件: item(one, 50, 40). item(two, 80, 70). item(three, 100, 55). item(four, 50, 45). maxMeanStudy:- findall(M,item(_,M,_),L), max_member(Max,L), write("Maximum mean value:"), % this line is not printed properly.
item(one, 50, 40).
item(two, 80, 70).
item(three, 100, 55).
item(four, 50, 45).
maxMeanStudy:-
findall(M,item(_,M,_),L),
max_member(Max,L),
write("Maximum mean value:"), % this line is not printed properly.
writeln(Max),!.
main:-
maxMeanStudy.
我正在使用以下命令创建本页所述的可执行文件:
创建的可执行文件不以字母形式写入字符串“最大平均值”,而是以代码形式写入:
$ ./myprog
[77,97,120,105,109,117,109,32,109,101,97,110,32,118,97,108,117,101,58]100
我在Linux(32位)上工作。我怎样才能解决这个问题。感谢您的帮助。在几乎所有此类情况下,结果是:
最大平均值(Ms,M)
表明它自己。而是不是比混合小写字母和大写字母
更具可读性
?- maximum_mean_value(Ms, M).
M = ... . % result is automatically shown by the toplevel!
格式/2
格式化输出。例如:
maximum_mean_value(Ms, M),
format("Maximum mean value: ~d\n", [M])
注意format/2
如何使包含其他术语的文本输出变得容易看起来
双引号
标志已恢复为代码
。因此,您的快速解决方案可能是(a)在文件开头包含指令,:-set_prolog_标志(双引号,字符串)。
,或者(b)对字符串使用单引号,使其仅为原子(这样您就不必担心双引号的解释)。当然,最好的方法是(c)注意@mat给你的答案。它起作用了。在我的代码中,哪些是“纯”和“不纯”代码?你能详细说明一下吗?更多信息请参见。如果谓词在终端上产生输出,那么它是不纯的(您不能在程序中对终端输出进行推理)。如果您的谓词只对几种可能性的特定解作出承诺,那么它是不纯净的(其他逻辑解是不纯净的)。如果您的谓词应用了诸如var/1
之类的元逻辑测试,那么它是不纯的。为了从逻辑编程中真正受益,请停留在纯子集中:它使您的程序非常通用。您可以在各个方向使用这样的谓词,例如:?-maximum\u mean\u value(Ms,M)。
。那么字符呢?
maximum_mean_value(Ms, M),
format("Maximum mean value: ~d\n", [M])