then Julia needs a Maybe type as well?
On Friday, 29 May 2015 10:16:40 UTC-3, andrew cooke wrote:
>
>
> I'm not sure if I'm confused, or if there's a problem here, and I don't
> know what any fix would be anyway, so apologies for the open-ended post
> but...
>
> I cannot find on "option" type in Julia that I can dispatch on, so that I
> have a method call different functions, depending on whether a value is
> present or not.
>
> What I think I need is:
>
> typealias Maybe{T} Union(T,Nothing}
>
>
>
> That allows me to do:
>
> julia> foo(::Int) = "int"
> foo (generic function with 1 method
>
> julia> foo(::Nothing) = "nothing"
> foo (generic function with 2 methods)
>
> julia> bar(x::Maybe{Int}) = foo(x)
> bar (generic function with 1 method)
>
> julia> foo(1)
> "int"
>
> julia> foo(nothing)
> "nothing"
>
> julia> bar(nothing)
> "nothing"
>
> julia> bar(1)
> "int"
>
>
> which seems like what I want.
>
> HOWEVER, there's also Nullable, described at
> http://julia.readthedocs.org/en/latest/manual/types/#nullable-types-representing-missing-values
>
> and also at
> http://docs.julialang.org/en/latest/manual/faq/#nothingness-and-missing-values
>
> which seems like what I "should" be using. But I can't see how to dispatch
> on it.
>
> So it seems like one of the following is true
>
> 1 - There is a way to dispatch on Nothing, and please someone explain it
> to me
>
> 2 - Nullable should be changed so that it can be dispatched on
>
> 3 - We need Maybe in Base as well as Nothing.
>
> 1 or 2 sounds fine (although I personally don't see how you can do 2). 3
> seems like the worst option, but still is presumably better than everyone
> and their dog defining this type in their own code.
>
> Any enlightenment appreciated,
> Andrew
>
> PS More references
>
> https://github.com/JuliaLang/julia/issues/3332
>
> https://github.com/JuliaLang/julia/issues/1134
>
> https://github.com/JuliaLang/julia/pull/8152
>