Don wrote: > Don wrote: >> The docs currently state that: > >> PROPOSAL: >> Drop the first requirement. Only one requirement is necessary: >> >> A pure function does not read or write any global mutable state. >> > > Wow. It seems that not one person who has responded so far has > understood this proposal! I'll try again. Under this proposal: > > If you see a function which has mutable parameters, but is marked as > 'pure', you can only conclude that it doesn't use global variables. > That's not much use on it's own. Let's call this a 'weakly-pure' function. > > However, if you see a function maked as 'pure', which also has only > immutable parameters, you have the same guarantee which 'pure' gives us > as the moment. Let's call this a 'strongly-pure' function. > > The benefit of the relaxed rule is that a strongly-pure function can > call a weakly-pure functions, while remaining strongly-pure. > This allows very many more functions to become strongly pure. > > The point of the proposal is *not* to provide the weak guarantee. It is > to provide the strong guarantee in more situations.
I understand now, this is a great proposal! What confused me was the label of 'pure functions' for functions that actually aren't pure in the usual way that purity is defined.