Spec-Zone.ru › Haskell 9

6.1.3. Краткое описание заимствованного синтаксиса

Включение параметра, активирующего специальный синтаксис, может привести к тому, что работающий код на Haskell 98 перестанет компилироваться, например, если в нём используется имя переменной, ставшее зарезервированным словом. В этом разделе перечислен синтаксис, «заимствуемый» языковыми расширениями. Мы используем обозначения и имена нетерминалов из лексического синтаксиса Haskell 98 (см. отчёт Haskell 98). Здесь перечислены только те изменения синтаксиса, которые могут повлиять на уже работающие программы (то есть «заимствованный» синтаксис). Многие из этих расширений также включают новый контекстно-свободный синтаксис, но во всех случаях программы, написанные с использованием нового синтаксиса, не будут компилироваться без включённого параметра.

Есть два класса специального синтаксиса:

  • Новые зарезервированные слова и символы: последовательности символов, которые больше нельзя использовать в программе как идентификаторы.
  • Другой специальный синтаксис: последовательности символов, значение которых меняется при включении соответствующего параметра.

Заимствуется следующий синтаксис:

forall

Заимствуется по умолчанию (в типах; см. раздел Лексический синтаксис). forall — зарезервированное ключевое слово, а не переменная типа, в соответствии с предложением GHC № 193.

mdo

Заимствуется расширением: RecursiveDo

foreign

Заимствуется расширением: ForeignFunctionInterface

rec, proc, -<, >-, -<<, >>-, (|, |)

Заимствуется расширением: Arrows

?varid

Заимствуется расширением: ImplicitParams

[|, [e|, [p|, [d|, [t|, [||, [e||

Заимствуется расширением: QuasiQuotes. Кроме того, это создаёт неоднозначность с синтаксисом списковых включений. Подробнее см. обсуждение квазицитирования.

$(, $$(, $varid, $$varid

Заимствуется расширением: TemplateHaskell

[varid|

Заимствуется расширением: QuasiQuotes

⟨varid⟩, #⟨char⟩, #, ⟨string⟩, #, ⟨integer⟩, #, ⟨float⟩, #, ⟨float⟩, ##

Заимствуется расширением: MagicHash

⟨integer⟩, #(Int|Word)(8|16|32|64)?

Заимствуется расширением: ExtendedLiterals

(#, #)

Заимствуется расширением: UnboxedTuples

⟨varid⟩, !, ⟨varid⟩

Заимствуется расширением: BangPatterns

pattern

Заимствуется расширением: PatternSynonyms

static

Заимствуется расширением: StaticPointers

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

Spec-Zone.ru

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