# streams

Various Haskell 2010 stream comonads http://github.com/ekmett/streams/issues

Version on this page: | 3.3 |

LTS Haskell 13.17: | 3.3 |

Stackage Nightly 2019-04-19: | 3.3 |

Latest on Hackage: | 3.3 |

BSD-3-Clause licensed by

**Edward A. Kmett**Maintained by

**Edward A. Kmett**#### Module documentation for 3.3

- Data
- Data.Stream
- Data.Stream.Future
- Data.Stream.Infinite
- Data.Stream.Infinite.Functional
- Data.Stream.Infinite.Skew

- Data.Stream.Supply

- Data.Stream

-- currently implemented

* Data.Stream.Supply data Supply a = Supply a (Supply a) (Supply a)

* Data.Stream.Branching data Stream f a = a :< f (Stream a)

* Data.Stream.NonEmpty data NonEmpty a = a :| [a]

* Data.Stream.Future data Future a = Last a | a :< Future a

* Data.Stream.Future.Skew data Future a = Last a | !(Complete a) :< Future a

* Data.Stream.Infinite data Future a = a :< Future a

* Data.Stream.Infinite.Skew data Future a = !(Complete a) :< Future a

* Data.Stream.Infinite.Functional.Zipper data Zipper a = Zipper !(Integer -> a) !Integer

-- TODO: refactor the existing Functional.Zipper to have a lower bound and add a Symmetric variant

-- Data.Stream.Infinite.Functional.Zipper data Zipper a = Zipper !(Integer -> a) !Integer !Integer -- can seek arbitrarily

Data.Stream.Causal data Causal a = First a | Causal a :> a

Data.Stream.Causal.Infinite data Causal a = Causal a :> a

Data.Stream.Causal.Finite data Causal a = First a | !(Causal a) :> a

Data.Stream.Causal.Skew data Causal a = First a | Causal a :> !(Complete a)

Data.Stream.Causal.Infinite.Skew data Causal a = Causal a :> !(Complete a)

Data.Stream.Future.Finite data Future a = Last a | a :< !(Future a)

Data.Stream.Zipper data Zipper a = Now !(Finite.Causal a) | !(Finite.Causal a) :| (Future a)

Data.Stream.Zipper.Symmetric data Zipper a = Now !(Causal a) | !(Causal a) :| (Future a)

Data.Stream.Zipper.Infinite data Zipper a = !(Finite.Causal a) :| Infinite.Future a

