Skip to content
vtjnash edited this page Jun 5, 2012 · 3 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 06bfc23bf4 (2012-06-04 16:16:32)
+- 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(AbstractArray{Char,1},Char)
   +   +- DArray{T, N, distdim}
   +   +   +- SubOrDArray{T, N} = Union(SubArray{T,N,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} = SubArray{T,N,DArray{T,N,distdim},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)}
   +       +- SubOrDArray{T, N} = Union(SubArray{T,N,DArray{T,N,distdim},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)},DArray{T,N,distdim})
   +- Associative{K, V}
   +   +- Dict{K, V}
   +   +- EnvHash (=Associative{Union(UTF8String,ASCIIString), Union(UTF8String,ASCIIString)})
   +   +- ObjectIdDict (=Associative{Any, Any})
   +   +- VarTable = ObjectIdDict
   +   +- WeakKeyDict{K, V}
   +- Box
   +- CallStack
   +- Cmd
   +   +- Cmds = Union(Set{Cmd},Cmd)
   +- Colon
   +- EachLine
   +- EachSearch
   +- EmptyCallStack
   +- 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
   +- FileDes
   +- Filter{I}
   +- Function
   +   +- Executable = Union(Function,Array{Union(UTF8String,ASCIIString),1})
   +- GORef
   +- GlobalObject
   +- GotoNode
   +- IO
   +   +- IOStream
   +   +- IOTally
   +- IntSet
   +- IntrinsicFunction
   +- LabelNode
   +- LambdaStaticData
   +- LineNumberNode
   +- LocalProcess
   +- Location
   +- LongExpr
   +- LongSymbol
   +- LongTuple
   +- Method
   +- MethodTable
   +- Module
   +- NTuple{N, T}
   +- NotFound
   +- Nothing
   +- Number
   +   +- Complex{T<:Real}
   +   +   +- Complex128 (=Complex{Float64})
   +   +   +- Complex64 (=Complex{Float32})
   +   +   +- ComplexPair{T<:Real}
   +   +   +- ImaginaryUnit (=Complex{Int32})
   +   +- Real
   +       +- Float
   +       +   +- Float32
   +       +   +- Float64
   +       +- Integer
   +       +   +- Bool
   +       +   +- Char
   +       +   +   +- Chars = Union(AbstractArray{Char,1},Char)
   +       +   +- Indices{T<:Integer} = Union(AbstractArray{T<:Integer,1},Integer)
   +       +   +- Signed
   +       +   +   +- FileOffset = Int64
   +       +   +   +- Int = Int64
   +       +   +   +- Int16
   +       +   +   +- Int32
   +       +   +   +- Int64
   +       +   +   +   +- RangeIndex = Union(Range1{Int64},Range{Int64},Int64)
   +       +   +   +   +- Region = Union((Int64...,),Int64)
   +       +   +   +- Int8
   +       +   +- Unsigned
   +       +       +- Uint = Uint64
   +       +       +- 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
   +- Set{T}
   +   +- Cmds = Union(Set{Cmd},Cmd)
   +   +- Ports = Union(Set{Port},Port)
   +- StateUpdate
   +- StaticVarInfo
   +- 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} = SubArray{T,N,DArray{T,N,distdim},I<:(Union(Range1{Int64},Range{Int64},Int64)...,)}
   +   +   +- SubOrDArray{T, N} = Union(SubArray{T,N,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(AbstractArray{Char,1},Char)
   +       +- Cmds = Union(Set{Cmd},Cmd)
   +       +- 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)
   +       +- Region = Union((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,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
   +- UniqueNames
   +- VersionNumber
   +- WaitFor
   +- WeakRef
   +- WorkItem
   +- Worker
   +- Zip
   +- _jl_Type_Array{Array{T,N}} = Type

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