> Mailing-List: contact [EMAIL PROTECTED]; run by ezmlm
> From: Luke Palmer <[EMAIL PROTECTED]>
> Cc: [EMAIL PROTECTED]
> Date: Thu,  7 Nov 2002 13:49:14 -0700 (MST)
> X-SMTPD: qpsmtpd/0.12, http://develooper.com/code/qpsmtpd/
> 
> > Date: Thu, 07 Nov 2002 20:48:50 +1100
> > From: Damian Conway <[EMAIL PROTECTED]>
> >
> > we could make it lazy thus:
> > 
> >     sub a_pure_func(Num $n) is lazy returns Num {
> >         return $n ** $n
> >     }
> > 
> > which would cause any invocation of C<a_pure_func> to cache
> > its arguments (probably in a closure) and return a "proxy"
> > Num that carries out the computation only when the proxy is
> > evaluated.
> 
>     sub a_pure_func(Num $n) returns Num {
>         class is Num {
>             method FETCH { $n * $n } }.new 
>     }

Whoops, I mean...

    sub a_pure_func(Num $n) returns Num {
        class is Num {
            has Num $cache;
            method FETCH { $cache //= $n * $n } } }

Wow, I've never seen such a compact implementation of such a thing.  I
love you, Perl 6  <3

Luke

Reply via email to