Hi. Is there a way to avoid `UndecidableInstances` in following code: data A f = A {_a1 :: f String} instance Show (f String) => Show (A f) where it does not compile with 1.hs:4:10: error: • The constraint ‘Show (f String)’ is no smaller than the instance head (Use UndecidableInstances to permit this) • In the instance declaration for ‘Show (A f)’ Though, initially, this was {-# LANGUAGE RankNTypes #-} data A f = A {_a1 :: f String} instance forall f a. Show (f a) => Show (A f) where which also does not compile with 1.hs:5:10: error: • Variable ‘a’ occurs more often in the constraint ‘Show (f a)’ than in the instance head (Use UndecidableInstances to permit this) • In the instance declaration for ‘Show (A f)’ The error is different and i don't sure, that this two cases are related. I want these instances to make a type with many records parametrized by `Alternative` type, e.g. data Volume t = Volume { _volName :: t Name , _volSize :: t Size , _volPath :: t Path , _pool :: t Pool } When i try to make instances, which require `*` type, i will end with above cases. -- Dmitriy