[swift-evolution] SE-0023 API Design Guidelines: Mutating vs Functional
Haravikk
swift-evolution at haravikk.com
Mon Jan 25 03:52:36 CST 2016
> On 25 Jan 2016, at 06:12, T.J. Usiyan via swift-evolution <swift-evolution at swift.org> wrote:
>
> 'Functional' is pretty vague in this context. Mutating cuts to differentiating trait.
>
> "A function produces something" can fall down if I have a function with side effects.
>
> ``` swift
> private var state = 0
> func generateCount() -> String {
> state += 1
> return "I've been called \(state) times"
> }
> ```
>
> We could narrow it by saying that a pure function has no side effects but this just draws us further from the relevant point, in my opinion.
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
Also, how do we differentiate between functions that have @warn_unused_result? In your example the string that’s returned isn’t actually required to be used, so someone could call the function purely with the intention of increment state; not that it would be a very useful thing to do, but some functions have return values that aren’t necessarily required, like removeLast() on Arrays (I may not actually want the last array element, or I already know what it is and just want it removed).
More information about the swift-evolution
mailing list