What is difference between Type{T} and T

I think an appropriate definition of abstract is one that is complementary to concrete. For then a type y is concrete if, and only if, there exists an object x such that its concrete type \text{typeof}(x) is equal to y. For example,

julia> x = [1.0]
1-element Array{Float64,1}:
 1.0

julia> y = Array{Float64,1}
Array{Float64,1}

julia> typeof(x) == y
true

Then, since there is no x such that \text{typeof}(x) = \text{Array}, Array is an abstract parametric type. Ptr is the same.

So then, in line with the manual, Abstract types (such as singleton types and abstract parametric types) may have instances but not “instantiations”. This almost rescues my definition because instances of abstract types are allowed even though instantiations are not!

original definition

But, in the end, I think the singleton types example means that I have to weaken the definition slightly

singleton type example

We arrive at:
Definition : Object x is an instance of the abstract type y if, and only if,

  1. the concrete type t_x of x and the value v_y of y satisfy t_x<:v_y, or
  2. y is a singleton type and x is its instance (can be verified using isa)