packages feed

Cabal revisions of stable-memo-0.3.1

Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.

revision 1
-name:                stable-memo-version:             0.3.1-synopsis:            Memoization based on argument identity-license:             MIT-license-file:        LICENSE-author:              Jake McArthur <Jake.McArthur@gmail.com>-maintainer:          Jake McArthur <Jake.McArthur@gmail.com>-category:            Data-build-type:          Simple-cabal-version:       >=1.18-description:--  Whereas most memo combinators memoize based on equality, stable-memo-  does it based on whether the exact same argument has been passed to-  the function before (that is, is the same argument in memory).--  .--  * stable-memo only evaluates keys to WHNF.--  .--  * This can be more suitable for recursive functions over graphs with-    cycles.--  .--  * stable-memo doesn't retain the keys it has seen so far, which-    allows them to be garbage collected if they will no longer be-    used. Finalizers are put in place to remove the corresponding-    entries from the memo table if this happens.--  .--  * "Data.StableMemo.Weak" provides an alternative set of combinators-    that also avoid retaining the results of the function, only-    reusing results if they have not yet been garbage collected.--  .--  * There is no type class constraint on the function's argument.--  .--  For motivation, here is an implementation of map that preserves-  sharing of the spine for cyclic lists. It should even be safe to use-  this on arbitrarily long, acyclic lists since as long as the garbage-  collector is chasing you, the size of the memo table should stay-  under control, too.--  .--  > map :: (a -> b) -> [a] -> [b]-  > map f = go-  >   where go = memo map'-  >         map' []     = []-  >         map' (x:xs) = f x : go xs--  .--  This library is largely based on the implementation of memo found in-  \"Stretching the storage manager: weak pointers and stable names in-  Haskell\", from Simon Peyton Jones, Simon Marlow, and Conal Elliott-  (<http://community.haskell.org/~simonmar/papers/weak.pdf>).--library-  build-depends:       base >=4.6 && <5,-                       hashtables >=1.0 && <1.3,-                       ghc-prim >=0.3 && < 0.5-  default-language:    Haskell2010-  exposed-modules:     Data.StableMemo, Data.StableMemo.Weak-  other-extensions:    BangPatterns,-                       RankNTypes,-                       PolyKinds,-                       Safe,-                       Trustworthy,-                       TypeOperators-  other-modules:       Data.StableMemo.Internal--source-repository head-  type:     darcs-  location: http://hub.darcs.net/jmcarthur/stable-memo--source-repository this-  type:     darcs-  location: http://patch-tag.com/r/jmcarthur/stable-memo-  tag:      v0.3.1+name:                stable-memo
+version:             0.3.1
+x-revision: 1
+synopsis:            Memoization based on argument identity
+license:             MIT
+license-file:        LICENSE
+author:              Jake McArthur <Jake.McArthur@gmail.com>
+maintainer:          Jake McArthur <Jake.McArthur@gmail.com>
+category:            Data
+build-type:          Simple
+cabal-version:       >=1.18
+description:
+
+  Whereas most memo combinators memoize based on equality, stable-memo
+  does it based on whether the exact same argument has been passed to
+  the function before (that is, is the same argument in memory).
+
+  .
+
+  * stable-memo only evaluates keys to WHNF.
+
+  .
+
+  * This can be more suitable for recursive functions over graphs with
+    cycles.
+
+  .
+
+  * stable-memo doesn't retain the keys it has seen so far, which
+    allows them to be garbage collected if they will no longer be
+    used. Finalizers are put in place to remove the corresponding
+    entries from the memo table if this happens.
+
+  .
+
+  * "Data.StableMemo.Weak" provides an alternative set of combinators
+    that also avoid retaining the results of the function, only
+    reusing results if they have not yet been garbage collected.
+
+  .
+
+  * There is no type class constraint on the function's argument.
+
+  .
+
+  For motivation, here is an implementation of map that preserves
+  sharing of the spine for cyclic lists. It should even be safe to use
+  this on arbitrarily long, acyclic lists since as long as the garbage
+  collector is chasing you, the size of the memo table should stay
+  under control, too.
+
+  .
+
+  > map :: (a -> b) -> [a] -> [b]
+  > map f = go
+  >   where go = memo map'
+  >         map' []     = []
+  >         map' (x:xs) = f x : go xs
+
+  .
+
+  This library is largely based on the implementation of memo found in
+  \"Stretching the storage manager: weak pointers and stable names in
+  Haskell\", from Simon Peyton Jones, Simon Marlow, and Conal Elliott
+  (<http://community.haskell.org/~simonmar/papers/weak.pdf>).
+
+library
+  build-depends:       base >=4.6 && <5,
+                       hashtables >=1.0 && <1.3,
+                       ghc-prim >=0.3 && < 0.6
+  default-language:    Haskell2010
+  exposed-modules:     Data.StableMemo, Data.StableMemo.Weak
+  other-extensions:    BangPatterns,
+                       RankNTypes,
+                       PolyKinds,
+                       Safe,
+                       Trustworthy,
+                       TypeOperators
+  other-modules:       Data.StableMemo.Internal
+
+source-repository head
+  type:     darcs
+  location: http://hub.darcs.net/jmcarthur/stable-memo
+
+source-repository this
+  type:     darcs
+  location: http://patch-tag.com/r/jmcarthur/stable-memo
+  tag:      v0.3.1