best way to memoize a range?

Laeeth Isharc via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Sep 11 14:47:30 PDT 2015


On Friday, 11 September 2015 at 13:31:06 UTC, John Colvin wrote:
> On Friday, 11 September 2015 at 13:09:33 UTC, Laeeth Isharc 
> wrote:
>> obviously it's trivial to do with a little aa cache.  and I 
>> know I can memoize a function, and turn the memoized version 
>> into an infinite range.  but suppose I have a lazy function 
>> that returns a finite range, and its expensive to calculate.
>>
>> can I use Phobos to produce a memoized range?  So it will 
>> calculate on access to an element if it needs to, but will 
>> return the cached value if it has been calculated before.
>
> perhaps 
> http://dlang.org/phobos/std_algorithm_iteration.html#.cache 
> would do what you need. An AA based cache (with a normal range 
> interface if you want) is probably the sensible way to get true 
> random-access here, unless you have reasonably dense and 
> monotonic accesses in which case an appender-based linear cache 
> could work, either using Nullable!T or a separate list of bools 
> (or bits) marking whether a result is cached yet.


Thanks, John and Jacob.


Laeeth.


More information about the Digitalmars-d-learn mailing list