<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></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 Mar 2, 2016, at 12:20 PM, Erica Sadun &lt;<a href="mailto:erica@ericasadun.com" class="">erica@ericasadun.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><i class="" style="font-family: Helvetica; font-size: 12px; 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;">This proposal argues that while this workaround makes it clear that the consumption of the result is intentionally discarded, it offers no traceable intent as to whether the API designer meant for this use to be valid. &nbsp;</i><i class="" style="font-family: Helvetica; font-size: 12px; 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;">Forcing an attribute ensures the discardable return value use is one that has been considered and approved by&nbsp;</i><i class="" style="font-family: Helvetica; font-size: 12px; 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;">the API author.</i></div></blockquote></div><br class=""><div class="">But what does this really mean? As an API author, when do I actually mark something as being discardable? Discarding the result is as much about the context in which the API is being used as to the intent the original author had for it.</div><div class=""><br class=""></div><div class="">The only type of API that I can think of where the result is genuinely meant to be discarded are convenience APIs that allow chaining, so `self` is returned.</div><div class=""><br class=""></div><div class="">I find the example of `printf` interesting because the return value for `printf` is used for error handling, so it's essentially an argument that error handling info is fine to mark as discardable. Swift has a very strong statement against that position.</div><div class=""><br class=""></div><div class="">@Tino,</div><div class=""><br class=""></div><div class=""><blockquote type="cite" class="">Functions with side effects: Imho it should be ok to ignore the result<br class=""></blockquote><br class=""></div><div class="">I disagree with this conclusion. Functions that have side effects typically return information regarding the status of the side-effect. Ignoring that is like ignoring error handling information.&nbsp;</div><div class=""><br class=""></div><div class="">-David</div></body></html>