When dealing with type families, it is often handy to use equality constraints to avoid having to repeat some type-function\'s name in a signature:
class Foo
It surprised me to learn you can't do that (I've used the same technique and know it works in instance declarations), but there seems to be a long-standing GHC feature request to support this.
Maybe you can use ConstraintKinds to get the same benefit:
{-# LANGUAGE TypeFamilies , FlexibleContexts , ConstraintKinds #-}
import Data.Monoid
class Foo f where
type BulkyAssociatedType f :: *
type B f = (Monoid (BulkyAssociatedType f))
class ( Foo f, B f) => Bar f