A memoization library.
This library provides a type class Memoizable
for memoizing functions, along with instances for a variety of argument types. It includes a Template Haskell function for deriving Memoizable
instances for arbitrary algebraic datatypes.
The library constructs pure memo caches without the use of unsafePerformIO
. This technique relies on implementation assumptions that, while not guaranteed by the semantics of Haskell, appear to be true.
memoize
This library provides a type class Memoizable
for memoizing functions, along with instances for a variety of argument types. It includes a Template Haskell function for deriving Memoizable
instances for arbitrary algebraic datatypes.
The library constructs pure memo caches without the use of unsafePerformIO
. This technique relies on implementation assumptions—namely, call-by-need—that, while not guaranteed by the semantics of Haskell, generally appear to hold.