-
NumDecimals -
- С версии:
-
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.