Spec-Zone.ru › Haskell 9

6.2.17. Локальные объявления fixity

Внимательное прочтение отчёта Haskell 98 показывает, что объявления fixity (infix, infixl и infixr) разрешено помещать в локальные связывания, например введённые с помощью let и where. Однако в отчёте Haskell семантика таких связываний описана недостаточно точно.

В GHC объявление fixity может сопровождать локальное связывание:

let f = ...
    infixr 3 `f`
in
    ...

и это объявление fixity применяется везде, где связывание находится в области видимости. Например, в let оно применяется в правых частях других связываний let и в теле letC. Или в рекурсивных выражениях do (Рекурсивная do-нотация) локальные объявления fixity оператора let распространяются на другие операторы в группе так же, как и связанное имя.

Кроме того, локальное объявление fixity обязательно должно сопровождать локальное связывание этого имени: нельзя изменить fixity имени, связанного в другом месте, например так:

let infixr 9 $ in ...

Поскольку локальные объявления fixity технически входят в Haskell 98, для их использования не требуется включать расширение.

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

Spec-Zone.ru

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