Spec-Zone.ru › Haskell 9

6.9.4. Целочисленные литералы, похожие на дробные

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.

© 2002–2007 The University Court of the University of Glasgow. All rights reserved.
Licensed under the Glasgow Haskell Compiler License.
https://downloads.haskell.org/~ghc/9.14.1/docs/users_guide/exts/num_decimals.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API