结构化Prolog代码未运行

时间:2016-07-06 02:32:33

标签: prolog

我正在尝试在SWI-Prolog中运行来自http://www.dailyfreecode.com/code/prolog-find-factorial-given-number-3072.aspx的结构化代码:

?- start.
ERROR: toplevel: Undefined procedure: start/0 (DWIM could not correct goal)

但是有3"语法错误:运算符预期"在启动时它没有运行:

{{1}}

问题出在哪里?如何运行此类代码?

1 个答案:

答案 0 :(得分:0)

要将代码移植到Prolog,请移除predicates部分,将goal部分转换为标准initialization/1指令:

:- initialization(start).

还删除clauses部分标题。您还需要在子句主体(未测试)中移植一些调用:

start:-
    write('Enter non negative number = '),
    read(Num),
    Result = 1.0,
    find_factorial(Num,Result).

find_factorial(Num,Result):-
    Num > 0,
    NewResult = Num * Result,
    NewNum = Num - 1,
    find_factorial(NewNum,NewResult).

find_factorial(_,Result):-
    write('Factorial = '), write(Result), nl.

但请注意,此代码存在严重缺陷。例如。它将计算(因子)计算与计算值的输出混合。我把这些修正留给你了。