data Instance c = c => Instance
data X a = X { showInstance :: Instance (Show a), value :: a }
f :: X a -> String
f X { showInstance = Instance, value } = show value
у f нет констрейнта Show a, потому что инстанс лежит в рекорде, завернутый в Instance тип