include works as if you had pasted the contents of the file at the point
where it's called – if you call it in multiple places, it's just as if
you'd cut-and-pasted the code. import, using and require load things once
and import and using are expected to produce a module by the given name.

On Fri, Dec 12, 2014 at 12:59 PM, Test This <[email protected]> wrote:

> Does that restriction (including file in only one place) apply to "import"
> or "using"? I think not, but just confirming. Sorry if the docs clearly
> address that, but I don't remember.
>
> Thank you.
>
>
>
>
>
> On Friday, December 12, 2014 10:40:56 AM UTC-5, Stefan Karpinski wrote:
>>
>> 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