1. 就是做一个滴答声的程序,让他输出foo bar foo bar这样的。但是 it crashes and says that prolog ran for too many inference steps.
下面是程序:
task(do_stuff, stuff).
stuff :- printf(foo), printf(bar), stuff.
怎么解决呢?
我这么写的:
task(do_stuff, stuff).
stuff :- printf(foo),pause(1),printf(bar),pause(1), continue_with(stuff).
2.还有一个问题
我现在有一个判断动作开始和正在进行的函数
start(monitor(P, Action), Succeed, Fail) :- P -> start(Action, Succeed, Fail) ; Fail.
still_running(monitor(P, Action), Completed, Fail) :- P -> still_running(Action, Completed, Fail) ; Fail.
我想再编一个ignore_failure(Action),假动作,进行动作,即使动作失败。
我这么写的:
start(monitor(P, Action), Succeed, Fail) :- P -> start(Action, Succeed, Fail) ; ignore_failure(Action, Succeed, Fail).
still_running(monitor(P, Action), Completed, Fail) :- P -> still_running(Action, Completed, Fail) ; ignore_failure(Action, Succeed, Fail).
ignore_failure(monitor(P, Action),Succeed, Fail) :- P ->run(Action,Succeed, Fail);Succeed.
不知道这么说可不可以理解......程序很大....就提取了一部分,能告诉我写的对错么?
下面是程序:
task(do_stuff, stuff).
stuff :- printf(foo), printf(bar), stuff.
怎么解决呢?
我这么写的:
task(do_stuff, stuff).
stuff :- printf(foo),pause(1),printf(bar),pause(1), continue_with(stuff).
2.还有一个问题
我现在有一个判断动作开始和正在进行的函数
start(monitor(P, Action), Succeed, Fail) :- P -> start(Action, Succeed, Fail) ; Fail.
still_running(monitor(P, Action), Completed, Fail) :- P -> still_running(Action, Completed, Fail) ; Fail.
我想再编一个ignore_failure(Action),假动作,进行动作,即使动作失败。
我这么写的:
start(monitor(P, Action), Succeed, Fail) :- P -> start(Action, Succeed, Fail) ; ignore_failure(Action, Succeed, Fail).
still_running(monitor(P, Action), Completed, Fail) :- P -> still_running(Action, Completed, Fail) ; ignore_failure(Action, Succeed, Fail).
ignore_failure(monitor(P, Action),Succeed, Fail) :- P ->run(Action,Succeed, Fail);Succeed.
不知道这么说可不可以理解......程序很大....就提取了一部分,能告诉我写的对错么?