streams: Various Haskell 2010 stream comonads
Various Haskell 2010 stream comonads.
* Data.Stream.Future provides a coinductive anti-causal stream, or non-empty
ZipList. The comonad provides access to only the
tail of the stream. Like a conventional
ZipList, this is not a monad.
data Future a = Last a | a :< Future a
Data.Stream.Future.Skew provides a non-empty skew-binary random-access-list with the semantics of
Data.Stream.Future. As with Data.Stream.Future this stream is not a
Monad, since the
Applicativeinstance zips streams of potentially differing lengths. The random-access-list structure provides a number of operations logarithmic access time, but makes
Data.Stream.Future.Skew.consless productive. Where applicable Data.Stream.Infinite.Skew may be more efficient, due to a lazier and more efficient
Data.Stream.Infinite provides a coinductive infinite anti-causal stream. The
Comonadprovides access to the tail of the stream and the
Applicativezips streams together. Unlike
Future, infinite stream form a
Monad. The monad diagonalizes the
Stream, which is consistent with the behavior of the
Applicative, and the view of a
Streamas a isomorphic to the reader monad from the natural numbers. Being infinite in length, there is no
Alternativeinstance, but instead the
FunctorAltinstance provides access to the
Semigroupof interleaving streams.
data Stream a = a :< Stream a
Data.Stream.Infinite.Skew provides an infinite skew-binary random-access-list with the semantics of Data.Stream.Infinite Since every stream is infinite, the
Applicativeinstance can be considerably less strict than the corresponding instance for Data.Stream.Future.Skew and performs asymptotically better.
Data.Stream.Infinite.Functional.Zipper provides a bi-infinite sequence, represented as a pure function with an accumulating parameter added to optimize moving the current focus.
data Zipper a = !Integer :~ (Integer -> a)
Data.Stream.Supply provides a comonadic supply of unique values, which are generated impurely as the tree is explored.
[Skip to Readme]
|Versions||0.1.1, 0.2, 0.3, 0.3.1, 0.4, 0.5.0, 0.5.1, 0.5.1.1, 0.5.1.2, 0.6.0, 0.6.0.1, 0.6.1.1, 0.6.1.2, 0.6.3, 0.7.0, 0.7.1, 0.7.2, 0.8.0, 0.8.0.1, 0.8.0.2, 0.8.0.3, 0.8.0.4, 0.8.1, 0.8.2, 3.0, 188.8.131.52, 3.0.1, 184.108.40.206, 3.1, 3.1.1, 3.2, 3.2.1, 3.3|
|Dependencies||base (>=4 && <4.8), comonad (>=3), distributive (>=0.2.1), semigroupoids (>=3), semigroups (>=0.8.3.1) [details]|
|Copyright||Copyright 2011-2013 Edward Kmett Copyright 2010 Tony Morris, Oliver Taylor, Eelis van der Weegen Copyright 2007-2010 Wouter Swierstra, Bas van Dijk Copyright 2008 Iavor S. Diatchki|
|Author||Edward A. Kmett|
|Maintainer||Edward A. Kmett <email@example.com>|
|Revised||Revision 1 made by HerbertValerioRiedel at Sat Aug 29 10:26:49 UTC 2015|
|Source repo||head: git clone git://github.com/ekmett/streams.git|
|Uploaded||by EdwardKmett at Sun Jan 6 22:15:29 UTC 2013|
|Distributions||LTSHaskell:3.3, NixOS:3.3, Stackage:3.3, openSUSE:3.3|
|Downloads||12013 total (77 in the last 30 days)|
|Rating||2.0 (votes: 1) [estimated by rule of succession]|
|Status||Docs uploaded by user
Build status unknown [no reports yet]
Hackage Matrix CI
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'.
For package maintainers and hackage trustees