Подтвердить что ты не робот

No toFloat в Haskell

Интересно, есть ли функция, которая преобразует рациональные типы в Float (Rational a = > a → Float).

Я пробовал hoogling, но ничего не нашел.

4b9b3361

Ответ 1

В Haskell вы не конвертируете, а из. См. fromRational.

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

Если вам нужна функция Rational -> Float, вы можете определить ее как

toFloat x = fromRational x :: Float

Ответ 3

Существует также fromIntegral для преобразования Int и Integer в любой экземпляр Num.

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

value :: Int
value = 4

newValue = foo (fromIntegral value)

Ответ 4

Обратите внимание, что Rational - это тип, а не тип, поэтому Rational a => a не имеет смысла. Вместо этого попробуйте hoogling Rational → Float.