Spec-Zone.ru › Haskell 9

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

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

© 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/extended_literals.html

Spec-Zone.ru

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