Skip to content

Instantly share code, notes, and snippets.

@tshort
Created September 5, 2012 21:50
Show Gist options
  • Save tshort/3645547 to your computer and use it in GitHub Desktop.
Save tshort/3645547 to your computer and use it in GitHub Desktop.
Show method definitions that include a type

Here is the definition:

function methodswith(io, t::Type, m::Module)
    for nm in names(m)
        try
           mt = eval(nm)
           d = mt.env.defs
           while !is(d,())
               if any(map(x -> x == t, d.sig))
                   print(io, nm)
                   show(io, d)
                   println(io)
               end
               d = d.next
           end
        end
    end
end


methodswith(t::Type, m::Module) = methodswith(OUTPUT_STREAM::Stream, t::Type, m::Module)
methodswith(t::Type) = methodswith(OUTPUT_STREAM::Stream, t::Type, Base)

Here is an example for a Dict:

julia> methodswith(Dict)
isempty(Dict{K,V},) at dict.jl:426
numel(Dict{K,V},) at dict.jl:428
done(Dict{K,V},Any) at dict.jl:423
add_weak_value(Dict{K,V},Any,Any) at dict.jl:450
start(Dict{K,V},) at dict.jl:422
add_weak_key(Dict{K,V},Any,Any) at dict.jl:438
next(Dict{K,V},Any) at dict.jl:424
length(Dict{K,V},) at dict.jl:428
dump(Stream,Dict{K,V},Int32,Any) at show.jl:362
filter(Regex,Dict{K,V}) at regex.jl:134
del(Dict{K,V},Any) at dict.jl:406
serialize(Any,Dict{K,V}) at dict.jl:248
filter!(Regex,Dict{K,V}) at regex.jl:133

julia> methodswith(Associative)
merge!(Associative{K,V},Associative{K,V}...) at dict.jl:66
pairs((Union(Type{T<:Top},(Any...,)),Union(Type{T<:Top},(Any...,))),Associative{K,V}) at dict.jl:48
keys(Any,Associative{K,V}) at dict.jl:28
merge(Associative{K,V},Associative{K,V}...) at dict.jl:73
show(Any,Associative{K,V}) at dict.jl:11
copy(Associative{K,V},) at dict.jl:58
filter(Function,Associative{K,V}) at dict.jl:83
ref(Associative{K,V},Any) at dict.jl:101
has(Associative{K,V},Any) at dict.jl:7
filter!(Function,Associative{K,V}) at dict.jl:76
values(Any,Associative{K,V}) at dict.jl:38

Here are higher order functions:

