1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
{-# LANGUAGE GADTs, ScopedTypeVariables #-} {-# OPTIONS_GHC -Wall #-} module Foo where data T a instance Eq (T a) {-# SPECIALISE instance forall a.Eq (T Int) #-} data S = forall a.S1 data W where W1 :: forall a. W f :: forall a. Int f = 3