1- struct CartesianPair{A,B }
2- a :: A
3- b :: B
1+ struct CartesianPair{A1,A2 }
2+ arg1 :: A1
3+ arg2 :: A2
44end
5- arguments(a:: CartesianPair ) = (a . a, a . b )
5+ arguments(a:: CartesianPair ) = (arg1(a), arg2(a) )
66arguments(a:: CartesianPair , n:: Int ) = arguments(a)[n]
77
8- arg1(a:: CartesianPair ) = a . a
9- arg2(a:: CartesianPair ) = a . b
8+ arg1(a:: CartesianPair ) = getfield(a, :arg1)
9+ arg2(a:: CartesianPair ) = getfield(a, :arg2)
1010
11- × (a, b ) = CartesianPair(a, b )
11+ × (a1, a2 ) = CartesianPair(a1, a2 )
1212
1313function Base. show(io:: IO , a:: CartesianPair )
14- print(io, a . a , " × " , a . b )
14+ print(io, arg1(a) , " × " , arg2(a) )
1515 return nothing
1616end
1717
@@ -20,25 +20,25 @@ struct CartesianProduct{TA,TB,A<:AbstractVector{TA},B<:AbstractVector{TB}} <:
2020 a:: A
2121 b:: B
2222end
23- arguments(a:: CartesianProduct ) = (a . a, a . b )
23+ arguments(a:: CartesianProduct ) = (arg1(a), arg2(a) )
2424arguments(a:: CartesianProduct , n:: Int ) = arguments(a)[n]
2525
26- arg1(a:: CartesianProduct ) = a . a
27- arg2(a:: CartesianProduct ) = a . b
26+ arg1(a:: CartesianProduct ) = getfield(a, :a)
27+ arg2(a:: CartesianProduct ) = getfield(a, :b)
2828
2929Base. copy(a:: CartesianProduct ) = copy(arg1(a)) × copy(arg2(a))
3030
3131function Base. show(io:: IO , a:: CartesianProduct )
32- print(io, a . a , " × " , a . b )
32+ print(io, arg1(a) , " × " , arg2(a) )
3333 return nothing
3434end
3535function Base. show(io:: IO , :: MIME"text/plain" , a:: CartesianProduct )
3636 show(io, a)
3737 return nothing
3838end
3939
40- × (a :: AbstractVector , b :: AbstractVector ) = CartesianProduct(a, b )
41- Base. length(a:: CartesianProduct ) = length(a . a) * length(a . b )
40+ × (a1 :: AbstractVector , a2 :: AbstractVector ) = CartesianProduct(a1, a2 )
41+ Base. length(a:: CartesianProduct ) = length(arg1(a)) * length(arg2(a) )
4242Base. size(a:: CartesianProduct ) = (length(a),)
4343
4444function Base. getindex(a:: CartesianProduct , i:: CartesianProduct )
@@ -118,12 +118,12 @@ end
118118function CartesianProductUnitRange(p:: CartesianProduct )
119119 return CartesianProductUnitRange(p, Base. OneTo(length(p)))
120120end
121- function CartesianProductUnitRange(a, b )
122- return CartesianProductUnitRange(a × b )
121+ function CartesianProductUnitRange(a1, a2 )
122+ return CartesianProductUnitRange(a1 × a2 )
123123end
124124to_product_indices(a:: AbstractVector ) = a
125125to_product_indices(i:: Integer ) = Base. OneTo(i)
126- cartesianrange(a, b ) = cartesianrange(to_product_indices(a ) × to_product_indices(b ))
126+ cartesianrange(a1, a2 ) = cartesianrange(to_product_indices(a1 ) × to_product_indices(a2 ))
127127function cartesianrange(p:: CartesianPair )
128128 p′ = to_product_indices(arg1(p)) × to_product_indices(arg2(p))
129129 return cartesianrange(p′)
0 commit comments