Copyright | (c) Sirui Lu 2021-2023 |
---|---|
License | BSD-3-Clause (see the LICENSE file) |
Maintainer | siruilu@cs.washington.edu |
Stability | Experimental |
Portability | GHC only |
Safe Haskell | Trustworthy |
Language | Haskell2010 |
Grisette.Internal.Core.Data.MemoUtils
Contents
Description
Synopsis
- stableMemo :: (a -> b) -> a -> b
- stableMemo2 :: (a -> b -> c) -> a -> b -> c
- stableMemo3 :: (a -> b -> c -> d) -> a -> b -> c -> d
- stableMup :: (b -> c) -> (a -> b) -> a -> c
- stableMemoFix :: ((a -> b) -> a -> b) -> a -> b
- weakStableMemo :: (a -> b) -> a -> b
- weakStableMemo2 :: (a -> b -> c) -> a -> b -> c
- weakStableMemo3 :: (a -> b -> c -> d) -> a -> b -> c -> d
- weakStableMup :: (b -> c) -> (a -> b) -> a -> c
- weakStableMemoFix :: ((a -> b) -> a -> b) -> a -> b
- htmemo :: (Eq k, Hashable k) => (k -> a) -> k -> a
- htmemo2 :: (Eq k1, Hashable k1, Eq k2, Hashable k2) => (k1 -> k2 -> a) -> k1 -> k2 -> a
- htmemo3 :: (Eq k1, Hashable k1, Eq k2, Hashable k2, Eq k3, Hashable k3) => (k1 -> k2 -> k3 -> a) -> k1 -> k2 -> k3 -> a
- htmemoFix :: (Eq k, Hashable k) => ((k -> a) -> k -> a) -> k -> a
- htmup :: (Eq k, Hashable k) => (b -> c) -> (k -> b) -> k -> c
Memoization
stableMemo :: (a -> b) -> a -> b Source #
Memoize a unary function.
stableMemo2 :: (a -> b -> c) -> a -> b -> c Source #
Curried memoization to share partial evaluation
stableMemo3 :: (a -> b -> c -> d) -> a -> b -> c -> d Source #
Curried memoization to share partial evaluation
stableMemoFix :: ((a -> b) -> a -> b) -> a -> b Source #
Memoizing recursion. Use like fix
.
weakStableMemo :: (a -> b) -> a -> b Source #
Memoize a unary function.
weakStableMemo2 :: (a -> b -> c) -> a -> b -> c Source #
Curried memoization to share partial evaluation
weakStableMemo3 :: (a -> b -> c -> d) -> a -> b -> c -> d Source #
Curried memoization to share partial evaluation
weakStableMup :: (b -> c) -> (a -> b) -> a -> c Source #
Lift a memoizer to work with one more argument.
weakStableMemoFix :: ((a -> b) -> a -> b) -> a -> b Source #
Memoizing recursion. Use like fix
.
htmemo :: (Eq k, Hashable k) => (k -> a) -> k -> a Source #
Function memoizer with mutable hash table.
htmemo2 :: (Eq k1, Hashable k1, Eq k2, Hashable k2) => (k1 -> k2 -> a) -> k1 -> k2 -> a Source #
Function memoizer with mutable hash table. Works on binary functions.
htmemo3 :: (Eq k1, Hashable k1, Eq k2, Hashable k2, Eq k3, Hashable k3) => (k1 -> k2 -> k3 -> a) -> k1 -> k2 -> k3 -> a Source #
Function memoizer with mutable hash table. Works on ternary functions.