From 0.5 onwards, generic functions are identical to singleton types, so there seems to be no reason to support one and not the other.
julia> using JLD
julia> type Foo x end
julia> type Bar end
julia> x = Foo(Bar())
Foo(Bar())
julia> @save "test.jld" x
julia> x = Foo(fft)
Foo(fft)
julia> @save "test.jld" x
WARNING: isgeneric(f) is deprecated, use isa(f,Function) instead.
in depwarn(::String, ::Symbol) at ./deprecated.jl:64
in isgeneric(::Function) at ./deprecated.jl:50
in func2expr(::Function) at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:853
in Type at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:860 [inlined]
in writeas at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:863 [inlined]
in write_ref(::JLD.JldFile, ::Function, ::JLD.JldWriteSession) at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:667
in macro expansion at /Users/mike/.julia/v0.5/JLD/src/jld_types.jl:669 [inlined]
in h5convert!(::Ptr{UInt8}, ::JLD.JldFile, ::Foo, ::JLD.JldWriteSession) at /Users/mike/.julia/v0.5/JLD/src/jld_types.jl:685
in #write_compound#21(::Array{Any,1}, ::Function, ::JLD.JldFile, ::String, ::Foo, ::JLD.JldWriteSession) at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:709
in #write#14(::Array{Any,1}, ::Function, ::JLD.JldFile, ::String, ::Foo, ::JLD.JldWriteSession) at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:524
in write(::JLD.JldFile, ::String, ::Foo, ::JLD.JldWriteSession) at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:524
in macro expansion; at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:1177 [inlined]
in anonymous at ./<missing>:?
in eval(::Module, ::Any) at ./boot.jl:234
in eval(::Module, ::Any) at /Users/mike/projects/julia5/usr/lib/julia/sys.dylib:?
in eval_user_input(::Any, ::Base.REPL.REPLBackend) at ./REPL.jl:64
in macro expansion at ./REPL.jl:95 [inlined]
in (::Base.REPL.##3#4{Base.REPL.REPLBackend})() at ./event.jl:68
while loading no file, in expression starting on line 0
ERROR: AssertionError: generic functions not supported
in func2expr(::Function) at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:853
in Type at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:860 [inlined]
in writeas at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:863 [inlined]
in write_ref(::JLD.JldFile, ::Function, ::JLD.JldWriteSession) at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:667
in macro expansion at /Users/mike/.julia/v0.5/JLD/src/jld_types.jl:669 [inlined]
in h5convert!(::Ptr{UInt8}, ::JLD.JldFile, ::Foo, ::JLD.JldWriteSession) at /Users/mike/.julia/v0.5/JLD/src/jld_types.jl:685
in #write_compound#21(::Array{Any,1}, ::Function, ::JLD.JldFile, ::String, ::Foo, ::JLD.JldWriteSession) at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:709
in #write#14(::Array{Any,1}, ::Function, ::JLD.JldFile, ::String, ::Foo, ::JLD.JldWriteSession) at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:524
in write(::JLD.JldFile, ::String, ::Foo, ::JLD.JldWriteSession) at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:524
in macro expansion; at /Users/mike/.julia/v0.5/JLD/src/JLD.jl:1177 [inlined]
in anonymous at ./<missing>:?
From 0.5 onwards, generic functions are identical to singleton types, so there seems to be no reason to support one and not the other.