-
ExtendedLiterals -
- Since:
-
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 (см. Типы без упаковки и примитивные операции), чтобы использовать типы определяемых литералов.