Я пытаюсь создать функцию modulus в haskell, используя примитивные рекурсивные функции. Я знаю, что это возможно (потому что это есть в списке примеров функций в википедии)
И я знаю, как я логически должен это сделать... Но я просто не могу это реализовать!
То есть, логика есть (не примитивная рекурсия или haskell)
function mod(a, b){
while(a > b)
a -= b
return a;
}
Которую я могу определить с помощью рекурсии (опять же не haskel)
function mod(a, b){
if(a < b) return a;
return mod(a - b, b);
}
Но я просто не могу реализовать ее с помощью примитивных рекурсивных функций. Я не могу реализовать логику a
Я думаю, чтобы действительно решить мою проблему, мне нужна какая-то определенная логика, такая как (опять же не haskel)
reduce(a, b)
= a >= b -> a-b
otherwise x
Если кто-то может помочь мне с любой частью этого, я буду очень признателен, спасибо
Edit:: Я думал потенциально определить функцию модуля, используя деление, т.е. mod(a, b) = a - (a/b) * b, но так как моя примитивная рекурсивная функция для деления полагается на modulo, я не могу этого сделать haha