Package Info


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 'Applicative' instance 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.cons' less productive. Where applicable "Data.Stream.Infinite.Skew" may be more efficient, due to a lazier and more efficient 'Applicative' instance.


  • "Data.Stream.Infinite" provides a coinductive infinite anti-causal stream.

The 'Comonad' provides access to the tail of the stream and the 'Applicative' zips 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 'Stream' as a isomorphic to the reader monad from the natural numbers. Being infinite in length, there is no 'Alternative' instance.

> 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 'Applicative' instance 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.

License: BSD-3-Clause



Package Version Update ID Released Package Hub Version Platforms Subpackages
3.3-bp150.2.3 info GA Release 2018-08-01 15
  • AArch64
  • ghc-streams
  • ghc-streams-devel
3.3-bp150.2.5 info GA Release 2018-07-31 15
  • ppc64le
  • ghc-streams
  • ghc-streams-devel
3.3-bp150.2.6 info GA Release 2018-07-30 15
  • x86-64
  • ghc-streams
  • ghc-streams-devel