realfrac fromintegral frominteger from haskell types casting integer int

fromintegral - haskell double



Haskell Convertir entero a Int? (2)

¿Es posible convertir un número entero en un Int? La otra dirección es posible: intoInteger. Sé que Integer puede almacenar valores más grandes, pero a veces se necesita una conversación para usar funciones std-lib. Intenté (n :: Int) y otras muestras de código que encontré, pero nada funciona.

takeN :: Integer -> [a] -> [a] takeN n l = take n l


Uso de fromIntegral

takeN :: Integer -> [a] -> [a] takeN n l = take (fromIntegral n) l

Tenga en cuenta que fromIntegral :: (Integral a, Num b) => a -> b , por lo que a veces necesitará una anotación de tipo adicional (por ej., (fromIntegral n :: Int) ), pero generalmente el compilador puede inferir qué tipo desea.

En el caso especial de su ejemplo, en Data.List hay genericTake :: (Integral i) => i -> [a] -> [a] , que hace lo mismo que take pero con un tipo más general.


también está fromInteger ( fromIntegral es solo fromInteger . toInteger , pero dado que tienes un Integer todos modos, puedes omitir la segunda parte)