```
{-# LANGUAGE TypeFamilies #-}

import GHC.Prim
import qualified Data.Set as Set

class Functor' f where
    type FConstraint f :: * -> Constraint
    fmap' :: (FConstraint f a, FConstraint f b) => (a -> b) -> f a -> f b

instance Functor' Set.Set where
    type FConstraint Set.Set = Ord Num  --error here, won't let me put Num
    fmap' = Set.map

```

I was wondering how I could make the above work. Now I know I could manually require two typeclasses, but I was hoping to be able to combine any arbitrary amount of them.

Now I know requiring `Num` does not make sense in this case, but this is purely an example.