{-# LANGUAGE TypeOperators #-} import GHC.Generics class Yo f where yo :: f x -> Int instance (Yo f, Yo g) => Yo (f :*: g) where yo (fx :*: gx) = let fx_c = yo fx gx_c = yo gx in _w0 fx_c gx_c