Data.Stream.Zipper.Infinite.Symmetric data Zipper a = {- #UNPACK #-} !(Infinite.Causal a) :| Infinite.Future a

Data.Stream.Zipper.Finite data Zipper a = Now !(Finite.Causal a) | !(Finite.Causal a) :| !(Finite.Future a)

Data.Stream.Zipper.Skew data Zipper a = Zipper !(Seq a) !(Seq a) !(Skew.Future a)

Data.Stream.Zipper.Skew.Symmetric data Zipper a = Zipper !(S.Causal a) !(Seq a) !(Seq a) !(Skew.Future a)

Data.Stream.Zipper.Infinite.Skew data Zipper a = Zipper !(S.Causal a) !(Seq a) !(Seq a) !(IS.Future a)

Data.Stream.Zipper.Infinite.Skew.Symmetric data Zipper a = Zipper !(IS.Causal a) !(Seq a) !(Seq a) !(IS.Future a)

Data.Stream.Infinite.Functional.Future data Future a = Future !(Integer -> a) !Integer -- increment only

Data.Stream.Infinite.Functional.Causal data Causal a = Causal !(Integer -> a) !Integer -- decrement only

Data.Sequence.Future data Future a = Future !(Int# -> a) Int# Int#

Data.Sequence.Causal data Causal a = Causal !(Int# -> a) Int# Int#

Data.Sequence.Zipper data Zipper a = Zipper !(Int# -> a) Int# Int# Int#

Data.Tensors data Tensors f a = Last a | a :- Tensors f (f a)

Data.Tensors.Infinite data Tensors f a = a :- Tensors f (f a)

Data.Tensors.Finite data Tensors f a = Last a | a :- !(Tensors f (f a))

* Data.Stream.Supply data Supply a = Supply a (Supply a) (Supply a)

* Data.Stream.Branching data Stream f a = a :< f (Stream a)

* Data.Stream.NonEmpty data NonEmpty a = a :| [a]

* Data.Stream.Future data Future a = Last a | a :< Future a

* Data.Stream.Future.Skew data Future a = Last a | !(Complete a) :< Future a

* Data.Stream.Infinite data Future a = a :< Future a

* Data.Stream.Infinite.Skew data Future a = !(Complete a) :< Future a

* Data.Stream.Infinite.Functional.Zipper data Zipper a = Zipper !(Integer -> a) !Integer

-- TODO: refactor the existing Functional.Zipper to have a lower bound and add a Symmetric variant

-- Data.Stream.Infinite.Functional.Zipper data Zipper a = Zipper !(Integer -> a) !Integer !Integer -- can seek arbitrarily

Data.Stream.Causal data Causal a = First a | Causal a :> a

Data.Stream.Causal.Infinite data Causal a = Causal a :> a

Data.Stream.Causal.Finite data Causal a = First a | !(Causal a) :> a

Data.Stream.Causal.Skew data Causal a = First a | Causal a :> !(Complete a)

Data.Stream.Causal.Infinite.Skew data Causal a = Causal a :> !(Complete a)

Data.Stream.Future.Finite data Future a = Last a | a :< !(Future a)

Data.Stream.Zipper data Zipper a = Now !(Finite.Causal a) | !(Finite.Causal a) :| (Future a)

Data.Stream.Zipper.Symmetric data Zipper a = Now !(Causal a) | !(Causal a) :| (Future a)

Data.Stream.Zipper.Infinite data Zipper a = !(Finite.Causal a) :| Infinite.Future a

Data.Stream.Zipper.Infinite.Symmetric data Zipper a = {- #UNPACK #-} !(Infinite.Causal a) :| Infinite.Future a

Data.Stream.Zipper.Finite data Zipper a = Now !(Finite.Causal a) | !(Finite.Causal a) :| !(Finite.Future a)

Data.Stream.Zipper.Skew data Zipper a = Zipper !(Seq a) !(Seq a) !(Skew.Future a)

Data.Stream.Zipper.Skew.Symmetric data Zipper a = Zipper !(S.Causal a) !(Seq a) !(Seq a) !(Skew.Future a)

Data.Stream.Zipper.Infinite.Skew data Zipper a = Zipper !(S.Causal a) !(Seq a) !(Seq a) !(IS.Future a)

Data.Stream.Zipper.Infinite.Skew.Symmetric data Zipper a = Zipper !(IS.Causal a) !(Seq a) !(Seq a) !(IS.Future a)

Data.Stream.Infinite.Functional.Future data Future a = Future !(Integer -> a) !Integer -- increment only

Data.Stream.Infinite.Functional.Causal data Causal a = Causal !(Integer -> a) !Integer -- decrement only

Data.Sequence.Future data Future a = Future !(Int# -> a) Int# Int#

Data.Sequence.Causal data Causal a = Causal !(Int# -> a) Int# Int#

Data.Sequence.Zipper data Zipper a = Zipper !(Int# -> a) Int# Int# Int#

Data.Tensors data Tensors f a = Last a | a :- Tensors f (f a)

Data.Tensors.Infinite data Tensors f a = a :- Tensors f (f a)

Data.Tensors.Finite data Tensors f a = Last a | a :- !(Tensors f (f a))

## Changes

## 3.3

- Removed a number of redundant parts of the API. If a method you were using has been removed, consider the classes available. No functionality was lost.
- Better support for GHC 7.10, the
`Foldable (length, null)`

members are now defined directly leading to asymptotic improvements and helping to further shrink the API. - Added
`prepend`

and`concat`

functions to`Data.Stream.Infinite`

- Allow
`comonad-5`

## 3.2.2

- Bug fix in
`Data.Stream.Infinite.Skew`

and removed`fromList`

.

## 3.2.1

- Add support for
`semigroupoids`

5 and GHC 7.10

## 3.2

- Switched to
`tabulate`

and`index`

from`adjunctions`

. Note: this reversed the argument order to`index`

. - Proper upper bounds on dependencies.

## 3.1.1

- Marked modules appropriately Trustworthy

## 3.0.1

- Removed intra-package dependency bounds for my packages
- Build system improvements
- IRC Buildbot notification

## 3.0

- Version sync with the rest of my packages

## 0.7

- “Data.Stream.NonEmpty” renamed to “Data.List.NonEmpty” and pushed upstream into the semigroups package.

## 0.6.3

- Removed a redundant UNPACK pragma

## 0.5.1

- Data.Stream.Supply added

## Since 0.1:

- A number of strictness issues with ‘NonEmpty’ were fixed
- More documentation

Depends on 6 packages:

comments powered byDisqus

A service provided by
FP Complete