Yes, this will work, I think. What you're doing is adding an outer 
constructor to Normal that in fact constructs something else.

The only problem you might run into is that other functions that expect a 
Normal may not accept your custom type. 

More info:

For Distributions.jl, the strategy has been to generalize Normal to have a 
type parameter:

Normal{T <: Real} (see more here 
<https://github.com/JuliaStats/Distributions.jl/pull/475>). I'm partway 
through implementing this for the whole library, after which forward-mode 
automatic differentiation will work out of the box, since AD numbers are 
subtypes of Real. This is not quite mathematically correct (there's a long 
discussion on GitHub), but in this case, practicality beats purity.

There's another potential strategy for this, which is creating a new 
subtype of an AbstractNormal, but right now, Normal <: 
ContinuousUnivariateDistribution.

It might be nice to have Normal <: AbstractNormal <: 
ContinuousUnivariateDistribution so that alternative Normal types might be 
possible (I advocated strongly 
<https://github.com/JuliaStats/Distributions.jl/pull/430> for this and even 
implemented a prototype 
<https://github.com/jmxpearson/DiffableDistributions.jl>), but it turned 
out to be trickier for some corner cases than I realized (basically because 
AbstractMvNormal already exists), so the first strategy turned out to be 
cleaner and is what's being implemented.

On Tuesday, April 12, 2016 at 6:37:24 AM UTC-4, Jameson Quinn wrote:
>
> Hmm... I guess that this may be a non-issue. I tried the following:
>
>     type Foo
>       a::Float64
>     end
>
>     function Foo(a::Int64)
>       a
>     end
>
>     Foo(1.0) #Foo(1.0)
>     Foo(1) #1
>
> ...and it seems there's no syntactic issues with having a function named 
> the same as a type which returns values of a different type. So I could 
> just create a new function Normal(DualNumber,DualNumber) which returns a 
> DifferentiableNormal object, and everything would work.
>
> So this question reduces to: is that a stylistic no-no?
>

Reply via email to