It was considered some years back. Would be good to know what speaks against this?
First issue I can see is, that we have a namespacing problem, because types from different modules can be named the same.
import DogCore
import CatCore
enum FamilyError {
case dogCoreAnimalError(DogCore.AnimalError)
case catCoreAnimalError(CatCore.AnimalError)
}