bang patterns and unpack pragmas for Constraints.
As Constraint
continues its inexorable slide to become more and more like Type
, I'd expect to be able to {-# UNPACK #-}
a constraint. However, I currently can't !
them, let alone unpack them, despite them always being nice flat records internally.
{-# language GADTs #-}
newtype Tagged a b = Tagged b
class Bar a where
it :: Tagged a Int
data Foo a where
Bar :: {-# unpack #-} !(Bar a) => Foo a