<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Feb 21, 2017, at 1:46 AM, Jonathan Hull <<a href="mailto:jhull@gbis.com" class="">jhull@gbis.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Feb 20, 2017, at 6:44 PM, Robert Widmann <<a href="mailto:devteam.codafi@gmail.com" class="">devteam.codafi@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><blockquote type="cite" class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class=""><br class="Apple-interchange-newline"><br class=""></div><div class="">I would honestly love to see something which just maps modules to folders/groups for simplicity sake.</div><div class=""><br class=""></div></div></div></blockquote><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">There is nothing about this scheme that prevents you from organizing your code this way. However, modulo that particular method of organization, you don’t really gain much as a user of the language by imposing this restriction.</div></div></blockquote></div><br class=""><div class="">I think the big gain is that users of IDEs would just be able to graphically organize modules in Xcode. Non-IDE users could use the finder to organize things into nested folders. This maps pretty well with the way I organize my code already (others may be different), so it doesn’t add much complexity.</div><div class=""><br class=""></div></div></div></blockquote><div><br class=""></div><div>Xcode today is able to do this with nested classes and structures with the hierarchy navigator. Non-IDE users can use grep or (hopefully) some syntax-aware plugin system to help them find these declarations. Really, again, this is a design pattern and one that can be enforced by linters. If we were to impose this restriction at the language level it ties this proposal down to file system structure and we are explicitly trying to avoid that.</div><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">On a side note, I do think that people will quickly want a way to reference a particular submodule boundary with access modifiers. It may not be part of this proposal, but it is somewhat inevitable. We should consider that as we consider this proposal…</div><div class=""><br class=""></div></div></div></blockquote><div><br class=""></div><div>Modules are not types, access control makes no sense here. APIs may be exported (or not) across module boundaries, but modules themselves are not arbitrary programming constructs nor do we consider them to carry semantic weight as in some other ML-likes. A public module is no different from a private module if you can import it. A private module is no different from a public one if you cannot.</div><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Thanks,</div><div class="">Jon</div></div></div></blockquote></div><br class=""></body></html>