[swift-evolution] [Pitch] Support for pure functions. Part n + 1.

Hooman Mehr hooman at mac.com
Thu Feb 16 14:32:57 CST 2017


By its classic definition, a function that has inout parameters is not pure. So, again by classic definition, it should have a return value to have any use. But things can quickly get murky if we try to enhance and extend the meaning of pure. Then it becomes important to see at what level of abstraction the function is pure and would would be the practical effect of making compiler aware of it. Identifying classic pure functions helps compiler better optimize the code, so it would be advantageous if the compiler can correctly identify pure functions.  
 
> On Feb 16, 2017, at 12:03 PM, Nicolas Fezans via swift-evolution <swift-evolution at swift.org> wrote:
> 
> 
> > If it mutates whatever the input is referencing, it would have a side-effect which makes it "not pure" (for my understanding of what “pure” means).
> 
> I am not really sure of it (I have not played around with it until now) but I don't think that this is an issue with the swift inout, cf. https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/doc/uid/TP40014097-CH34-ID545 <https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/doc/uid/TP40014097-CH34-ID545>
> 
> Nicolas
> 
> 
> On Thu, Feb 16, 2017 at 8:55 PM, David Sweeris via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
> 
> > On Feb 16, 2017, at 11:27 AM, Sean Heber via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
> >
> > Doesn’t this break down if you can pass a reference as a parameter to a pure function? If that’s not allowed, I guess I must have missed it. Also this seems to require the function has a return value. I suppose generally a pure function without a return value wouldn’t make much sense - unless you pass it a reference.
> 
> If it mutates whatever the input is referencing, it would have a side-effect which makes it "not pure" (for my understanding of what “pure” means).
> 
> - Dave Sweeris
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170216/db9b3ffe/attachment.html>


More information about the swift-evolution mailing list