Yeah, that will do it. You should only include dataTypes.jl in one place.

On Fri, Dec 12, 2014 at 10:28 AM, Test This <[email protected]> wrote:

> Hi Stefan,
>
> Please see below for what may be relevant code structure. I am happy to
> email the actual code off the list if you think that is necessary.
>
>
> The code which resulted in the problem had three different files.
>
> 1. dataTypes.jl (this file defines the Params composite type).
>
> 2. paramcombos.jl (there is a baseparams() function in this file, which
> creates
>    an instance of Params type).
>
> 3. runsim.jl (the simulate function which gave the error was in this file)
>
> I did not declare any module statements in either dataTypes.jl or
> runsim.jl, but did
> declare module paramcombos in paramcombos.jl. The relevant structure of
> the files:
>
> -------------------------------------------------------------
> *## File dataTypes.jl*
>
>     type Params
>         .
>         .
>         .
>     end
>
> -------------------------------------------------------------
> *## File paramcombos.jl*
>
>     module paramcombos
>
>     import Distributions
>     include("dataTypes.jl")
>
>     function baseparams()
>        ... # body of this function
>        return Params(...)
>     end
>     end
>
> -------------------------------------------------------------
> *## File runsim.jl*
>
>     include("dataTypes.jl")
>     require("paramcombos.jl")
>
>
>     function simulate(params::Params, rseed::Int)
>         ... # body of this function
>     end
>
>     function main()
>         basep = paramcombos.baseparams()
>         simulate(basep, 1)
>     end
>
>     main()
>
>
> Thanks for looking into this.
>
>
>
> On Friday, December 12, 2014 8:16:40 AM UTC-5, Stefan Karpinski wrote:
>>
>> I would love to detect this kind of confusing situation and indicate
>> what's happening better because obviously it's pretty confusing when you
>> first encounter it.
>>
>> On Fri, Dec 12, 2014 at 4:37 AM, Test This <[email protected]> wrote:
>>
>>> Thanks Stefan. Yes, it looks like this is related to my lack of clear
>>> understanding about include vs. require.
>>>
>>> I am reading the docs John Myles (http://julia.readthedocs.org/
>>> en/release-0.3/manual/modules/) directed me to and will report back on
>>> whether that helps me fix the issue.
>>>
>>>
>>>
>>> On Thursday, December 11, 2014 11:54:55 PM UTC-5, Stefan Karpinski wrote:
>>>>
>>>> It is possible that you have managed to get into a state where there
>>>> are two different types by the name Params.
>>>>
>>>>
>>>> On Dec 11, 2014, at 9:10 PM, Test This <[email protected]> wrote:
>>>>
>>>>
>>>> I am running into what appears to be weird error. I have this function
>>>> simulate that takes two arguments. When I try to run the file containing
>>>> this function I get
>>>> the following error. I have added println( methods(simulate) ) to the
>>>> code so that you can see its methods.
>>>>
>>>>
>>>> *# 1 method for generic function "simulate":*
>>>> *simulate(params::Params,rseed::Int64) at
>>>> /Users/code/simulationcode.jl:340*
>>>> *ERROR: `simulate` has no method matching simulate(::Params, ::Int64)*
>>>>
>>>>
>>>> Are the 2nd and 3rd lines not contradictory?
>>>>
>>>> Thanks in advance for your help.
>>>>
>>>>
>>

Reply via email to