Как реализовать полностью декларативный mtak в miniKanren - PullRequest
1 голос
/ 15 апреля 2019

Я бы хотел запустить полностью декларативный mtak в miniKaren, который в Прологе выглядит следующим образом.

fun(X, Y, Z, A) :-
   X =< Y, !,
   Z = A.
fun(X, Y, Z, A) :-
   X1 is X-1,
   fun(X1, Y, Z, A1),
   Y1 is Y-1,
   fun(Y1, Z, X, A2),
   Z1 is Z-1,
   fun(Z1, X, Y, A3),
   fun(A1, A2, A3, A).

Но вышесказанное имеет разрез. Решение не должно использовать какой-либо разрез, и решение должно содержать логические переменные и некоторую библиотеку чисел, чтобы его можно было запустить в обратном направлении.

...