@hackage / array-memoize

Memoization combinators using arrays for finite sub-domains of functions

Latest0.6.0

About

Metadata

  • Last updated , by DominicOrchard
  • License BSD-3-Clause
  • Maintained by: Dominic Orchard

  • Lottery factor: 0

Links

Installation

Tested Compilers

  1. 9.12.2
  2. 9.12.1
  3. 9.10.3
  4. 9.10.2
  5. 9.10.1
  6. 9.8.4
  7. 9.8.3
  8. 9.8.2
  9. 9.8.1
  10. 9.6.7
  11. 9.6.6
  12. 9.6.5
  13. 9.6.4
  14. 9.6.3
  15. 9.6.2
  16. 9.6.1
  17. 9.4.8
  18. 9.4.7
  19. 9.4.6
  20. 9.4.5
  21. 9.4.4
  22. 9.4.3
  23. 9.4.2
  24. 9.4.1
  25. 9.2.8
  26. 9.2.7
  27. 9.2.6
  28. 9.2.5
  29. 9.2.4
  30. 9.2.3
  31. 9.2.2
  32. 9.2.1
  33. 9.0.2
  34. 9.0.1
  35. 8.10.7
  36. 8.10.6
  37. 8.10.5
  38. 8.10.4
  39. 8.10.3
  40. 8.10.2
  41. 8.10.1
  42. 8.8.4
  43. 8.8.3
  44. 8.8.2
  45. 8.8.1
  46. 8.6.5
  47. 8.6.4
  48. 8.6.3
  49. 8.6.2
  50. 8.6.1
  51. 8.4.4
  52. 8.4.3
  53. 8.4.2
  54. 8.4.1
  55. 8.2.2
  56. 8.0.2
  57. 7.10.3

Readme

Memoization combinators are great for providing high-performance Haskell programs, but they can be even faster if memoization is performed on a finite, discrete domain since an array can then be used to store results.

This package provides various combinators for doing just this, including also combinators for quanitzing and discretizing Float/Double-valued functions.

Example:

fib' :: (Int -> Int) -> Int -> Int
fib' _ 0 = 1
fib' _ 1 = 1
fib' rec n = rec (n - 1) + rec (n - 2)
fib :: Int -> Int
fib = arrayMemoFix (0, 1000) fib'