Ah, this was tried once before to get included in Base, and it was turned down. Colon makes much more sense here (and works better, too). https://github.com/JuliaLang/julia/pull/4263
One final iteration (I'll see if we can get this version into Base): function Base.reshape{N}(a::AbstractArray, dims::NTuple{N, Union(Int, Colon)}) missing_mask = [isa(x, Colon) for x in dims] sum(missing_mask) == 1 || throw(DimensionMismatch("new dimensions $(dims) may only have up to one omitted dimension")) sz = length(a) / prod(dims[!missing_mask]) sz == int(sz) || throw(DimensionMismatch("array size $(length(a)) must be divisible by the product of the new dimensions $(dims[!missing_mask])")) reshape(a, map(x->isa(x, Colon) ? int(sz) : x, dims)) end