{-# LANGUAGE ScopedTypeVariables #-} import Unsafe.Coerce (unsafeCoerce) import Data.Constraint class NoMethods a instance NoMethods () noMethodsDict :: Dict (NoMethods ()) noMethodsDict = Dict class Foo r f :: (Eq a, Foo a) => a -> a f a = a g :: forall a. Eq a => a -> a g x = case unsafeCoerce noMethodsDict :: Dict (Foo a) of Dict -> f x main = print $ g "abb"