funcion - ord haskell
Conversión de entero a doble en Haskell (1)
La forma habitual de convertir un Int
en un Double
es utilizar fromIntegral
, que tiene el tipo (Integral a, Num b) => a -> b
. Esto significa que convierte un tipo Integral
( Int
y Integer
) a cualquier tipo numérico b
, del cual Double
es una instancia.
Parece que su caso quiere convertir un Double
en un Int
, por lo que recomendaría floor
, pero tendrá que asegurarse de que su entrada sea un Double
. Para esto, puedes usar la función fromIntegral
con
take 52 $ iterate (floor . (* 1.1) . fromIntegral) 100
Sin embargo, esto le dará resultados inexactos, ya que está truncando en cada paso. Sugeriría hacer
take 52 $ map floor $ iterate (* 1.1) $ fromIntegral 100
Quiero aumentar el crecimiento en un año, pero no me importan los puntos decimales, así que intenté
take 52 $ iterate (floor . (*1.1)) 100
El problema es que el tipo de (floor . (*1.1))
es Double -> Integer
, mientras que el tipo esperado por el primer argumento de iteración es a -> a
.
Intenté un par de enfoques, pero terminé atándome en nudos.
¿Cuál es la solución preferida para mantener los tipos numéricos consistentes en todas las aplicaciones de función?