module test import StdGeneric :: T a = T a & C a class C a where c :: a -> Bool instance C Int where c _ = True generic g a :: a -> Bool g{|Int|} _ = True g{|T|} ga (T a) = f a f :: a -> Bool f _ = True Start = g{|*|} (T 42)