Jump to content

Stream (abstract data type)

From Wikipedia, the free encyclopedia

This is the current revision of this page, as edited by Frap (talk | contribs) at 13:02, 9 June 2023 (Add UML image). The present address (URL) is a permanent link to this version.

(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

In type theory and functional programming, a stream is a potentially infinite analog of a list, given by the coinductive definition:[1][2]

data Stream α = Nil | Cons α (Stream α)

Generating and computing with streams requires lazy evaluation, either implicitly in a lazily evaluated language or by creating and forcing thunks in an eager language. In total languages they must be defined as codata and can be iterated over using (guarded) corecursion.

UML package diagram of the stream hierarchy in .NET

See also[edit]

References[edit]

  1. ^ Yamagiwa, Shinichi (2022), Katoh, Naoki; Higashikawa, Yuya; Ito, Hiro; Nagao, Atsuki (eds.), "Stream-Based Lossless Data Compression", Sublinear Computation Paradigm: Algorithmic Revolution in the Big Data Era, Singapore: Springer, pp. 391–410, doi:10.1007/978-981-16-4095-7_16, ISBN 978-981-16-4095-7
  2. ^ Sangma, Jerry W.; Sarkar, Mekhla; Pal, Vipin; Agrawal, Amit; Yogita (2022-04-01). "Hierarchical clustering for multiple nominal data streams with evolving behaviour". Complex & Intelligent Systems. 8 (2): 1737–1761. doi:10.1007/s40747-021-00634-0. ISSN 2198-6053.