DMD 1.038 and 2.022 releases
Denis Koroskin
2korden at gmail.com
Mon Dec 15 18:58:54 PST 2008
On Tue, 16 Dec 2008 01:48:21 +0300, mastrost <titi.mastro at free.fr> wrote:
> Hi,
>
> first of all, thank you Walter and all the D community for making the
> great "pure"
> feature become reality.
> I have 2 questions concerning the behaviour of this feature.
>
> The first one concerns the existence -or not- of "pure delegates".
> It makes sense to use a delegate if its closure is not empty -otherwise
> it is no
> more than a function-. This is the reason why we can think delegates
> cannot be
> pure. Let's take an example:
>
> void foo(){
> int x=0;
> //bar is not pure at all in this context
> int bar(){
> return x;
> }
> writefln(bar()); // prints '0'
> ++x;
> writefln(bar()); // prints '1'
> }
>
> But the fact is that when returning a delegate, its closure freezes
> forever and so
> behaves like a local variable and not like a global variable by respect
> to the
> delegate :
>
> int delegate() getPureFunction(int x){
> int bar(){
> return x;
> }
> return &bar;
> }
>
> void main(){
> int delegate() myPureFunction;
> myPureFunction = getPureFunction(5);
> }
>
> In this example, myPureFunction looks like a pure function, does it?
> So how does dmd 2.022 behave for such kind of "pure delegates" ? Do you
> think
> there is a futur for pure delegates in the D language ? If not this
> would mean
> that we cannot use the power of delegates (to do real functionnal
> programming) and
> the power of purity in the same time, which will be very disapointing for
> programmers, don't you think ?
>
Yes, it was previously discussed many times (not only delegates but any function in general (locally impure)).
Current plan it to make pure function restrictive and then lift unnecessary restrictions where possible.
> This was my first question. The second one concerns purity and parallel
> programming. Is dmd 2.022 implementing some kind of parallelism thanks
> to pure
> function? In fact I have been argued that "pure" keyword is not enough
> for the
> compiler to make an efficient parallel program. The problem would be
> that the
> compiler has no mean to know the granularity of the tasks. What are your
> feelings
> about that?
>
This is not implemented yet. Pure function are just being added into language.
> Thanks a lot
>
>
>
More information about the Digitalmars-d-announce
mailing list