memoize

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon Jan 3 21:27:22 PST 2011


On 1/3/11 11:01 PM, Guilherme Vieira wrote:
> On Tue, Jan 4, 2011 at 2:50 AM, Nick Sabalausky <a at a.a> wrote:
>
>     "Andrei Alexandrescu" <SeeWebsiteForEmail at erdani.org
>     <mailto:SeeWebsiteForEmail at erdani.org>> wrote in message
>     news:ifu70u$2dvs$1 at digitalmars.com...
>      >I just added a higher-order function memoize to std.functional which I
>      >think is pretty cool. See the docs here:
>      >
>      >
>     http://d-programming-language.org/cutting-edge/phobos/std_functional.html#memoize
>      >
>      > I'm also thinking of adding that cutting-edge directory as a
>     place for
>      > storing documentation for commits that are in flux but not officially
>      > released yet.
>      >
>      >
>      > Andrei
>
>     Neat! This is a great example of why D kicks so much ass :)
>
>
> Uh, yes. It looks like the kind of thing I would do, show to others and
> hear they say "Meh.. Whatever". I'm really exponentially developing a
> liking to the D community, even though I didn't event get to code
> anything serious yet.
>
> This simply rocks. Keep it up, Andrei!
>
> --
> Atenciosamente / Sincerely,
> Guilherme ("n2liquid") Vieira

Glad you folks like it. There's a little story behind this. I first read 
Dominus' book chapter years ago, around the time I'd decided to write 
TDPL. Back then I was thinking - it would just be so cool to be able to 
define generic memoization in D. I tried my hand at an implementation. 
But D had no tuples, no aliasing for functions, no good variadics, and 
even if you could find a way to pack parameters, associative arrays had 
plenty of related issues.

I'd given up on that and forgot most about it, until today. It was nice 
to reckon that getting it done took about a dozen lines and about as 
many minutes. We really have come a very long way.

Nevertheless, I found two issues: one, ParameterTypeTuple doesn't work 
for overloaded functions, and associative arrays don't work for ubyte[4] 
keys... still a ways to go.


Andrei


More information about the Digitalmars-d mailing list