[swift-evolution] [Proposal][Discussion] Modular Swift
Jaden Geller
jaden.geller at gmail.com
Tue Feb 21 01:00:16 CST 2017
We avoid forcing users to organize code in such an opinionated manner just to please the compiler. Perhaps some submodules deserve a separate file, but I think that choice should not be forced by the language. I don’t have data on the popularity, but I personally very much dislike the similar restriction Java places on public classes and files.
Given that we want Swift to be a fantastic scripting language, I feel we ought not place artificial restrictions on code organization. Many scripts are a single file (for convenience) but may still benefit from the organization modules offer.
Best,
Jaden Geller
> On Feb 20, 2017, at 10:51 PM, Jonathan Hull <jhull at gbis.com> wrote:
>
> Part of it. My concern is that the brackets will push everything in the file to the right.
>
> My question is: What do we get in return for that? (as opposed to a system which acted on the whole file)
>
> Thanks,
> Jon
>
>
>> On Feb 20, 2017, at 10:45 PM, Jaden Geller <jaden.geller at gmail.com <mailto:jaden.geller at gmail.com>> wrote:
>>
>> Oh, you’re referring to the fact that a submodule under this proposal must be contained within braces? It would be purely additive to, in the future, annotate that the outer scope of a file is part of some given submodule.
>>
>> Consider the following the following straw-man syntax that might be equivalent to `module Bar { func foo() { } }`:
>> ```
>> module Bar follows // <- at top of file, indicating rest of file is submodule
>>
>> func foo() { }
>> ```
>>
>> Does this address your question?
>>
>> Thanks,
>> Jaden Geller
>>
>>> On Feb 20, 2017, at 10:39 PM, Jonathan Hull <jhull at gbis.com <mailto:jhull at gbis.com>> wrote:
>>>
>>>
>>>> On Feb 20, 2017, at 6:42 PM, Jaden Geller <jaden.geller at gmail.com <mailto:jaden.geller at gmail.com>> wrote:
>>>>
>>>> Jon,
>>>>
>>>> I think we might have miscommunicated. It is intended that outermost module is implicit; no `module` declaration is required to wrap every file. We tried to show this in the first code snippet.
>>>>
>>>> What do you mean “covering only part of a file”?
>>>
>>> I am assuming that the ModuleName { … } only affects things within the brackets. Thus it is possible for only part of a file to be within a module. What are the benefits of allowing this, and are they worth the added complexity?
>>>
>>> Thanks,
>>> Jon
>>>
>>>
>>>> Cheers,
>>>> Jaden Geller
>>>>
>>>>> On Feb 20, 2017, at 6:36 PM, Jonathan Hull via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>>>>
>>>>> What is the rational for having modules covering only part of a file? Wouldn’t it be less clutter to have an annotation which worked for the whole file. At the very least it would be nice to have an option to spell it in a way that applies to the whole file. Otherwise, everything will be indented another level.
>>>>>
>>>>> I would honestly love to see something which just maps modules to folders/groups for simplicity sake.
>>>>>
>>>>> I haven’t thought about it too much yet, so I could easily be missing something obvious...
>>>>>
>>>>> Thanks,
>>>>> Jon
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170220/72491728/attachment.html>
More information about the swift-evolution
mailing list