gadt21.hs:21:60: Could not deduce (Ord a1) arising from a use of ‘f’ from the context: a ~ Set a1 bound by a pattern with constructor: TypeSet :: forall a. Type a -> Type (Set a), in an equation for ‘withOrdDynExpr’ at gadt21.hs:21:35-43 Possible fix: add (Ord a1) to the context of the data constructor ‘TypeSet’ In the first argument of ‘Just’, namely ‘(f e)’ In the expression: Just (f e) In an equation for ‘withOrdDynExpr’: withOrdDynExpr (DynExpr e@(Const (TypeSet _) _)) f = Just (f e)