6.8.6. Nullary type classes — Glasgow Haskell Compiler 9.4.0.20220501 User's Guide

# 6.8.6. Nullary type classes

`NullaryTypeClasses`

  Since: | 7.8.1

  Allow use and definition of type classes with no parameters. This extension has been replaced by `MultiParamTypeClasses`.

Nullary (no parameter) type classes are enabled with `MultiParamTypeClasses`; historically, they were enabled with the (now deprecated) `NullaryTypeClasses`. Since there are no available parameters, there can be at most one instance of a nullary class. A nullary type class might be used to document some assumption in a type signature (such as reliance on the Riemann hypothesis) or add some globally configurable settings in a program. For example,

    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 (...)

The type signature of `isPrime` informs users that its correctness depends on an unproven conjecture. If the function is used, the user has to acknowledge the dependence with:

    instance RiemannHypothesis where
      assumeRH = id