Illegal standalone kind signature [GHC-45906]
Standalone kind signatures can be used to specify a polymorphic kind for a type, to overcome kind inference restrictions:
type T :: (k -> Type) -> k -> Type -- standalone kind signature
data T m a = MkT (m a) (T Maybe (m a))
Without the standalone kind signature, GHC would infer the kind
T :: (Type -> Type) -> Type -> Type
.
Use of this feature requires the StandaloneKindSignatures
extension to be enabled. This extension is implied by
UnliftedDatatypes
, and included in the GHC2021
and GHC2024
language editions.
Examples
Illegal standalone kind signature
Module fails to compile because it contains a standalone type signature.
Error Message
:7:1: error: [GHC-45906]
SAKS.hsIllegal standalone kind signature
Suggested fix:
Perhaps you intended to use the ‘StandaloneKindSignatures’ extension (implied by ‘UnliftedDatatypes’)
SAKS.hs
Before
{-# LANGUAGE Haskell2010 #-}
module SAKS where
import Data.Kind (Type)
type T :: Type
data T
After
{-# LANGUAGE GHC2021 #-}
module SAKS where
import Data.Kind (Type)
type T :: Type
data T