@@ -6,16 +6,16 @@ performance.
66
77Streamly consists of two packages: "streamly-core" and "streamly".
88[ streamly-core] ( https://hackage.haskell.org/package/streamly-core )
9- provides basic features , and depends only on GHC boot libraries, while
9+ provides most of the core functionality , and depends only on GHC boot libraries, while
1010[ streamly] ( https://hackage.haskell.org/package/streamly ) provides
1111higher-level features like concurrency, time based streaming
1212combinators, lifted exceptions, and streaming network operations.
1313
14- In streamly there are two core data structures, streams and arrays. They
15- are computing duals of each other, streams are for dataflow style
16- processing while arrays are for storing data. Both taken together
17- are powerful tools for general purpose programming in a functional or
18- dataflow style .
14+ Streamly is built around two core data structures: streams and
15+ arrays. They are computational duals— streams enable dataflow- style
16+ processing, while arrays provide efficient data storage. Together, they
17+ form a powerful foundation for general- purpose programming in
18+ functional and dataflow paradigms .
1919
2020The general data processing functionality in ` streamly ` can be divided
2121into following categories:
@@ -35,18 +35,18 @@ following categories:
3535
3636## Streams
3737
38- In functional programming, stream processing paradigm is a higher level
39- alternative to the low level looping paradigm found in imperative
40- programming. The ` Stream ` abstraction in streamly represents data as a
41- sequence of items of the same type. Functional operations are used to
42- process and transform each item in the stream to a new stream of the
43- same or different type.
38+ In functional programming, the ** stream processing paradigm** offers
39+ a higher-level alternative to the low- level looping constructs of
40+ imperative programming. In Streamly, the ` Stream ` abstraction models
41+ data as a sequence of items of the same type. Functional operations can
42+ then be applied to process and transform each item, producing a new
43+ stream of either the same or a different type.
4444
4545### Stream Type
4646
47- Following is a contrived example which generates a stream consisting of a
48- sequence of integers, then increments each one by 1, takes the first two
49- elements, adds them and prints the result:
47+ The following contrived example generates a stream of integers,
48+ increments each element by 1, takes the first two elements, adds them
49+ together, and prints the result:
5050
5151``` haskell
5252import Data.Function ((&) )
@@ -73,9 +73,9 @@ output. The `Fold.sum` function above is a `Fold` which consumes an
7373integer stream as input and returns their sum as output. The fold is
7474driven using the ` Stream.fold ` combinator.
7575
76- Folds can be composed using combinators, for example, the ` teeWith ` combinator
77- combines two folds such that the input of the resulting fold is passed through
78- both of them .
76+ Folds can be composed using combinators. For example, the ` teeWith `
77+ combinator combines two folds so that the input stream is fed into both
78+ the folds simultaneously .
7979
8080``` haskell
8181f :: Monad m => Fold. Fold m Int (Int , Int )
0 commit comments