GENI的核心 -- 推理机(2)流程控制
1、细说fail、“!”与回溯
与其他语言相比,Prolog最大的特点,是它的回溯机制。
回溯机制,主要手段有2个,一是用谓词fail引发回溯,二是用特别谓词“!”(读作cut)取消回溯。
Prolog运用fail引发回溯,实现程序的循环,并运用“!”对回溯进行控制。
看一个典型示例:
FACTS f(integer) PREDICATES a() b() c() CLAUSES a():- write("------ a -------\n"), f(X), writef("%\n",X), fail. a():- write("a is sucsess."). %--------------------------------------------------------- b():- write("\n\n------- b -------\n"), f(X), writef("%\n",X), !, fail. b():- write("b is sucsess."). %--------------------------------------------------------- c():- write("\n\n------- c -------\n"), a(), b(), !, write("\