Skip to content
vtjnash edited this page Nov 8, 2012 · 4 revisions

This is the type hierarchy of Julia's built-in types to show the relationships between the Abstract Types, Bit Types, Composite Types, Union Types, and even Types Aliases. Note that Unions and Type Constructors are intentionally listed multiple times.

Commit 37b6769591 (2012-11-07 17:54:27)
+- Any
   +- ...{T}
   +- AbstractArray{T, N}
   +   +- AbstractMatrix{T} = AbstractArray{T,2}
   +   +- AbstractVector{T} = AbstractArray{T,1}
   +   +- Array{T, N}
   +   +   +- Executable = Union(Function,Array{Union(UTF8String,ASCIIString),1})
   +   +   +- Matrix{T} = Array{T,2}
   +   +   +- StridedArray{T, N, A<:Array{T,N}} = Union(SubArray{T,N,A<:Array{T,N},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},Array{T,N})
   +   +   +- StridedMatrix{T, A<:Array{T,N}} = Union(SubArray{T,2,A<:Array{T,N},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},Array{T,2})
   +   +   +- StridedVecOrMat{T} = Union(Array{T,2},SubArray{T,2,A<:Array{T,N},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},Array{T,1},SubArray{T,1,A<:Array{T,N},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)})
   +   +   +- StridedVector{T, A<:Array{T,N}} = Union(SubArray{T,1,A<:Array{T,N},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},Array{T,1})
   +   +   +- VecOrMat{T} = Union(Array{T,2},Array{T,1})
   +   +   +- Vector{T} = Array{T,1}
   +   +- Chars = Union(Set{Char},AbstractArray{Char,1},Char)
   +   +- DArray{T, N, distdim}
   +   +   +- SubOrDArray{T, N} = Union(SubArray{T,N,D<:DArray{T,N,distdim},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},DArray{T,N,distdim})
   +   +- Indices{T<:Integer} = Union(AbstractArray{T<:Integer,1},Integer)
   +   +- Ranges{T<:Real} (=AbstractArray{T<:Real, 1})
   +   +   +- Range{T<:Real}
   +   +   +   +- RangeIndex = Union(Range1{Int64},Range{Int64},Int64)
   +   +   +- Range1{T<:Real}
   +   +       +- RangeIndex = Union(Range1{Int64},Range{Int64},Int64)
   +   +- SubArray{T, N, A<:AbstractArray{T,N}, I<:(Union(Range1{Int64},Range{Int64},Int64)...,)}
   +   +   +- StridedArray{T, N, A<:Array{T,N}} = Union(SubArray{T,N,A<:Array{T,N},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},Array{T,N})
   +   +   +- StridedMatrix{T, A<:Array{T,N}} = Union(SubArray{T,2,A<:Array{T,N},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},Array{T,2})
   +   +   +- StridedVecOrMat{T} = Union(Array{T,2},SubArray{T,2,A<:Array{T,N},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},Array{T,1},SubArray{T,1,A<:Array{T,N},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)})
   +   +   +- StridedVector{T, A<:Array{T,N}} = Union(SubArray{T,1,A<:Array{T,N},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},Array{T,1})
   +   +   +- SubDArray{T, N, D<:DArray{T,N,distdim}} = SubArray{T,N,D<:DArray{T,N,distdim},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)}
   +   +   +- SubOrDArray{T, N} = Union(SubArray{T,N,D<:DArray{T,N,distdim},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},DArray{T,N,distdim})
   +   +- SymTridiagonal{T<:Union(Complex64,Complex128,Float32,Float64)} (=AbstractArray{T<:Union(Complex64,Complex128,Float32,Float64), 2})
   +   +- Tridiagonal{T} (=AbstractArray{T, 2})
   +   +- Woodbury{T} (=AbstractArray{T, 2})
   +- Associative{K, V}
   +   +- Dict{K, V}
   +   +- EnvHash (=Associative{Union(UTF8String,ASCIIString), Union(UTF8String,ASCIIString)})
   +   +- ObjectIdDict (=Associative{Any, Any})
   +   +- WeakKeyDict{K, V}
   +- Box
   +- Cmd
   +   +- Cmds = Union(Set{Cmd},Cmd)
   +- Colon
   +- EachLine
   +- EachSearch
   +- Enumerate{I}
   +- Exception
   +   +- ArgumentError
   +   +- BackTrace
   +   +- BoundsError
   +   +- DisconnectException
   +   +- DivideByZeroError
   +   +- DomainError
   +   +- EOFError
   +   +- ErrorException
   +   +- IOError
   +   +- InexactError
   +   +- InterruptException
   +   +- KeyError
   +   +- LoadError
   +   +- MemoryError
   +   +- MethodError
   +   +- OverflowError
   +   +- ParseError
   +   +- StackOverflowError
   +   +- SystemError
   +   +- TypeError
   +   +- UndefRefError
   +- Expr
   +- FDSet
   +- Factorization{T}
   +   +- BunchKaufman{T<:Union(Complex64,Complex128,Float32,Float64)} (=Factorization{T<:Union(Complex64,Complex128,Float32,Float64)})
   +   +- CholeskyDense{T<:Union(Complex64,Complex128,Float32,Float64)} (=Factorization{T<:Union(Complex64,Complex128,Float32,Float64)})
   +   +- LDLTTridiagonal{T}
   +   +- LUDense{T}
   +   +- LUTridiagonal{T}
   +   +- QRDense{T}
   +   +- QRPDense{T}
   +- FileDes
   +- Filter{I}
   +- Function
   +   +- Executable = Union(Function,Array{Union(UTF8String,ASCIIString),1})
   +- GetfieldNode
   +- GlobalObject
   +- GotoNode
   +- IO
   +   +- IOStream
   +- IntSet
   +- IntrinsicFunction
   +- LabelNode
   +- LambdaStaticData
   +- LineNumberNode
   +- LocalProcess
   +- Location
   +- Method
   +- MethodTable
   +- Module
   +- NTuple{N, T}
   +- Nothing
   +- Number
   +   +- Complex{T<:Real}
   +   +   +- Complex128 (=Complex{Float64})
   +   +   +- Complex64 (=Complex{Float32})
   +   +   +- ComplexPair{T<:Real}
   +   +   +- ImaginaryUnit (=Complex{Int32})
   +   +- Real
   +       +- FloatingPoint
   +       +   +- Float32
   +       +   +- Float64
   +       +- Integer
   +       +   +- Bool
   +       +   +- Char
   +       +   +   +- Chars = Union(Set{Char},AbstractArray{Char,1},Char)
   +       +   +- Indices{T<:Integer} = Union(AbstractArray{T<:Integer,1},Integer)
   +       +   +- Signed
   +       +   +   +- FileOffset = Int64
   +       +   +   +- Int = Int64
   +       +   +   +- Int128
   +       +   +   +- Int16
   +       +   +   +- Int32
   +       +   +   +- Int64
   +       +   +   +   +- Dimspec = Union((Int64...,),Int64)
   +       +   +   +   +- RangeIndex = Union(Range1{Int64},Range{Int64},Int64)
   +       +   +   +- Int8
   +       +   +- Unsigned
   +       +       +- Uint = Uint64
   +       +       +- Uint128
   +       +       +- Uint16
   +       +       +- Uint32
   +       +       +- Uint64
   +       +       +- Uint8
   +       +- Rational{T<:Integer}
   +- Pipe
   +- PipeEnd
   +   +- PipeIn
   +   +- PipeOut
   +- Port
   +   +- Ports = Union(Set{Port},Port)
   +- ProcessGroup
   +- ProcessStatus
   +   +- ProcessExited
   +   +- ProcessNotRun
   +   +- ProcessRunning
   +   +- ProcessSignaled
   +   +- ProcessStopped
   +- Ptr{T}
   +- QuoteNode
   +- Regex
   +- RegexMatch
   +- RegexMatchIterator
   +- RemoteRef
   +- Reverse
   +- Rng
   +   +- Rng_MT
   +- Set{T}
   +   +- Chars = Union(Set{Char},AbstractArray{Char,1},Char)
   +   +- Cmds = Union(Set{Cmd},Cmd)
   +   +- Ports = Union(Set{Port},Port)
   +- Stat
   +- String
   +   +- CharString
   +   +- DirectIndexString
   +   +   +- ASCIIString
   +   +       +- ByteString = Union(UTF8String,ASCIIString)
   +   +- GenericString
   +   +- RepString
   +   +- RevString
   +   +- RopeString
   +   +- SubString{T<:String}
   +   +- TransformedString
   +   +- UTF8String
   +       +- ByteString = Union(UTF8String,ASCIIString)
   +- Symbol
   +- SymbolNode
   +- Task
   +- Top = Top
   +- TopNode
   +- Type{T<:Top}
   +   +- AbstractKind
   +   +- BitsKind
   +   +- CompositeKind
   +   +- TypeConstructor
   +   +   +- AbstractMatrix{T} = AbstractArray{T,2}
   +   +   +- AbstractVector{T} = AbstractArray{T,1}
   +   +   +- Indices{T<:Integer} = Union(AbstractArray{T<:Integer,1},Integer)
   +   +   +- Matrix{T} = Array{T,2}
   +   +   +- StridedArray{T, N, A<:Array{T,N}} = Union(SubArray{T,N,A<:Array{T,N},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},Array{T,N})
   +   +   +- StridedMatrix{T, A<:Array{T,N}} = Union(SubArray{T,2,A<:Array{T,N},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},Array{T,2})
   +   +   +- StridedVecOrMat{T} = Union(Array{T,2},SubArray{T,2,A<:Array{T,N},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},Array{T,1},SubArray{T,1,A<:Array{T,N},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)})
   +   +   +- StridedVector{T, A<:Array{T,N}} = Union(SubArray{T,1,A<:Array{T,N},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},Array{T,1})
   +   +   +- SubDArray{T, N, D<:DArray{T,N,distdim}} = SubArray{T,N,D<:DArray{T,N,distdim},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)}
   +   +   +- SubOrDArray{T, N} = Union(SubArray{T,N,D<:DArray{T,N,distdim},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},DArray{T,N,distdim})
   +   +   +- VecOrMat{T} = Union(Array{T,2},Array{T,1})
   +   +   +- Vector{T} = Array{T,1}
   +   +- UnionKind
   +       +- ByteString = Union(UTF8String,ASCIIString)
   +       +- Chars = Union(Set{Char},AbstractArray{Char,1},Char)
   +       +- Cmds = Union(Set{Cmd},Cmd)
   +       +- Dimspec = Union((Int64...,),Int64)
   +       +- Executable = Union(Function,Array{Union(UTF8String,ASCIIString),1})
   +       +- Indices{T<:Integer} = Union(AbstractArray{T<:Integer,1},Integer)
   +       +- None = None
   +       +- Ports = Union(Set{Port},Port)
   +       +- RangeIndex = Union(Range1{Int64},Range{Int64},Int64)
   +       +- StridedArray{T, N, A<:Array{T,N}} = Union(SubArray{T,N,A<:Array{T,N},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},Array{T,N})
   +       +- StridedMatrix{T, A<:Array{T,N}} = Union(SubArray{T,2,A<:Array{T,N},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},Array{T,2})
   +       +- StridedVecOrMat{T} = Union(Array{T,2},SubArray{T,2,A<:Array{T,N},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},Array{T,1},SubArray{T,1,A<:Array{T,N},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)})
   +       +- StridedVector{T, A<:Array{T,N}} = Union(SubArray{T,1,A<:Array{T,N},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},Array{T,1})
   +       +- SubOrDArray{T, N} = Union(SubArray{T,N,D<:DArray{T,N,distdim},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},DArray{T,N,distdim})
   +       +- Top = Top
   +       +- VecOrMat{T} = Union(Array{T,2},Array{T,1})
   +       +- Void = None
   +- TypeName
   +- TypeVar
   +- Undef
   +   +- Top = Top
   +- VersionNumber
   +- WeakRef
   +- Zip

I (vtjnash) am generating this from a script (examples/typetree.jl). If you have suggestions on better ways of representing the data, I'm all ears. I'm especially looking for a good way to add in information from modules and other files, usage of color and font that would improve readability, and perhaps some javascript magic / hover titles / hyperlinks that would be helpful.

Clone this wiki locally