Skip to content

Commit 6d1fd79

Browse files
authored
simplify spacescompatible for tensorspace (#339)
1 parent f5201b8 commit 6d1fd79

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

src/Multivariate/TensorSpace.jl

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -314,14 +314,18 @@ maxspace(a::TensorSpace{<:NTuple{2,Space}}, b::TensorSpace{<:NTuple{2,Space}}) =
314314
maxspace(a.spaces[1],b.spaces[1]) maxspace(a.spaces[2],b.spaces[2])
315315

316316
function spacescompatible(A::TensorSpace{<:NTuple{N,Space}}, B::TensorSpace{<:NTuple{N,Space}}) where {N}
317-
all(((a,b),) -> spacescompatible(a,b), zip(factors(A), factors(B)))
317+
_spacescompatible(factors(A), factors(B))
318+
end
319+
_spacescompatible(::Tuple{}, ::Tuple{}) = true
320+
function _spacescompatible(A::Tuple{Space, Vararg{Space}}, B::Tuple{Space, Vararg{Space}})
321+
spacescompatible(A[1], B[1]) && _spacescompatible(Base.tail(A), Base.tail(B))
318322
end
319323

320324
canonicalspace(T::TensorSpace) = TensorSpace(map(canonicalspace,T.spaces))
321325

322326

323327
TensorSpace(A::SVector{N,<:Space}) where N = TensorSpace(tuple(A...))
324-
TensorSpace(A...) = TensorSpace(tuple(A...))
328+
TensorSpace(A...) = TensorSpace(A)
325329
TensorSpace(A::ProductDomain) = TensorSpace(tuple(map(Space,components(A))...))
326330
(A::TensorSpace,B::TensorSpace) = TensorSpace(A.spaces...,B.spaces...)
327331
(A::TensorSpace,B::Space) = TensorSpace(A.spaces...,B)
@@ -333,7 +337,7 @@ Space(sp::ProductDomain) = TensorSpace(sp)
333337

334338
setdomain(sp::TensorSpace, d::ProductDomain) = TensorSpace(setdomain.(factors(sp), factors(d)))
335339

336-
*(A::Space, B::Space) = AB
340+
*(A::Space, B::Space) = A B
337341
function ^(A::Space, p::Integer)
338342
p >= 1 || throw(ArgumentError("exponent must be >= 1, received $p"))
339343
# Enumerate common cases to help with constant propagation

0 commit comments

Comments
 (0)