@@ -209,3 +209,34 @@ struct TypeCast{T<:ReactantPrimitives} <: Function end
209209(:: TypeCast{T} )(x:: TracedRNumber{T2} ) where {T,T2} = promote_to (TracedRNumber{T}, x)
210210
211211Base. float (x:: TracedRNumber{T} ) where {T} = promote_to (TracedRNumber{float (T)}, x)
212+
213+ # Concatenation. Numbers in Julia are handled in a much less generic fashion than arrays
214+ Base. vcat (x:: TracedRNumber... ) = Base. typed_vcat (Base. promote_eltypeof (x... ), x... )
215+ function Base. typed_vcat (:: Type{T} , x:: TracedRNumber... ) where {T}
216+ return Base. typed_vcat (T, map (Base. Fix2 (broadcast_to_size, (1 ,)), x)... )
217+ end
218+
219+ Base. hcat (x:: TracedRNumber... ) = Base. typed_hcat (Base. promote_eltypeof (x... ), x... )
220+ function Base. typed_hcat (:: Type{T} , x:: TracedRNumber... ) where {T}
221+ return Base. typed_hcat (T, map (Base. Fix2 (broadcast_to_size, (1 , 1 )), x)... )
222+ end
223+
224+ function Base. hvcat (rows:: Tuple{Vararg{Int}} , xs:: TracedRNumber... )
225+ return Base. typed_hvcat (Base. promote_eltypeof (xs... ), rows, xs... )
226+ end
227+ function Base. typed_hvcat (
228+ :: Type{T} , rows:: Tuple{Vararg{Int}} , xs:: TracedRNumber...
229+ ) where {T}
230+ xs = map (Base. Fix2 (broadcast_to_size, (1 , 1 )), xs)
231+ return Base. typed_hvcat (T, rows, xs... )
232+ end
233+
234+ function Base. hvncat (dims:: Tuple{Vararg{Int}} , row_first:: Bool , xs:: TracedRNumber... )
235+ return Base. typed_hvncat (Base. promote_eltypeof (xs... ), dims, row_first, xs... )
236+ end
237+ function Base. typed_hvncat (
238+ :: Type{T} , dims:: Tuple{Vararg{Int}} , row_first:: Bool , xs:: TracedRNumber...
239+ ) where {T}
240+ xs = map (Base. Fix2 (broadcast_to_size, (1 , 1 )), xs)
241+ return Base. typed_hvncat (T, dims, row_first, xs... )
242+ end
0 commit comments