{-# LANGUAGE GADTs #-} data Void where data F where FnSpace :: (F -> Void) -> F contra :: F -> Void contra f@(FnSpace fn) = fn f inhab :: F inhab = FnSpace contra