check if broadcastable
expand dimension i.e. repeat n time on dim
exapand dimension if s.length!dim == 1 else do nothing but type in the same expressions of repeat/unpack/swapped/index[0]
reduce slice into targetShape, TODO @nogc
common components (typecheck and backprop wrappers) for autograd functions
a simple type check of forward/backward functions compatibility
a trait to identify autograd functions
Common components for autograd function object