parse funcion fromintegral frominteger float convertir convert haskell numbers

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?