enum Equality { case equal(T) case notEqual } func == (lhs: T, rhs: T) -> Equality { if lhs == rhs { return .equal(lhs) } else { return .notEqual } } func == (rhs: Equality, lhs: T) -> Bool { switch rhs { case .equal(let value): return lhs == value case .notEqual: return false } } infix operator ==: myPrecedence precedencegroup myPrecedence { higherThan: AssignmentPrecedence associativity: left }