-
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