Um Integer guarda qualquer número, por maior que seja, até ao limite da memória da tua máquina, ao passo que um Int corresponde ao conjunto dos números inteiros positivos e negativos que se podem representar em 32 ou 64 bits (garantidamente, pelo menos, de -2^29 a 2^29).
Um Float corresponde ao conjunto dos números reais, limitado pela precisão do computador.
As operações definidas sobre números funcionam habitualmente com um tipo ou com o outro, mas não com ambos.
As funções para converter entre Float e Integer incluem, entre outras, toFloat, que converte Int/Integer em Float, e ceiling, que converte um Float num Int.
A conversão de um tipo inteiro (Int ou Integer) para qualquer outro tipo numérico é feita com a função fromIntegral.
O tipo de destino é inferido automaticamente.
Por exemplo:
n :: Integer
n = 6
x :: Float
x = fromIntegral n --> x = 6.0
m :: Int
m = 7
y :: Double
y = fromIntegral m --> y = 7.0
Fazes parte de uma organização de bombeiros composta por voluntários internacionais. Devido à natureza internacional da equipa, tem-se perdido tempo precioso nas últimas ocorrências a traduzir entre Fahrenheit e Celsius enquanto se estima a temperatura dentro dos edifícios em chamas. Para poupar tempo, e pessoas, decides criar um programa que converta automaticamente entre Fahrenheit e Celsius para a tua equipa internacional.
Implementa a função tempToC para converter uma temperatura Integer em Fahrenheit no seu equivalente Float em Celsius, arredondado à centésima mais próxima.
A temperatura em graus Celsius define-se como: T(°C) = (T(°F) - 32) / 1.8.
> tempToC 32
0.00
Implementa a função tempToF para converter uma temperatura Float em Celsius no seu equivalente em Fahrenheit.
Por razões de segurança, arredonda o resultado por excesso para o Integer imediatamente superior.
A temperatura em graus Fahrenheit define-se como: T(°F) = T(°C) × 1.8 + 32.
> tempToF 4
40
Inscreve-te no Exercism para aprenderes e dominares Haskell com 107 exercícios, e mentoria humana real, tudo grátis.