Stream (abstract data type)

Last updated

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

dataStreamα=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 UML dotnet streams.svg
UML package diagram of the stream hierarchy in .NET

See also

Related Research Articles

In computer science, functional programming is a programming paradigm where programs are constructed by applying and composing functions. It is a declarative programming paradigm in which function definitions are trees of expressions that map values to other values, rather than a sequence of imperative statements which update the running state of the program.

<span class="mw-page-title-main">Hash table</span> Associative array for storing key-value pairs

In computing, a hash table, also known as hash map, is a data structure that implements an associative array or dictionary. It is an abstract data type that maps keys to values. A hash table uses a hash function to compute an index, also called a hash code, into an array of buckets or slots, from which the desired value can be found. During lookup, the key is hashed and the resulting hash indicates where the corresponding value is stored.

In programming language theory, lazy evaluation, or call-by-need, is an evaluation strategy which delays the evaluation of an expression until its value is needed and which also avoids repeated evaluations.

In computer science, an abstract machine is a theoretical model that allows for a detailed and precise analysis of how a computer system functions. It is similar to a mathematical function in that it receives inputs and produces outputs based on predefined rules. Abstract machines vary from literal machines in that they are expected to perform correctly and independently of hardware. Abstract machines are "machines" because they allow step-by-step execution of programmes; they are "abstract" because they ignore many aspects of actual (hardware) machines. A typical abstract machine consists of a definition in terms of input, output, and the set of allowable operations used to turn the former into the latter. They can be used for purely theoretical reasons as well as models for real-world computer systems. In the theory of computation, abstract machines are often used in thought experiments regarding computability or to analyse the complexity of algorithms. This use of abstract machines is fundamental to the field of computational complexity theory, such as finite state machines, Mealy machines, push-down automata, and Turing machines.

Oz is a multiparadigm programming language, developed in the Programming Systems Lab at Université catholique de Louvain, for programming language education. It has a canonical textbook: Concepts, Techniques, and Models of Computer Programming.

Curry is an experimental functional logic programming language, based on the Haskell language. It merges elements of functional and logic programming, including constraint programming integration.

<span class="mw-page-title-main">R (programming language)</span> Programming language for statistics

R is a programming language for statistical computing and graphics supported by the R Core Team and the R Foundation for Statistical Computing. Created by statisticians Ross Ihaka and Robert Gentleman, R is used among data miners, bioinformaticians and statisticians for data analysis and developing statistical software. The core R language is augmented by a large number of extension packages containing reusable code and documentation.

Data Stream Mining is the process of extracting knowledge structures from continuous, rapid data records. A data stream is an ordered sequence of instances that in many applications of data stream mining can be read only once or a small number of times using limited computing and storage capabilities.

In a programming language, an evaluation strategy is a set of rules for evaluating expressions. The term is often used to refer to the more specific notion of a parameter-passing strategy that defines the kind of value that is passed to the function for each parameter and whether to evaluate the parameters of a function call, and if so in what order. The notion of reduction strategy is distinct, although some authors conflate the two terms and the definition of each term is not widely agreed upon.

In predictive analytics, data science, machine learning and related fields, concept drift or drift is an evolution of data that invalidates the data model. It happens when the statistical properties of the target variable, which the model is trying to predict, change over time in unforeseen ways. This causes problems because the predictions become less accurate as time passes. Drift detection and drift adaptation are of paramount importance in the fields that involve dynamically changing data and data models.

<span class="mw-page-title-main">F-score</span> Statistical measure of a tests accuracy

In statistical analysis of binary classification, the F-score or F-measure is a measure of a test's accuracy. It is calculated from the precision and recall of the test, where the precision is the number of true positive results divided by the number of all positive results, including those not identified correctly, and the recall is the number of true positive results divided by the number of all samples that should have been identified as positive. Precision is also known as positive predictive value, and recall is also known as sensitivity in diagnostic binary classification.

<span class="mw-page-title-main">Mesterolone</span> Chemical compound

Mesterolone, sold under the brand name Proviron among others, is an androgen and anabolic steroid (AAS) medication which is used mainly in the treatment of low testosterone levels. It has also been used to treat male infertility, although this use is controversial. It is taken by mouth.

Conceptual clustering is a machine learning paradigm for unsupervised classification that has been defined by Ryszard S. Michalski in 1980 and developed mainly during the 1980s. It is distinguished from ordinary data clustering by generating a concept description for each generated class. Most conceptual clustering methods are capable of generating hierarchical category structures; see Categorization for more information on hierarchy. Conceptual clustering is closely related to formal concept analysis, decision tree learning, and mixture model learning.

Usability testing methods aim to evaluate the ease of use of a software product by its users. As existing methods are subjective and open to interpretation, scholars have been studying the efficacy of each method and their adequacy to different subjects, comparing which one may be the most appropriate in fields like e-learning, e-commerce, or mobile applications.

Haskell is a general-purpose, statically-typed, purely functional programming language with type inference and lazy evaluation. Designed for teaching, research and industrial applications, Haskell has pioneered a number of programming language features such as type classes, which enable type-safe operator overloading, and monadic IO. Haskell's main implementation is the Glasgow Haskell Compiler (GHC). It is named after logician Haskell Curry.

In rewriting, a reduction strategy or rewriting strategy is a relation specifying a rewrite for each object or term, compatible with a given reduction relation. Some authors use the term to refer to an evaluation strategy.

In computer science, purely functional programming usually designates a programming paradigm—a style of building the structure and elements of computer programs—that treats all computation as the evaluation of mathematical functions.

Bibliometrix is a package for the R statistical programming language for quantitative research in scientometrics and bibliometrics.

<span class="mw-page-title-main">Mecigestone</span> Chemical compound

Mecigestone, also known as pentarane B, as well as 6α-methyl-16α,17α-cyclohexanoprogesterone, 6α-methylcyclohexano[1',2';16,17]pregn-4-ene-3,20-dione, or 17α-acetyl-6α-methyl-16β,24-cyclo-21-norchol-4-en-3-one, is a steroidal progestin that was developed by the Zelinskii Institute of Organic Chemistry of the Russian Academy of Sciences and has been proposed for clinical use as a progestogen but has not been marketed. It is the 6α-methylated analogue of pentarane A, which is also known as D'6-pentarane or pregna-D'6-pentarane.

<span class="mw-page-title-main">Androstanolone</span> Androgenic and anabolic steroid medication

Androstanolone, or stanolone, also known as dihydrotestosterone (DHT) and sold under the brand name Andractim among others, is an androgen and anabolic steroid (AAS) medication and hormone which is used mainly in the treatment of low testosterone levels in men. It is also used to treat breast development and small penis in males. It is typically given as a gel for application to the skin, but can also be used as an ester by injection into muscle.

References

  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.