-- | -- Module : Data.Constraint.Trivial -- Copyright : (c) 2014-2016 Justus Sagemüller -- License : GPL v3 (see LICENSE) -- Maintainer : (@) jsagemue $ uni-koeln.de -- {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE ConstraintKinds #-} module Data.Constraint.Trivial ( Unconstrained, Impossible , Unconstrained2, Impossible2 , Unconstrained3, Impossible3 , Unconstrained4, Impossible4 , Unconstrained5, Impossible5 , Unconstrained6, Impossible6 , Unconstrained7, Impossible7 , Unconstrained8, Impossible8 , Unconstrained9, Impossible9 ) where -- | Intended to be used as an argument for some type constructor which expects kind -- @* -> Constraint@, when you do not actually wish to constrain anything with it. -- -- @'Unconstrained' t@ can always be added to the constraint list of any signature, without -- changing anything. class Unconstrained t instance Unconstrained t -- | This constraint can /never/ be fulfilled. Might be useful e.g. as a default -- for a class-associated constraint; this basically disables any method with -- that constraint (so it can safely be left 'undefined'). type Impossible t = HiddenEmptyClass t class HiddenEmptyClass t -- | Like 'Unconstrained', but with kind signature @* -> * -> Constraint@ -- (two unconstrained types). class Unconstrained2 t s instance Unconstrained2 t s type Impossible2 t s = HiddenEmptyClass2 t s class HiddenEmptyClass2 t s class Unconstrained3 t s r instance Unconstrained3 t s r type Impossible3 t s r = HiddenEmptyClass3 t s r class HiddenEmptyClass3 t s r class Unconstrained4 t s r q instance Unconstrained4 t s r q type Impossible4 t s r q = HiddenEmptyClass4 t s r q class HiddenEmptyClass4 t s r q class Unconstrained5 t s r q p instance Unconstrained5 t s r q p type Impossible5 t s r q p = HiddenEmptyClass5 t s r q p class HiddenEmptyClass5 t s r q p class Unconstrained6 t s r q p o instance Unconstrained6 t s r q p o type Impossible6 t s r q p o = HiddenEmptyClass6 t s r q p o class HiddenEmptyClass6 t s r q p o class Unconstrained7 t s r q p o n instance Unconstrained7 t s r q p o n type Impossible7 t s r q p o n = HiddenEmptyClass7 t s r q p o n class HiddenEmptyClass7 t s r q p o n class Unconstrained8 t s r q p o n m instance Unconstrained8 t s r q p o n m type Impossible8 t s r q p o n m = HiddenEmptyClass8 t s r q p o n m class HiddenEmptyClass8 t s r q p o n m class Unconstrained9 t s r q p o n m l instance Unconstrained9 t s r q p o n m l type Impossible9 t s r q p o n m l = HiddenEmptyClass9 t s r q p o n m l class HiddenEmptyClass9 t s r q p o n m l