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)