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@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@swift.org <mailto:swift-evolution@swift.org>> wrote:
> 
> > On Feb 16, 2017, at 11:27 AM, Sean Heber via swift-evolution 
> > <swift-evolution@swift.org <mailto:swift-evolution@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@swift.org <mailto:swift-evolution@swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to