我认为我可以将 fromEnum 用于 a -> Int 但我如何为 a -> Float 使用它。我需要我的变量是一个 Float 才能让我的函数工作,但我不知道如何转换它?我已经阅读了 Prelude,但看不到任何可行的方法。对不起,如果这是一个非常愚蠢的问题,但我才刚刚开始。
最佳答案
这取决于a是什么。如果 a 是 Integral 的实例,例如 Int
或 Integer
, 您可以使用
fromIntegral :: (Integral a, Num b) => a -> b
如果 a 是 Real 的实例,例如 Rational 或 Double,则可以使用
realToFrac :: (Real a, Fractional b) => a -> b
fromIntegral
Integer 和 Rational 也有特殊的函数和 realToFrac
基于:fromInteger :: (Num a) => Integer -> a
fromRational :: (Fractional a) => Rational -> a
如果 a 是 Enum 的实例(因此您可以使用
fromEnum
,如您所说),则 fromIntegral . fromEnum
应该这样做。 fromEnum
将 a 转换为 Int
,然后 fromIntegral
转换自 Int
至 Float
, 所以 fromIntegral . fromEnum
将 a 转换为 Float
.
关于haskell - 如何转换 a -> Float?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8776823/