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