Skip to content

tov/memoize

Repository files navigation

memoize

Build Status Docs Hackage License: BSD 3-Clause

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.