|
61 | 61 | # - ordered-like with a Tuple |
62 | 62 | # - dictionary-like with a NamedTuple |
63 | 63 |
|
| 64 | +categories_isequal(o1::Tuple, o2::Tuple) = (o1 == o2) |
| 65 | +function categories_isequal(nt::NamedTuple, ::Tuple{}) |
| 66 | + return categories_isequal(nt, (;)) |
| 67 | +end |
| 68 | +function categories_isequal(::Tuple{}, nt::NamedTuple) |
| 69 | + return categories_isequal((;), nt) |
| 70 | +end |
| 71 | +function categories_isequal(nt1::NamedTuple, nt2::NamedTuple) |
| 72 | + return ==(sym_categories_insert_unspecified(nt1, nt2)...) |
| 73 | +end |
| 74 | + |
64 | 75 | # get clean results when mixing implementations |
65 | 76 | categories_isequal(::Tuple, ::NamedTuple) = false |
66 | 77 | categories_isequal(::NamedTuple, ::Tuple) = false |
67 | 78 |
|
| 79 | +categories_isless(::Tuple, ::Tuple) = throw(ArgumentError("Not implemented")) |
| 80 | +categories_isless(t1::T, t2::T) where {T<:Tuple} = t1 < t2 |
| 81 | +function categories_isless(nt::NamedTuple, ::Tuple{}) |
| 82 | + return categories_isless(nt, (;)) |
| 83 | +end |
| 84 | +function categories_isless(::Tuple{}, nt::NamedTuple) |
| 85 | + return categories_isless((;), nt) |
| 86 | +end |
| 87 | +function categories_isless(nt1::NamedTuple, nt2::NamedTuple) |
| 88 | + return isless(sym_categories_insert_unspecified(nt1, nt2)...) |
| 89 | +end |
| 90 | + |
68 | 91 | categories_isless(::NamedTuple, ::Tuple) = throw(ArgumentError("Not implemented")) |
69 | 92 | categories_isless(::Tuple, ::NamedTuple) = throw(ArgumentError("Not implemented")) |
70 | 93 |
|
@@ -184,11 +207,6 @@ function SymmetryStyle(T::Type{<:Tuple}) |
184 | 207 | return mapreduce(SymmetryStyle, combine_styles, fieldtypes(T); init=AbelianStyle()) |
185 | 208 | end |
186 | 209 |
|
187 | | -categories_isequal(o1::Tuple, o2::Tuple) = (o1 == o2) |
188 | | - |
189 | | -categories_isless(::Tuple, ::Tuple) = throw(ArgumentError("Not implemented")) |
190 | | -categories_isless(t1::T, t2::T) where {T<:Tuple} = t1 < t2 |
191 | | - |
192 | 210 | categories_product(l1::Tuple, l2::Tuple) = (l1..., l2...) |
193 | 211 |
|
194 | 212 | categories_trivial(type::Type{<:Tuple}) = trivial.(fieldtypes(type)) |
@@ -230,26 +248,6 @@ function SymmetryStyle(NT::Type{<:NamedTuple}) |
230 | 248 | return mapreduce(SymmetryStyle, combine_styles, fieldtypes(NT); init=AbelianStyle()) |
231 | 249 | end |
232 | 250 |
|
233 | | -function categories_isequal(nt::NamedTuple, ::Tuple{}) |
234 | | - return categories_isequal(nt, (;)) |
235 | | -end |
236 | | -function categories_isequal(::Tuple{}, nt::NamedTuple) |
237 | | - return categories_isequal((;), nt) |
238 | | -end |
239 | | -function categories_isequal(nt1::NamedTuple, nt2::NamedTuple) |
240 | | - return ==(sym_categories_insert_unspecified(nt1, nt2)...) |
241 | | -end |
242 | | - |
243 | | -function categories_isless(nt::NamedTuple, ::Tuple{}) |
244 | | - return categories_isless(nt, (;)) |
245 | | -end |
246 | | -function categories_isless(::Tuple{}, nt::NamedTuple) |
247 | | - return categories_isless((;), nt) |
248 | | -end |
249 | | -function categories_isless(nt1::NamedTuple, nt2::NamedTuple) |
250 | | - return isless(sym_categories_insert_unspecified(nt1, nt2)...) |
251 | | -end |
252 | | - |
253 | 251 | function sym_categories_insert_unspecified(nt1::NamedTuple, nt2::NamedTuple) |
254 | 252 | return categories_insert_unspecified(nt1, nt2), categories_insert_unspecified(nt2, nt1) |
255 | 253 | end |
|
0 commit comments