Spec-Zone.ru › Haskell 9

6.8.6. Нульарные типы классов

NullaryTypeClasses
Since:

7.8.1

Status:

Устаревший

Разрешает использование и определение типов классов без параметров. Это расширение было заменено на 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.12.1/docs/users_guide/exts/nullary_type_classes.html

Spec-Zone.ru

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