The toplevel module is called "Main". So Main.start(g2, s)
On Mon, Jun 2, 2014 at 9:40 AM, Robert Feldt <robert.fe...@gmail.com> wrote: > Hi, > > I want to be able to call out from a function (defined within a module) to > a method with a specific name but that is defined outside the module. Let > me try to show the actual code to help clarify: > > module M > > abstract G > s_type(g::G) = g.s_type > > function new_s(g::G) > s = s_type(g) > s(g) > end > > # This is the function that should call out to methods named start > # that are defined outside this module: > function g(g::G) > s = new_s(g) > println("start(", typeof(g), ", ", typeof(s), ")") > start(g, s) > end > > abstract S > > type DefaultS <: S > g > DefaultS(g::G) = new(g) > end > > end > > type G2 <: M.G > s_type > > function G2() > new(M.DefaultS) > end > end > > # This is the function I want to call out to from within the module M: > function start(g::G2, s::M.DefaultS) > 1 > end > > g2 = G2() > s = M.DefaultS(g2) > > Now if I call start directly it does as expected: > > julia> start(g2, s) > 1 > > But if I call through the g function in the module it complains: > ulia> M.g(g2) > start(G2, DefaultS) > ERROR: no method start(G2, DefaultS) > in g at none:15 > > despite: > > julia> methods(start) > # 1 method for generic function "start": > start(g::G2,s::DefaultS) at none:2 > > What have I missed? Thanks for any help, > > Robert Feldt >