{-# LANGUAGE RankNTypes #-} {-# LANGUAGE GADTs #-} module GoldenGADTDestruct where data E a b where E :: forall a b. (b ~ a, Ord a) => b -> E a [a] ctxGADT :: E a b -> String ctxGADT gadt = _decons