diff --git a/src/Data/OpenUnion/Internal.hs b/src/Data/OpenUnion/Internal.hs index 2781ab9..ac73778 100644 --- a/src/Data/OpenUnion/Internal.hs +++ b/src/Data/OpenUnion/Internal.hs @@ -5,6 +5,7 @@ {-# LANGUAGE PolyKinds #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE UndecidableInstances #-} +{-# LANGUAGE RoleAnnotations #-} -- | -- Module: Data.OpenUnion.Internal @@ -40,6 +41,8 @@ import Unsafe.Coerce (unsafeCoerce) data Union (r :: [Type -> Type]) a where Union :: {-# UNPACK #-} !Word -> t a -> Union r a +type role Union nominal nominal + -- | Takes a request of type @t :: * -> *@, and injects it into the 'Union'. -- -- Summand is assigning a specified 'Word' value, which is a position in the