如何停止多次执行 prolog 目标?
我有一个事实和一个目标,如下所示:
disconnected.
join :- disconnected, time(T), send(T).
一旦该目标执行,它应该使断开连接为假,从而不再执行。我是 Prolog 新手,所以我有点卡住了。我确信这确实很简单,但目前无法弄清楚。有什么想法吗?
I have a fact and a goal like below:
disconnected.
join :- disconnected, time(T), send(T).
Once this goal executes it should make disconnected false and thus not execute again. I am new to Prolog so I am a bit stuck. I am sure it's something really simple but can't figure it out at the moment. Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
assert
或retract
来更改已知事实。或者您可以使用全局变量。我不确定这有多标准。最简单的方法是使用两个参数声明您的
join
:表示当前状态的输入参数和表示新状态的输出参数。You might use
assert
orretract
to change the known facts. Or you might use global variables. I am not sure how standard that is.The easiest would be to declare your
join
with two parameters: input parameter that signifies the current state, and an output parameter signifying the new state.