Skip to content

Visibility mismatch between data declaration and kind signature, accepted!

{-# Language PolyKinds                #-}
{-# Language RankNTypes               #-}
{-# Language StandaloneKindSignatures #-}

import Data.Kind

type ID :: forall i -> i -> Type
data ID :: forall i -> i -> Type

This compiles on 8.10.0.20191123, if we change the standalone kind signature forall-> to forall. we get an error. Obviously?

--     • Couldn't match expected kind ‘forall i1 -> i1 -> *’
--                   with actual kind ‘i -> *’
--     • In the data type declaration for ‘ID’
--   |
-- 8 | data ID :: forall i -> i -> Type
--   | ^^^^^^^
type ID :: forall i.   i -> Type
data ID :: forall i -> i -> Type

But then why does this compile

type ID :: forall i -> i -> Type
data ID :: forall i.   i -> Type
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information