Thanks for the responses!  I wasn't not sure how I could use typealiases to 
deal with this, so I went with the macro route and ended up with 
https://gist.github.com/darwindarak/0eb5e53c21c896392938.  It converts the 
functions/type declarations into the parametric form suggested by Mauro.

On Tuesday, July 21, 2015 at 2:50:16 PM UTC-7, David Gold wrote:
>
> Or use typealiases?
>
> On Tuesday, July 21, 2015 at 4:48:31 PM UTC-4, David Gold wrote:
>>
>> My instinct is to write a macro.
>>
>> On Tuesday, July 21, 2015 at 4:37:03 PM UTC-4, Darwin Darakananda wrote:
>>>
>>> Hi all,
>>>
>>> I'm in the process of replacing my Union{Nothing, T} annotations to 
>>> Nullable{T}, but I'm getting stuck when T is a parametric type.  For 
>>> example, replacing the function
>>>
>>> function myfunc(v::Union{Nothing, Vector})
>>>     ...
>>> end
>>>
>>> with
>>>
>>> function myfunc(v::Nullable{Vector})
>>>     ...
>>> end
>>>
>>> makes it completely uncallable since any vector I pass in comes with an 
>>> eltype parameter and Julia's type parameters are invariant.  For functions 
>>> or types that only have a couple Nullable types, I can do something like
>>>
>>> function myfunc{T}(v::Nullable{Vector{T}})
>>>     ...
>>> end
>>>
>>> type MyType{T}
>>>    v::Nullable{Vector{T}
>>> end
>>>
>>> but that gets very ugly when you have a large number of nullable types. 
>>>  Does anyone know of a cleaner way to do this?
>>>
>>> Thanks,
>>>
>>> Darwin
>>>
>>

Reply via email to