Prolog 应该写入什么值才能正确运行代码?

Prolog 应该写入什么值才能正确运行代码?,prolog,eclipse-clp,Prolog,Eclipse Clp,应该写入什么值才能正确运行代码。我给出了任何数量,但没有看到任何输出 f(T, Y) :-Y is sqrt(abs(T)) + 5*T^3. main :- read(As), length(As, N), reverse(As , Rs), ( foreach(Ai , Rs), for(I, N - 1, 0, -1) do Bi is f(Ai), ( Bi > 400 -> printf("%w TOO

应该写入什么值才能正确运行代码。我给出了任何数量,但没有看到任何输出

f(T, Y) :-Y is sqrt(abs(T)) + 5*T^3.

main :-
    read(As),
    length(As, N), reverse(As , Rs),
    ( foreach(Ai , Rs), for(I, N - 1, 0,  -1) do
        Bi is f(Ai),
            ( Bi > 400  ->  printf("%w TOO  LARGE\n", I)
                ;
                printf("%w %w\n", [I, Bi])
            )
    ).

你的程序运行良好。也许您忘了用句号/句点终止数据输入

[eclipse 2]: main.                     % Invoke 'main' from the ECLiPSe prompt.
 [3,7,5,2].                            % Input the list, terminate with fullstop.
生成此输出

3 41.4142135623731
2 TOO  LARGE
1 TOO  LARGE
0 136.732050807569

Yes (0.00s cpu)
请记住,如果您使用一个原语来读取Prolog语法中的术语(read/1,2、read_term/1,2等),则每个术语都必须以句号结尾(尽管ECLiPSe也接受文件结尾)

顺便说一句,您通常只是将数据作为参数传递,而不是使用read/1。如果以这种方式更改代码,只需调用
main([3,7,5,2])。