> 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