Скажем, я хочу написать функцию, чтобы определить, является ли заданное целочисленное число простым, какую подпись типа использовать?
isPrime :: Int -> Bool
или
isPrime :: (Integral a) => a -> Bool
Какая разница? Есть ли какая-то особая причина выбора одного над другим?
Если да, то в каких ситуациях я должен использовать два соответственно?