packages feed

countable-1.2: src/Data/Empty.hs

module Data.Empty where

import Data.Searchable
import Data.Void

-- | There are no values.
class Finite n => Empty n where
    never :: n -> a

instance Empty Void where
    never = absurd

instance (Empty a, Empty b) => Empty (Either a b) where
    never (Left a) = never a
    never (Right a) = never a

instance (Empty a, Finite b) => Empty (a, b) where
    never (a, _) = never a