module Data.Singular where

import Data.Countable
import Data.Searchable

-- | There is exactly one value.
class (Finite a, AtLeastOneCountable a) => Singular a where
    single :: a

instance Singular () where
    single :: ()
single = ()

instance (Singular a, Singular b) => Singular (a, b) where
    single :: (a, b)
single = (a
forall a. Singular a => a
single, b
forall a. Singular a => a
single)