Spec-Zone.ru › Haskell 9

6.9.5. Синтаксис литералов примитивных типов фиксированной длины

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

© 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.12.1/docs/users_guide/exts/extended_literals.html

Spec-Zone.ru

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