我需要将Prolog代码编译成可读取两个参数的可执行文件(一个是文本字符串,另一个是数字)
%test.pl:
main([A,N]) :-
Z is 2 * N,
write(A), nl,
write(Z), nl.
使用Ciao解释器我得到:
?- main([hi,5]).
hi
10
但是使用ciaoc编译时运行相同的代码会产生以下错误:
~ $ ciaoc test.pl
~ $ ./test hi 5
{ERROR: No handle found for thrown error error(type_error(evaluable,5),arithmetic:is/2-2)}
答案 0 :(得分:0)
我找到的解决方案是将数字转换为ascii代码并返回到数字:
%test.pl
main([A,N]) :-
atom_codes(N, Code), % find ascii code for N
number_codes(X, Code), % find number from ascii code
Z is 2 * X,
write(A), nl,
write(Z), nl.
已编译的可执行文件不再生成错误:
~ $ ciaoc test.pl
~ $ ./test hi 5
hi
10