将数字作为参数传递给可执行文件(使用ciaoc编译的Prolog代码)会生成错误

时间:2015-12-13 08:00:45

标签: prolog ciao-prolog

我需要将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)}

1 个答案:

答案 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