2016-07-17 24 views
5

Nie rozumiem następującego fragmentu Prolog? Co oznacza ":_:"? Jaka jest różnica między ":=" i "="?Operator prologu "_: _" - znaczenie?

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

Dzięki :)

+0

Który system Prolog? –

+0

@PauloMoura SWI-Prolog – CyKon

Odpowiedz

5

Wydaje się to być kod XPCE. XPCE jest natywną biblioteką GUI zorientowaną obiektowo SWI-Prolog. Można znaleźć podręcznika w formacie PDF pod adresem:

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

Operator :=/2 służy do przypisania (patrz instrukcja dla szczegółów), podczas gdy =/2 to standardowy operator unifikacja Prolog.

Celem Point = point:_:Hits jest po prostu ujednolicenie zmiennej Point z terminem złożonym point:_:Hits. Może to być oczywiste, jeśli napiszesz ten termin w postaci kanonicznej:

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

Należy zauważyć, że termin ten używa standardowego operatora moduł :/2 dwukrotnie.

+0

Wielkie dzięki :) – CyKon

+0

naprawdę fajna składnia - dzięki! – CapelliC