Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Binrep.Generic.CBLen
Description
Generically derive CBLen
type family instances.
This is mostly playing around -- I've only just learned regular GHC generics, and pulling everything up to the type level is even more confusing and weird.
A CBLen
instance usually indicates a type is either extremely simple or comes
with size information in the type. Be careful deriving or writing instances for
your own types - BLen
is usually correct/sufficient.
You can attempt to derive a CBLen
type family instance generically for a type
via
type instance CBLen a = CBLenGeneric w a
As with deriving BLen
, you must provide the type used to store the sum tag for
sum types.
Then try doing something with it e.g. have GHC derive a BLen
instance for you
via the default method (that reifies CBLen)
deriving anyclass BLen a
Hopefully it either compiles, or you get a useful type error. If not, sorry.
Documentation
type CBLenGeneric w a = GCBLen w (Rep a) Source #
type family GCBLenCaseMaybe a where ... Source #
I don't know how to pattern match in types without writing type families.
Equations
GCBLenCaseMaybe (JustX n _) = n | |
GCBLenCaseMaybe NothingX = TypeError ('Text "Two constructors didn't have equal constant size." :$$: 'Text "Sry dunno how to thread errors thru LOL") |