julia> methodswith(Function)
one(Function,) at operators.jl:133
amap(Function,Union(Array{T,N},SubArray{T,N,A<:Array{T,N},I<:(Union(Int32,Range{Int32},Range1{Int32})...,)}),Integer) at array.jl:1467
help(Function,) at util.jl:387
each_col!(Function,AbstractArray{T,2}) at sort.jl:258
max(Function,Any) at reduce.jl:150
edit(Function,) at util.jl:147
edit(Function,Any) at util.jl:148
map(Function,) at operators.jl:139
map(Function,String) at string.jl:483
mapreduce(Function,Function,Any,Any) at reduce.jl:124
open(Function,Any...) at io.jl:97
sort(Function,AbstractArray{T,1}) at sort.jl:305
sort(Function,AbstractArray{T,N},Int32) at sort.jl:306
sort(Function,AbstractArray{T,N}) at sort.jl:307
Filter{I}(Function,I)
exec(Function,) at stream.jl:768
enq_work(Function,) at multi.jl:721
open_any_tcp_port(Uint16,Function) at stream.jl:234
open_any_tcp_port(Integer,Function) at stream.jl:247
spawn(Function,) at multi.jl:1336
less(Function,) at util.jl:149
less(Function,Any) at util.jl:150
sum(Function,Any) at reduce.jl:152
reduce(Function,Any,Any) at reduce.jl:82
force(Function,) at serialize.jl:236
function_loc(Function,Any) at util.jl:66
function_loc(Function,) at util.jl:77
GlobalObject(Any,Function) at multi.jl:1198
GlobalObject(Function,) at multi.jl:1229
all(Function,Any) at reduce.jl:155
find(Function,Union(Array{T,N},SubArray{T,N,A<:Array{T,N},I<:(Union(Int32,Range{Int32},Range1{Int32})...,)})) at array.jl:1192
findfirst(Function,Union(Array{T,N},SubArray{T,N,A<:Array{T,N},I<:(Union(Int32,Range{Int32},Range1{Int32})...,)})) at array.jl:1181
each_vec!(Function,AbstractArray{T,2},Integer) at sort.jl:274
scan(Function,()) at reduce.jl:214
scan(Function,(Any...,)) at reduce.jl:216
each_row(Function,AbstractArray{T,2}) at sort.jl:280
count(Function,Any) at reduce.jl:156
areduce{T}(Function,Union(Array{T,N},SubArray{T,N,A<:Array{T,N},I<:(Union(Int32,
Range{Int32},Range1{Int32})...,)}),Union(Int32,(Int32...,)),Any) at array.jl:1304
areduce(Function,Union(Array{T,N},SubArray{T,N,A<:Array{T,N},I<:(Union(Int32,Range{Int32},Range1{Int32})...,)}),Union(Int32,(Int32...,)),Any,Type{T<:Top}) at array.jl:1349
areduce(Function,DArray{T,N,distdim},Union(Int32,(Int32...,)),Any,Type{T<:Top}) at darray.jl:905
TransformedString(Function,String)
any(Function,Any) at reduce.jl:154
sprint(Integer,Function,Any...) at io.jl:264
sprint(Function,Any...) at io.jl:269
sort!{T}(Function,AbstractArray{T,1}) at sort.jl:200
sort!(Function,AbstractArray{T,2},Int32) at sort.jl:290
sort!(Function,AbstractArray{T,N}) at sort.jl:303
idump(Function,Stream,Array{Any,N},Int32,Any) at show.jl:269
idump(Function,Stream,Symbol,Int32,Any) at show.jl:277
idump(Function,Stream,Function,Int32,Any) at show.jl:278
idump(Function,Stream,Array{T,N},Int32,Any) at show.jl:279
idump(Function,Stream,UnionKind,Int32,Any) at show.jl:282
idump(Function,Stream,CompositeKind,Int32,Any) at show.jl:284
idump(Function,Stream,Any,Int32,Any) at show.jl:252
idump(Function,Stream,AbstractKind) at show.jl:343
idump(Function,Stream,AbstractKind,Int32) at show.jl:344
idump(Function,Stream,Any) at show.jl:347
idump(Function,Stream,Any,Int32) at show.jl:348
idump(Function,Any...) at show.jl:349
darray(Function,Int32...) at darray.jl:291
darray{T}(Function,Type{T},(Int32...,)) at darray.jl:287
darray(Function,Type{T<:Top},Int32...) at darray.jl:289
darray(Function,(Int32...,)) at darray.jl:290
darray(Function,Union(DArray{T,N,distdim},SubArray{T,N,DArray{T,N,distdim},I<:(Union(Int32,Range{Int32},Range1{Int32})...,)})) at darray.jl:299
each_col(Function,AbstractArray{T,2}) at sort.jl:279
times(Function,Int32) at util.jl:406
each_row!(Function,AbstractArray{T,2}) at sort.jl:266
replace(Union(ASCIIString,UTF8String),Any,Function,Integer) at string.jl:908
replace(String,Any,Function,Integer) at string.jl:926
prod(Function,Any) at reduce.jl:153
cd(Function,String) at file.jl:222
cd(Function,) at file.jl:235
transform_to_utf8(String,Function) at utf8.jl:84
each_vec(Function,AbstractArray{T,2},Integer) at sort.jl:281
|(Any,Function) at operators.jl:136
filter(Function,) at operators.jl:140
filter(Function,Union(Array{T,N},SubArray{T,N,A<:Array{T,N},I<:(Union(Int32,Range{Int32},Range1{Int32})...,)})) at array.jl:1614
filter(Function,Associative{K,V}) at dict.jl:83
filter(Function,Any) at iterator.jl:52
start_reading(AsyncStream,Function) at stream.jl:476
sort_by(Function,AbstractArray{T,1}) at sort.jl:305
sort_by(Function,AbstractArray{T,N},Int32) at sort.jl:306
sort_by(Function,AbstractArray{T,N}) at sort.jl:307
sort_by!{T}(Function,AbstractArray{T,1}) at sort.jl:202
sort_by!(Function,AbstractArray{T,2},Int32) at sort.jl:290
sort_by!(Function,AbstractArray{T,N}) at sort.jl:303
wait(AsyncStream,Function) at stream.jl:792
serialize(Any,Function) at serialize.jl:144
*(Function,Function) at operators.jl:135
min(Function,Any) at reduce.jl:151
finalizer(Any,Function) at base.jl:97
filter!(Function,Associative{K,V}) at dict.jl:76
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment