JuliaStats/Distributions.jl — pull request #296 by lindahua (2014-11-04 14:34:38+00:00)
Title: WIP: Refactoring Multivariate Normal distributions

After refactoring, the class hierarchy would look like:
```julia
abstract AbstractMvNormal <: ContinuousMultivariateDistribution

# Here, ZeroVector is an empty type that indicates a vector is zero.
# Some operations are defined to make the interactions with zero vectors easy:
#
# + (x::Vector, z::ZeroVector) = x
#
# This type subsumes both zero-mean and non-zero-mean cases, while makes it possible
# to seamlessly leverage the zero-mean-case to simplify computation
#
immutable MvNormal{Cov<:AbstractPDMat,Mean<:Union(Vector{Float64},ZeroVector{Float64})} <: AbstractMvNormal
μ::Mean
Σ::Cov
end

immutable MvNormalCanon{Prec<:AbstractPDMat,HVec<:Union(Vector{Float64},ZeroVector{Float64})} <: AbstractMvNormal
h::HVec
J::Prec
end
```
Not finished yet, still ongoing work.