I held your opinion, although not terribly steadfast. Joe Groff convinced me that I was being pedantic with "'inout' is 'value goes in, value-prime goes out'" and the fact that it composes; you could use pure `+=` on a local value inside another pure function.
The specific details of `inout` mean that it is a pure implementation of an impure concept. On Thu, Feb 16, 2017 at 3:32 PM, Hooman Mehr via swift-evolution < [email protected]> wrote: > 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 < > [email protected]> 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 > > Nicolas > > > On Thu, Feb 16, 2017 at 8:55 PM, David Sweeris via swift-evolution < > [email protected]> wrote: > >> >> > On Feb 16, 2017, at 11:27 AM, Sean Heber via swift-evolution < >> [email protected]> 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 >> [email protected] >> https://lists.swift.org/mailman/listinfo/swift-evolution >> > > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution > > > > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution > >
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
