Я пытаюсь создать функцию модуля в haskell, используя примитивные рекурсивные функции.Я знаю, что это возможно (потому что оно есть в списке примеров функций в Википедии)
И я знаю, как я мог бы логически сделать это тоже ... Но я просто не могу реализовать это!
IE, логика (не примитивная рекурсия или 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);
}
Но я просто не могу реализоватьэто с помощью примитивных рекурсивных функций.Я думаю, что я не могу сделать, это логика . Я думаю, чтобы действительно решить мою проблему, мне нужна какая-то определенная логика, такая как (опять же не haskel)
reduce(a, b)
= a >= b -> a-b
otherwise x
Если бы кто-нибудь мог помочь мне с какой-либо частью этого, я был бы очень признателен, спасибо
Edit :: Я подумал о потенциальном определении функции модуля с использованием деления, то есть mod (a, b) = a- (a / b) * b, но так как моя примитивная рекурсивная функция для деления основана на модуле, я не могу этого сделать, ха-ха