{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE UndecidableSuperClasses #-}
module Data.Constraint.Trivial (
Unconstrained, Impossible(..)
, Unconstrained2, Impossible2(..)
, Unconstrained3, Impossible3(..)
, Unconstrained4, Impossible4(..)
, Unconstrained5, Impossible5(..)
, Unconstrained6, Impossible6(..)
, Unconstrained7, Impossible7(..)
, Unconstrained8, Impossible8(..)
, Unconstrained9, Impossible9(..)
) where
import GHC.TypeLits
type Disallowed t = 'Text "All instances of "
':<>: 'Text t
':<>: 'Text " are disallowed."
class Unconstrained t
instance Unconstrained t
class TypeError (Disallowed "Impossible") => Impossible t where
absurdible :: proxy t -> a
class Unconstrained2 t s
instance Unconstrained2 t s
class TypeError (Disallowed "Impossible2") => Impossible2 t s where
absurdible2 :: proxy t -> proxy s -> a
class Unconstrained3 t s r
instance Unconstrained3 t s r
class TypeError (Disallowed "Impossible3") => Impossible3 t s r where
absurdible3 :: proxy t -> proxy s -> proxy r -> a
class Unconstrained4 t s r q
instance Unconstrained4 t s r q
class TypeError (Disallowed "Impossible4") => Impossible4 t s r q where
absurdible4 :: proxy t -> proxy s -> proxy r -> proxy q -> a
class Unconstrained5 t s r q p
instance Unconstrained5 t s r q p
class TypeError (Disallowed "Impossible5") => Impossible5 t s r q p where
absurdible5 :: proxy t -> proxy s -> proxy r -> proxy q -> proxy p -> a
class Unconstrained6 t s r q p o
instance Unconstrained6 t s r q p o
class TypeError (Disallowed "Impossible6") => Impossible6 t s r q p o where
absurdible6 :: proxy t -> proxy s -> proxy r
-> proxy q -> proxy p -> proxy o
-> a
class Unconstrained7 t s r q p o n
instance Unconstrained7 t s r q p o n
class TypeError (Disallowed "Impossible7") => Impossible7 t s r q p o n where
absurdible7 :: proxy t -> proxy s -> proxy r -> proxy q
-> proxy p -> proxy o -> proxy n -> a
class Unconstrained8 t s r q p o n m
instance Unconstrained8 t s r q p o n m
class TypeError (Disallowed "Impossible8") => Impossible8 t s r q p o n m where
absurdible8 :: proxy t -> proxy s -> proxy r -> proxy q
-> proxy p -> proxy o -> proxy n -> proxy m
-> a
class Unconstrained9 t s r q p o n m l
instance Unconstrained9 t s r q p o n m l
class TypeError (Disallowed "Impossible9") => Impossible9 t s r q p o n m l where
absurdible9 :: proxy t -> proxy s -> proxy r
-> proxy q -> proxy p -> proxy o
-> proxy n -> proxy m -> proxy l
-> a