-
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