-
NumDecimals -
- Since:
-
7.8.1
Разрешает использование научной записи, заимствованной из синтаксиса литералов с плавающей точкой, для целочисленных типов.
Haskell 2010 и Haskell 98 определяют литералы с плавающей точкой с синтаксисом 1.2e6, напоминающим научную запись. Эти литералы имеют тип Fractional a => a.
Расширение языка NumDecimals позволяет также использовать научную запись и синтаксис литералов с плавающей точкой для экземпляров Num, и иметь значения, такие как 1.2e6 :: Num a => a и 5e10 :: Num a => a . Это применяется только к литералам, которые фактически оказываются целочисленными значениями. Например, 1.23e1 :: Fractional a => a с 1.23e1 == 12.3, однако 1.23e2 :: Num a => a как 1.23e2 == 123.
Целочисленные литералы, написанные с использованием научной записи, будут развёрнуты с использованием fromInteger, в то время как любые литералы, которые не являются целыми, будут развёрнуты с использованием fromRational как обычно.
Обратите внимание, что обычные литералы с плавающей точкой (без экспоненты) также будут развёрнуты с помощью fromInteger и присвоят тип Num a => a, если они представляют целочисленное значение. Например, 1.0 :: Num a => a, но 1.1 :: Fractional a => a.