Proposal: Relax rules for 'pure'
retard
re at tard.com.invalid
Tue Sep 21 23:06:56 PDT 2010
Wed, 22 Sep 2010 04:21:39 +0200, Don wrote:
> The docs currently state that:
> ---
> Pure functions are functions that produce the same result for the same
> arguments. To that end, a pure function:
>
> * has parameters that are all immutable or are implicitly
> convertible to immutable
> * does not read or write any global mutable state
> ---
>
> This is extremely restrictive, and not currently enforced. Two specific
> limitations:
> - a 'pure' member function doesn't really make sense (could only be
> called on an immutable class)
> - a pure function cannot have 'out' parameters.
>
> In a discussion on D.learn, Steven Schveighoffer noted that it's only
> shared variables which make things complicated. The limitations exist
> because 'pure' is used to mean both 'no hidden state' AND 'cachable'.
> But 'cachable' is really only an implementation detail.
>
> PROPOSAL:
> Drop the first requirement. Only one requirement is necessary:
>
> A pure function does not read or write any global mutable state.
A purely functional language provides referential transparency: the same
arguments applied to the function always return the same result.
More information about the Digitalmars-d
mailing list