{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE MultiParamTypeClasses #-} class Foo a where data Bar a type Bazable a b = (Bar a ~ Maybe b) baz :: Bazable a b => a -> a baz = id