memoize: A memoization library

[ bsd3, data, library ] [ Propose Tags ]

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.


[Skip to Readme]

Modules

[Index] [Quick Jump]

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1, 0.2, 0.3, 0.4, 0.6, 0.7, 0.8, 0.8.1, 1.0.0, 1.1.0, 1.1.1, 1.1.2
Change log CHANGELOG.md
Dependencies base (>=4.8 && <5), template-haskell (>=2 && <3) [details]
License BSD-3-Clause
Author Jesse A. Tov <jesse.tov@gmail.com>
Maintainer jesse.tov@gmail.com
Revised Revision 1 made by Bodigrim at 2022-09-04T17:19:43Z
Category Data
Source repo head: git clone git://github.com/tov/memoize.git
Uploaded by JesseTov at 2021-11-01T03:45:06Z
Distributions Debian:0.8.1, NixOS:1.1.2
Reverse Dependencies 10 direct, 6 indirect [details]
Downloads 10529 total (49 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2021-11-01 [all 1 reports]

Readme for memoize-1.1.1

[back to package description]

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.