{-# UNPACK #-} support for size-indexed types
I don't know too much of the theory, but it seems to me that {-# UNPACK #-}
should be able to work for something like this:
data Tup (l::[*]) where
Nil :: HList '[]
Cons :: e -> {-# UNPACK #-} !(HList l) -> HList (e ': l)
This is essentially just HList
from the HList
package but strict in the second Cons
argument. What I would want is for Tup '[a,b,c]
to be represented in just the same way as (a,b,c)
. When possible, I'd want the getters/setters/lenses to be optimized to index into the unpacked structure rather than walking along it.
Trac metadata
Trac field | Value |
---|---|
Version | 7.11 |
Type | FeatureRequest |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |