<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=""><div><blockquote type="cite" class=""><div class="">On Dec 9, 2015, at 6:42 AM, Ilya via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: 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=""><span class=""><div style="font-family: Helvetica; font-size: 12px;" class="">For me, hiding implementation details is a fundamental feature of the language / compiler. It is possible to get by without it with coding by convention, but it’s also possible to get by without a strong type system. Having a way to hide implementation details that is enforced by the language will help to have clearly defined interfaces and limit hacks and mistakes for misusing APIs that are meant to be private.</div></span></div></div></blockquote><br class=""></div><div>The current implementation strikes a good balance here. Couldn’t project-specific requirements for where private variables/functions are accessed be enforced by a linter?</div><div><br class=""></div><div>Stephen</div></body></html>