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' or the data constructor `DynExpr' or the type signature for withOrdDynExpr :: DynExpr -> (forall a. Ord a => Expr a -> b) -> Maybe b 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)