-
ExtendedLiterals -
- Начиная с:
-
9.8.1
Позволяет определять неупакованные примитивные числовые значения с помощью суффиксов
#Typeу числовых литералов, например0xFF#Word8 :: Word8#.
Расширение MagicHash добавляет несколько новых литералов, в том числе 3#
:: Int#, 3## :: Word#. Однако оно не распространяется на все неупакованные значения. Например, для Word8# нет синтаксиса литералов: необходимо написать что-то вроде wordToWord8 (3## :: Word#) :: Word8#.
ExtendedLiterals добавляет синтаксис для определения примитивных числовых литералов. Добавьте к целочисленной лексеме Haskell знак решётки #, за которым следует примитивный числовой тип (без суффикса с решёткой), чтобы получить значение этого типа. Например, 0xFF#Word8 :: Word8#. Между частями литерала не должно быть пробелов.
Допустимы следующие примитивные числовые типы:
Int8#Int16#Int32#Int64#Int#Word8#Word16#Word32#Word64#Word#
Для всех типов допустима любая положительная или отрицательная целочисленная лексема Haskell. Если значение литерала не помещается в указанный тип, по умолчанию выдаётся предупреждение о переполнении — так же, как для упакованных числовых литералов (см. -Woverflowed-literals).
Как и MagicHash, это расширение не добавляет ничего в область видимости и не меняет семантику. Этот синтаксис применяется только к числовым литералам. Возможно, вам потребуется импортировать GHC.Exts (см. Неупакованные типы и примитивные операции), чтобы ссылаться на типы определяемых вами литералов.