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?

questionAnswers(2)

yourAnswerToTheQuestion