On Monday, January 18, 2016 at 11:54:49 AM UTC-5, Anonymous wrote:
>
> As you can see, I have to define a whole other type tree just so my metric 
> function can distinguish between sphere manifolds depending on what metric 
> structure I want it to have.  It would be both simpler and make more sense 
> conceptually to attach the metric to the manifold itself when I instantiate 
> it.
>

Here's another alternative:

@enum Metric RIEMANNIAN LORENTZIAN # ...
immutable Sphere
    dim::Int
    metric::Metric
end
function metric(s::Sphere)
    if s.metric == RIEMANNIAN
        # …
    elseif s.metric == LORENTZIAN #…
    end
end 

The key point is that you don't always need to attach a function — you can 
attach data that describes the object's properties, and then use that in 
your external functions.

(This is crossposted 
at 
http://stackoverflow.com/questions/34841635/immutable-type-with-function-fields-in-julia)

Reply via email to