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?