Hi Peter,

thank you again, this is a great reference.
Would you agree that, while your solution is pretty flexible, it is not 
equivalent to a feature which would allow one to spread out a module to 
several files. Don't get me wrong, I really like your example and how it 
illustrates the capabilities of aliases and imports to unify several 
modules under a common interface, but due to the imports, it is a bit more 
restricted and wouldn't allow one to have "function a" in ModuleName.A and 
"function b" in ModuleName.B and call those function from the other module.

I don't have a particular use case where something like this is required 
and I think the option you highlighted covers most use cases where you want 
to separate a large module into several smaller ones, so thanks again!
Robert

On Friday, July 8, 2016 at 2:31:09 PM UTC+2, Peter Damoc wrote:
>
> I've created some sample code starting from the Counter Example 
>
> https://github.com/pdamoc/elm-assistance/tree/master/MultiFile
>
> Please take a look. 
>
>
>
>
> On Fri, Jul 8, 2016 at 2:14 PM, Robert Walter <[email protected] 
> <javascript:>> wrote:
>
>> Thanks Peter for showing these options.
>> In both cases, however, the modules themselves wouldn't be able to share 
>> types, for example. I could think of a "physical" separation of a module's 
>> code like so:
>>
>> src
>> |_ moduleName.model.elm
>> |_ moduleName.view.elm
>> |_ moduleName.update.elm
>>
>> Where I define type aliases and types in "moduleName.model.elm" and where 
>> I can access those in the other files (given that they all are part of the 
>> same module). Maybe I'm missing something?
>>
>>
>> On Friday, July 8, 2016 at 11:03:23 AM UTC+2, Peter Damoc wrote:
>>>
>>> If you want you can break a module into multiple files and offer a 
>>> unified interface. 
>>>
>>> I can think of two ways to do this. 
>>>
>>> 1. with folders, where you push all the module files into its own folder 
>>> and add that folder to the "source-directories" in elm-package.json. 
>>> 2. with prefixing/suffixing in file names / module names. 
>>>
>>> In both cases the pattern is the same, you create aliases: 
>>>
>>> module ModuleName exposing (first, second, third)  
>>>
>>> import ModuleName.First 
>>> import ModuleName.Second
>>> import ModuleName.Third 
>>>
>>> first = ModuleName.First.first 
>>>
>>> second = ModuleName.Second.second
>>>
>>> third = ModuleName.Third.third
>>>
>>>
>>> If it helps, you can think about the actual ModuleName as playing the 
>>> role of __init__.py in a python module. ;) 
>>>
>>>  
>>>
>>> On Fri, Jul 8, 2016 at 11:48 AM, Robert Walter <[email protected]> 
>>> wrote:
>>>
>>>> Hello,
>>>>
>>>> as far as I can tell, it is a requirement that a module names matches 
>>>> its file name, which means that one cannot split a module into several 
>>>> files, correct?
>>>> I'm curious about the rational behind it? Is it "just" so that the 
>>>> compiler has an easier time resolving imports or are there other reasons 
>>>> as 
>>>> well?
>>>>
>>>> One could argue that it forces users to keep things that belong 
>>>> together logically also physically together and that it encourages you to 
>>>> keep modules small. On the other hand, message communication between 
>>>> modules seems to be a bit unwieldy which makes me hesitant to create too 
>>>> big of a module hierarchy. From a beginner's point of view, I like the 
>>>> idea 
>>>> of "partial module" declarations, but I can imagine that there are good 
>>>> reasons against that.
>>>>
>>>> best,
>>>> Robert
>>>>
>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "Elm Discuss" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected].
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>
>>>
>>> -- 
>>> There is NO FATE, we are the creators.
>>> blog: http://damoc.ro/
>>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Elm Discuss" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> -- 
> There is NO FATE, we are the creators.
> blog: http://damoc.ro/
>

-- 
You received this message because you are subscribed to the Google Groups "Elm 
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to