Spec-Zone.ru › Haskell 9

6.8.6. Безаргументные классы типов

NullaryTypeClasses
Начиная с:

7.8.1

Статус:

Устарело

Разрешает использовать и определять классы типов без параметров. Это расширение заменено расширением MultiParamTypeClasses.

Безаргументные (не имеющие параметров) классы типов включаются с помощью MultiParamTypeClasses; ранее они включались с помощью (теперь устаревшего) NullaryTypeClasses. Поскольку доступных параметров нет, у безаргументного класса может быть не более одного экземпляра. Безаргументный класс типов может использоваться для документирования некоторого предположения в сигнатуре типа (например, зависимости от гипотезы Римана) или для добавления в программу глобально настраиваемых параметров. Например,

class RiemannHypothesis where
  assumeRH :: a -> a

-- Deterministic version of the Miller test
-- correctness depends on the generalised Riemann hypothesis
isPrime :: RiemannHypothesis => Integer -> Bool
isPrime n = assumeRH (...)

Сигнатура типа isPrime сообщает пользователям, что её корректность зависит от недоказанной гипотезы. Если функция используется, пользователь должен признать эту зависимость следующим образом:

instance RiemannHypothesis where
  assumeRH = id

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

Spec-Zone.ru

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