Python vs D [ was Re: Bartosz about Chapel ]
Jonathan M Davis
jmdavisProg at gmx.com
Thu Nov 10 03:45:59 PST 2011
On Thursday, November 10, 2011 03:34:07 Walter Bright wrote:
> On 11/10/2011 2:00 AM, Russel Winder wrote:
> > Purity is not really something I understand here without some lead in.
> > I guess I failed to read part of Andrei's book ;-)
>
> A pure function in D is one that has no side effects. It is set by adding
> the keyword "pure" to a function, and is checked by the compiler.
>
> A pure function may not modify any data reachable through its parameters,
> may not read or write to any mutable global state, and can only call
> functions that also are either pure or restrict the variables they modify
> to those of the calling pure function's.
>
> A pure function may allocate data via new, and may throw an exception.
That's not really true anymore thanks to the distinction of strongly pure and
weakly pure. It's true for strongly pure, but for pure as a whole, all it
guarantees is that the function doesn't access any mutable global or static
state and only calls functions which are pure. pure on its own makes _zero_
guarantees about the parameters. It's only when the parameters are immutable
or implicitly convertible to immutable that anything about the parameters is
guaranteed.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list