<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 12, 2016, at 12:08 PM, Антон Жилин <<a href="mailto:antonyzhilin@gmail.com" class="">antonyzhilin@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">First of all, I insist that a deadline of less than 1 week is extremely tough for this specific proposal. There are just too many details that we need to work out, too many approaches to the problem that we want to consider. As many people as possible should be able to express ideas on this. A special request to core team is to extend the review to 2 week at least, or even more if it will be needed.</div></div></blockquote><div><br class=""></div><div>I'm inclined to agree. I'd be happy to extend the review period.</div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class=""><br class=""></div><div class="">I dislike the proposal as it is, especially the syntax. I think that rolling out a language feature and "bikeshedding" it is only right if we are ready to settle with most (although not all) of it. It's not the state of things currently.</div><div class=""><br class=""></div><div class="">I have prepaired a draft (not real proposal) of my vision on the problem. I tried to look at it from the other side, using existing Swift terms where possible. Some wording or details might be off. Link to the gist:</div><div class=""><br class=""></div><div class=""><a href="https://gist.github.com/Anton3/f71a3e2ee29dffe1b9b2" class="">https://gist.github.com/Anton3/f71a3e2ee29dffe1b9b2</a></div></div>
</div></blockquote></div><br class=""><div class=""><pre style="box-sizing: border-box; overflow: auto; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 14px; margin-top: 0px; margin-bottom: 0px; line-height: 1.45; padding: 16px; background-color: rgb(247, 247, 247); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: normal; word-break: normal; color: rgb(51, 51, 51);" class=""><span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">public</span> behaviour <span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">lazy</span><span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);"><</span>ValueType<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">></span> {
<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">private</span> <span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">var</span> storage: ValueType? <span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">=</span> <span class="pl-c1" style="box-sizing: border-box; color: rgb(0, 134, 179);">nil</span>
<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">private</span> <span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">var</span> closure: (() <span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">-></span> ValueType)?
</pre></div><div class=""><br class=""></div><div class="">IMO it's unacceptable to have to store a closure for every individual lazy property. That significantly increases the storage cost of the abstraction.</div><div class=""><br class=""></div><div class="">-Joe</div></body></html>