Объясните, пожалуйста, код на прологе

nod(integer,integer,integer)
clauses
nod(N,M,M):-N mod M=0,!.
nod(N,M,R):-M1=N mod M,N1=M,nod(N1,M1,R).
goal
nod(99,60,J).

А что именно непонятно?

Тут рекурсивный поиск наибольшего общего делителя.

Так что надо разобраться с алгоритмом и по какому-нибудь учебнику с синтаксисом пролога.

Алгоритм Евклида на Python — Расширенный или модифицированный для нахождения НОД
Нахождение НОД (наибольшего общего делителя) с помощью рекурсивной функции