@@ -70,22 +70,15 @@ function product_sectors_isequal(s1, s2)
7070end
7171
7272# get clean results when mixing implementations
73- function product_sectors_isequal (nt:: NamedTuple , :: Tuple{} )
74- return product_sectors_isequal (nt, (;))
75- end
76- function product_sectors_isequal (:: Tuple{} , nt:: NamedTuple )
77- return product_sectors_isequal ((;), nt)
78- end
79- function product_sectors_isequal (:: NamedTuple{()} , t:: Tuple )
80- return product_sectors_isequal ((), t)
81- end
82- function product_sectors_isequal (t:: Tuple , :: NamedTuple{()} )
83- return product_sectors_isequal (t, ())
73+ product_sectors_isequal (nt:: NamedTuple , t:: Tuple ) = product_sectors_isequal (t, nt)
74+ function product_sectors_isequal (t:: Tuple , nt:: NamedTuple )
75+ if isempty (t)
76+ return product_sectors_isequal ((;), nt)
77+ elseif isempty (nt)
78+ return product_sectors_isequal (t, ())
79+ end
80+ return false
8481end
85- product_sectors_isequal (:: Tuple{} , :: NamedTuple{()} ) = true
86- product_sectors_isequal (:: NamedTuple{()} , :: Tuple{} ) = true
87- product_sectors_isequal (:: Tuple , :: NamedTuple ) = false
88- product_sectors_isequal (:: NamedTuple , :: Tuple ) = false
8982
9083function product_sectors_isless (nt:: NamedTuple , :: Tuple{} )
9184 return product_sectors_isless (nt, (;))
@@ -109,19 +102,15 @@ product_sectors_isless(::Tuple, ::NamedTuple) = throw(ArgumentError("Not impleme
109102product_sectors_type (:: Type{<:SectorProduct{T}} ) where {T} = T
110103
111104function product_sectors_fusion_rule (sects1, sects2)
105+ isempty (sects1) && return SectorProduct (sects2)
106+ isempty (sects2) && return SectorProduct (sects1)
112107 shared_sect = shared_product_sectors_fusion_rule (
113108 product_sectors_common (sects1, sects2)...
114109 )
115110 diff_sect = SectorProduct (product_sectors_diff (sects1, sects2))
116111 return shared_sect × diff_sect
117112end
118113
119- # edge case with empty product_sectors
120- product_sectors_fusion_rule (sects:: Tuple , :: NamedTuple{()} ) = SectorProduct (sects)
121- product_sectors_fusion_rule (:: NamedTuple{()} , sects:: Tuple ) = SectorProduct (sects)
122- product_sectors_fusion_rule (sects:: NamedTuple , :: Tuple{} ) = SectorProduct (sects)
123- product_sectors_fusion_rule (:: Tuple{} , sects:: NamedTuple ) = SectorProduct (sects)
124-
125114# ================================= Cartesian Product ====================================
126115× (c1:: AbstractSector , c2:: AbstractSector ) = × (SectorProduct (c1), SectorProduct (c2))
127116function × (p1:: SectorProduct , p2:: SectorProduct )
0 commit comments