{-# LANGUAGE GADTs #-}
-- A simple GADT test from Roman
-- which nevertheless showed up a bug at one stage
module ShouldCompile where
data T a where
T1 :: () -> T ()
T2 :: T a -> T b -> T (a,b)
class C a where
f :: T a -> a
instance C () where
f (T1 x) = x
instance (C a, C b) => C (a,b) where
f (T2 x y) = (f x, f y)