En realidad, hay uno, un poco ridícula, camino a la aproximación de esto:
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE ScopedTypeVariables #-}
foo :: forall abbrv. (abbrv ~ (Some, Huge, Type, Sig))
=> abbrv -> abbrv
foo x = meh x (x, x)
where meh :: abbrv -> (abbrv, abbrv) -> abbrv
meh x y = {- ... -}
Realmente no puedo recomendar que permite dos extensiones del lenguaje por el simple hecho de abreviar tipos de firmas, aunque si ya está usándolos (o GADTs en lugar de escribir familias) Supongo que realmente no duele nada.
Tonterías aparte, debería considerar refaccionar sus tipos en casos como este, como sugiere el autor.
Supongo que esto es suponiendo que 'meh' no es polimórfico? –