Pardon this naive question but: what exactly is the difference between Float64 and Real? For example, say we have:

a = [1.0, 2.0, 3.0]
b = Array{Real,1}(a)

When I call typeof() on each, it reports the types as Vector{Float64} and Vector{Real}, respectively. But how are a and b different, and in what ways do they behave differently? It seems to me that applying arithmetic operations to b (e.g. b.^2, b .+ b, etc.) just gives back an object of type Vector{Float64}…So what is the point of Real numbers?