<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="">Pure functions, as a concept, get +3245 from because, among other reasons, I *think* it’d help with auto-parallelization, which is of course the greatest computational problem of our time (besides a lack of native CPU support for arbitrary precision math). If not, then merely +1… I simply do not believe it wouldn’t eventually be useful for <i class="">something</i>&nbsp;(manual parallelization comes to mind),&nbsp;and the sooner we get language support for deep concepts like this, the less code will have to be recompiled if it breaks something (and somehow gets accepted anyway).<div class=""><br class=""></div><div class="">At the moment, the only other strong opinion I have on the matter is that&nbsp;<i class="">only</i>&nbsp;going with “auto-detect” is a bad idea, because then there’s no clear way to tell why you can’t pass your “I-thought-it-was-pure-but-it-really-isn’t” function to something that requires a function that actually is pure. I don’t mind the compiler auto-detecting purity (or anything, really) <i class="">in addition</i> to manual annotations, if it can, but I’ll always want a way to override it.</div><div class=""><br class=""></div><div class=""><div apple-content-edited="true" class="">
- Dave Sweeris</div><div class=""><br class=""></div><div><blockquote type="cite" class=""><div class="">On Jan 14, 2016, at 04:22, Michel Fortin via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><div class=""><div class=""><br class="">In D, for template functions, the pure attribute is deduced from the function's body. It'd be nice to have deduced purity so you don't have to figure out those conditional purity requirements for every function. <br class=""><br class="">Deduced purity should probably not extend automatically to other resilience domains though, because it provides a guaranty that might not apply to future versions of that function. So you still need a way to annotate.<br class=""></div></div></blockquote></div><br class=""></div></body></html>