Por que um tipo explícito NÃO é necessário para a aritmética básica do Prelude?
Eu fuirespondendo a uma pergunta e escrevi um código para fazer o trabalho.
isPrime :: Int -> Bool
isPrime n = primeCheck n $ floor $ sqrt $ (fromIntegral n :: Double)
Eu assumi que a assinatura de tipo explícita seria necessária, conforme explicado na minha resposta. Então eu verifiquei tanto no GHC quanto no GHCi e descobri quenão precisa do tipo explícito para a conversão, apesarfloor
esqrt
sendo polimórfico. eu seiGHCi faz algum tipo padrão, mas não conheço ninguém no GHC. Obviamente ambosFloat
eDouble
haveria opções válidas aqui, por que o GHC escolhe um sobre o outro? De que tipo é padrão e por que (presumivelmente) o GHC é padrão nesse caso?