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