2016-07-17 9 views
5

Ich verstehe das folgende Prolog-Snippet nicht? Was bedeutet ":_:"? Was ist der Unterschied zwischen ":=" und "="?Prolog-Operator "_: _" - Bedeutung?

game_to_problematic_points(Game,Pid,Hid) :- 
    Point := Game/point, 
    Pid := [email protected], 
    Point = point:_:Hits. 
    append(_, [Hit1,_|_], Hits), 
    hit_out(Hit1), 
    Hid := [email protected] 
hit_out(Hit) :- 
    X := [email protected], 
    Y := [email protected], 
    (X > 23.77/2 
    ; X < -23.77/2 
    ; Y > 10.97/2 
    ; Y < -10.97/2). 

Thanks :)

+0

Welches Prolog-System? –

+0

@PauloMoura SWI-Prolog – CyKon

Antwort

5

Dies scheint XPCE Code. XPCE ist die native objektorientierte SWI-Prolog-GUI-Bibliothek.

http://www.swi-prolog.org/download/xpce/doc/userguide/userguide.pdf

Der :=/2 Operator für die Zuordnung verwendet wird (siehe Handbuch), während die =/2 sind die Standard-Prolog Vereinigung Betreiber: Sie können ihr Handbuch im PDF-Format finden. Das Ziel Point = point:_:Hits ist einfach die Vereinheitlichung der Variablen Point mit dem zusammengesetzten Term point:_:Hits. Es dürfte klar sein, wenn Sie diesen Begriff in kanonischer Form schreiben:

?- write_canonical(point:_:Hits). 
:(point,:(_,_)) 
true. 

Beachten Sie, dass dieser Begriff den Standard :/2 Modul Operator zweimal verwendet.

+0

Vielen Dank :) – CyKon

+0

wirklich eine nette Syntax - danke! – CapelliC