stable-memo-0.2.2: Memoization based on argument identity

Safe HaskellNone



This module provides memo combinators with slightly different behavior from those in Data.StableMemo. The memo tables generated by these combinators use weak pointers to store the values, so they not only do not unnecessarily retain the arguments, but they also do not retain the function outputs. This can be useful for memoized functions that are expected to be around for a long time. If the result for an input has already been computed and happens to still be in the heap, it will be reused, otherwise it will be recomputed.



memo :: (a -> b) -> a -> bSource

Memoize a unary function.

memo2 :: (a -> b -> c) -> a -> b -> cSource

Curried memoization to share partial evaluation

memo3 :: (a -> b -> c -> d) -> a -> b -> c -> dSource

Curried memoization to share partial evaluation

type (-->) f g = forall a. f a -> g aSource

Polymorphic memoizable function

memoPoly :: (f --> g) -> f --> gSource

Memoize a function with support for a certain form of polymorphic recursion.