Spec-Zone.ru › Haskell 9

6.2.2. Магический знак решётки

MagicHash
С версии:

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.14.1/docs/users_guide/exts/magic_hash.html

Spec-Zone.ru

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