memoize ======= [![Build Status][ci badge]][ci] [![Docs][haddock badge]][haddock] [![Hackage][hackage badge]][hackage] [![License: BSD 3-Clause][license badge]][license] 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. [ci]: [ci badge]: [hackage]: [hackage badge]: [license]: [license badge]: [haddock]: [haddock badge]: