Skip to content

Type family signatures in indefinite modules

Backpack does not allow type family signatures in indefinite modules. As an example, although GHC does accept:

-- indefinite module
data Foo :: Bool
-- implementing module
type Foo = 'True

It does not accept:

-- indefinite module
type family Foo (b :: Bool) :: Bool
-- implementing module
type family Foo (b :: Bool) :: Bool where
  Foo 'True = 'False
  Foo 'False = 'True

I'm not sure if there is a fundamental reason for this (e.g. a requirement that everything is matchable). It would be helpful for the thing I'm experimenting with if this restriction could be lifted.

Trac metadata
Trac field Value
Version 8.6.4
Type FeatureRequest
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC ezyang
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information