2016-07-17 78 views
5

Non capisco il seguente frammento Prolog? Che cosa significa "":_:""? Qual è la differenza tra ":=" e "="?Operatore-Prolog "_: _" - significato?

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

Grazie :)

+0

Quale sistema Prolog? –

+0

@PauloMoura SWI-Prolog – CyKon

risposta

5

questo sembra essere il codice XPCE. XPCE è la libreria GUI orientata agli oggetti nativa SWI-Prolog. Si può trovare il suo manuale in formato PDF all'indirizzo:

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

L'operatore :=/2 viene utilizzato per l'assegnazione (vedere il manuale per i dettagli), mentre il =/2 è il Prolog operatore di unificazione standard.

L'obiettivo Point = point:_:Hits è semplicemente l'unificazione della variabile Point con il termine composto point:_:Hits. Può essere chiaro se si scrive questo termine in forma canonica:

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

Si noti che questo termine utilizza l'operatore modulo :/2 standard di due volte.

+0

Grazie mille :) – CyKon

+0

davvero una bella sintassi - grazie! – CapelliC