I already know how I could implement this for a given dimensionality. For 
example, for the two-dimensional case I can define:

immutable twoDimSimplex
    weight1::Float64
    weight2::Float64    
    
    twoDimPortfolio(x::Float64, y::Float64) = (abs(x+y - 1) > 1e-10) ? 
error("entries must sum to one") : new(x,y)
end    

However, I do not get how I could extend this for the n-dimensional case. 
Here, I thought that I would have to use one field which stores a 
n-dimensional vector:

immutable nDimSimplex
    points::Vector{Float64}
    
    nDimSimplex(x::Vector{Float64}) = (abs(sum(x) - 1) > 1e-10) ? 
error("entries must sum to one") : new(x)
end

Now, I think that it will not be possible to change the vector that the 
field points to. However, the entries of the vector itself still can be 
changed without restrictions. Any recommendations?

On Tuesday, 31 December 2013 12:33:57 UTC+1, Tim Holy wrote:
>
> Use an immutable 
> http://docs.julialang.org/en/release-0.2/manual/types/#immutable-composite- 
> types 
> with an inner constructor: 
> http://docs.julialang.org/en/release-0.2/manual/constructors/#inner- 
> constructor-methods<http://docs.julialang.org/en/release-0.2/manual/constructors/#inner-constructor-methods>
>  
>
> You may find the example 
> http://docs.julialang.org/en/release-0.2/manual/constructors/#case-study- 
> rational 
> helpful. 
>
> Best, 
> --Tim 
>
>

Reply via email to