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)