[GHC] #11719: Cannot use higher-rank kinds with type families
GHC
ghc-devs at haskell.org
Sat Oct 27 23:18:23 UTC 2018
#11719: Cannot use higher-rank kinds with type families
-------------------------------------+-------------------------------------
Reporter: ocharles | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone: 8.8.1
Component: Compiler (Type | Version: 8.0.1-rc2
checker) |
Resolution: | Keywords: TypeInType
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: GHC rejects | Test Case:
valid program | dependent/should_compile/T11719
Blocked By: | Blocking:
Related Tickets: #13913, #14268 | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by RyanGlScott):
Now that #14268 is implemented, we can work around this issue in a much
less hacky way:
{{{#!hs
type family BaseType (k :: forall a. a ~> Type) (x :: b) :: Type where
forall (k :: forall a. a ~> Type) x. BaseType k x = (@@) k x
}}}
That being said, the way that I originally thought this type family should
have been defined:
{{{#!hs
type family BaseType (k :: forall a. a ~> Type) (x :: b) :: Type where
BaseType (k :: forall a. a ~> Type) x = (@@) k x
}}}
Still does not kind-check:
{{{
$ ghc/inplace/bin/ghc-stage2 Bug.hs
[1 of 1] Compiling Bug ( Bug.hs, Bug.o )
Bug.hs:22:13: error:
• Expected kind ‘forall a. a ~> *’, but ‘k’ has kind ‘a0 ~> *’
• In the first argument of ‘BaseType’, namely
‘(k :: forall a. a ~> Type)’
In the type family declaration for ‘BaseType’
|
22 | BaseType (k :: forall a. a ~> Type) x = (@@) k x
| ^
}}}
This feels like it ought to Just Work™, though. Should we keep this ticket
open until this is possible?
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11719#comment:23>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list