{-# LANGUAGE StandaloneKindSignatures #-} {-# LANGUAGE PolyKinds, DataKinds, RankNTypes, TypeFamilies #-} module SAKS_029 where import Data.Kind import Data.Proxy import Data.Type.Bool type IfK :: forall j m n. forall (e :: Proxy (j :: Bool)) -> m -> n -> If j m n type family IfK e f g where IfK (_ :: Proxy True) f _ = f IfK (_ :: Proxy False) _ g = g