Can I write it?

Is there a hack to make the commented piece work?

protocol RecordTypeShape {
   associatedtype Name
   associatedtype Value
   associatedtype Tail: RecordTypeShape
}
enum Comb<Name, Value, Tail> : RecordTypeShape 
where Tail: RecordTypeShape {
   typealias Tail = Tail
   typealias Value = Value
   typealias Name = Name
}
enum End: RecordTypeShape {
   typealias Tail = Self
   typealias Value = Self
   typealias Name = ()
}

enum Yes {}
enum No {}
extension RecordTypeShape {
   typealias Contains<N> = Yes where Name == N
}
// extension RecordTypeShape {
//    typealias Constains<N> = Tail.Contains<N>
// }
extension RecordTypeShape where Self == End {
   typealias Contains<N> = No
}

Such that...

enum Name {}
enum Age {}
enum FavouriteColour {}
typealias Ex = 
  Comb<Name, String, 
  Comb<Age, Int, 
  Comb<FavouriteColour, String, End>>>

//Ex.Contains<FavouriteColour> == Yes