Spec-Zone.ru › Haskell 9

6.2.2. Магический хеш

MagicHash
Since:

6.8.1

Включает возможность использования символа решётки (#) в качестве постфикса идентификатора.

Расширение языка MagicHash позволяет использовать # в качестве постфиксного модификатора идентификаторов. Таким образом, x# — это допустимая переменная, а T# — допустимый конструктор типа или конструктор данных.

Знак решётки не изменяет семантики. Мы склонны использовать имена переменных, оканчивающиеся на «#», для значения или типов без упаковки (например, Int#), но это не обязательно; они являются обычными переменными. Расширение MagicHash не добавляет ничего в область видимости. Например, чтобы добавить Int# в область видимости, необходимо импортировать GHC.Exts (см. Типы без упаковки и примитивные операции); расширение MagicHash затем позволяет вам ссылаться на Int#, которое теперь находится в области видимости. Обратите внимание, что с этим вариантом меняется смысл x#y = 0: он определяет функцию x#, принимающую один аргумент y; чтобы определить оператор #, поставьте пробел: x # y = 0.

Расширение MagicHash также включает некоторые новые формы литералов (см. Типы без упаковки):

  • 'x'# имеет тип Char#
  • "foo"# имеет тип Addr# (см. Примитивные строковые литералы).
  • 3# имеет тип Int#. В общем случае любое целое число Haskell, за которым следует #, является литералом Int#, например, -0x3A# а также 32#.
  • 3## имеет тип Word#. В общем случае любое неотрицательное целое число Haskell, за которым следует ##, является литералом Word#.
  • 3.2# имеет тип Float#.
  • 3.2## имеет тип Double#

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

Spec-Zone.ru

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