best way to memoize a range?
John Colvin via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Sep 11 06:31:04 PDT 2015
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.
More information about the Digitalmars-d-learn
mailing list