在Haskell没有toFloat

时间:2011-12-21 10:44:56

标签: haskell

我想知道是否有一个函数将有理类型转换为Float(Rational a => a - > Float)。

我试过了hoogling,却一无所获。

4 个答案:

答案 0 :(得分:24)

在Haskell中,您不会将转换为,而是将转换为。请参阅fromRational

threeHalves :: Ratio Integer
threeHalves = 3 % 2
sqrt threeHalves -- Fails
sqrt $ fromRational threeHalves -- Succeeds

如果您需要Rational -> Float功能,可以将其定义为

toFloat x = fromRational x :: Float

答案 1 :(得分:3)

答案 2 :(得分:3)

还有fromIntegralIntInteger转换为Num的任何实例。

foo :: Float -> Float
foo x = x+1

value :: Int
value = 4

newValue = foo (fromIntegral value)

答案 3 :(得分:2)

请注意,Rational是一种类型,而不是类型类,因此Rational a => a没有意义。请尝试用Rational -> Float代替。