{-# OPTIONS_GHC -fno-warn-redundant-constraints #-} {-# LANGUAGE RankNTypes #-} module ShouldSucceed where data Empty q = Empty (forall a. Ord a => q a) q :: (Ord a) => [a] q = [] e0, e1, e2 :: Empty [] e0 = Empty [] e1 = Empty ([] :: (Ord a) => [a]) e2 = Empty q