Spec-Zone.ru › Haskell 9

6.9.1. Отрицательные литералы

NegativeLiterals
Since:

7.8.1

Включить отрицательные числовые литералы.

Литерал -123 согласно Haskell98 и Haskell 2010 представляет собой два токена: унарный минус (-) и число 123, и разворачивается как negate (fromInteger 123). Расширение языка NegativeLiterals заставляет его обрабатываться как один токен и разворачивается как fromInteger (-123).

Это может быть полезно, когда диапазоны положительных и отрицательных значений числового типа данных не совпадают. Например, в 8-битной арифметике -128 представляется, но +128 нет. Поэтому negate (fromInteger 128) вызовет неожиданное сообщение об ошибке переполнения целочисленного литерала.

Можно вставить пробелы, как в - 123, чтобы принудительно интерпретировать их как два токена.

В версии 9.0 поведение этого расширения изменилось, и теперь требуется, чтобы отрицательный литерал не предшествовал закрывающий токен (см. Предложение GHC #229 для определения закрывающего токена). Другими словами, мы анализируем f -123 как f (-123), но x-123 как (-) x 123. До этой поправки NegativeLiterals заставляло x-123 анализироваться как x(-123).

NegativeLiterals является подмножеством LexicalNegation. То есть, включение обоих этих расширений имеет тот же эффект, что и включение LexicalNegation в одиночку.

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

Spec-Zone.ru

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