我不明白以下Prolog片段?
":_:"
是什么意思? ":="
和"="
之间有什么区别?
game_to_problematic_points(Game,Pid,Hid) :-
Point := Game/point,
Pid := Point@id,
Point = point:_:Hits.
append(_, [Hit1,_|_], Hits),
hit_out(Hit1),
Hid := Hit1@id.
hit_out(Hit) :-
X := Hit@x,
Y := Hit@y,
( X > 23.77 / 2
; X < -23.77 / 2
; Y > 10.97 / 2
; Y < -10.97 / 2).
谢谢:)
答案 0 :(得分:5)
这似乎是XPCE代码。 XPCE是本机SWI-Prolog面向对象的GUI库。您可以在以下网址找到PDF格式的手册:
http://www.swi-prolog.org/download/xpce/doc/userguide/userguide.pdf
:=/2
运算符用于赋值(有关详细信息,请参阅指南),而=/2
是标准的Prolog统一运算符。
目标Point = point:_:Hits
只是变量Point
与复合词point:_:Hits
的统一。如果你以规范形式写这个术语可能很清楚:
?- write_canonical(point:_:Hits).
:(point,:(_,_))
true.
请注意,此术语使用标准:/2
模块运算符两次。