Prolog-operator "_:_" - 意思?

Prolog-operator "_:_" - meaning?

我不明白以下序言片段? ":_:" 是什么意思? ":=""=" 有什么区别?

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).

谢谢 :)

这似乎是 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 模块运算符两次。