In this tutorial, we assume basic knowledge of Haskell syntax, constructs and lazy evaluation. The Haskell wikibook may be a good place to start and get familiar with Haskell.
If you wish to follow along and run the examples in this tutorial, you will need to have Haskell tool chain installed.
You can choose one of the following sections.
To get started, you will need a fairly recent version (last three major
versions will work) of the Haskell compiler ghc
and the build tool
cabal
installed on your system. Please see the install instructions
at https://www.haskell.org/downloads/ .
If you use the nix package manager, a nix shell for complete development environment - including a consistent set of latest streamly ecosystem packages, hoogle documentation, vim and vscode editors, Haskell language server (HLS) and other tools - is available at streamly-packages.
If you wish to run benchmarks, please be sure to build your application using the instructions in the Build Guide.
Streamly comprises two packages, the streamly-core package provides functionality that depends only on boot libraries, and the streamly package provides additional functionality like concurrency, time, lifted exceptions, and networking.
For high-level functionality built over streamly like streaming system processes, shell programming, GNU coreutils, statistics, and compression libraries please see the streamly ecosystem packages.
Some of the examples in this tutorial may use modules from the
Internal
Streamly module hierarchy. These modules are not really
internal to the library. We classify Streamly
modules into two
categories:
- Released modules and APIs: These modules and APIs are stable. Significant changes to these modules and APIs will cause Streamly's version number to change according to the package versioning policy.
- Pre-release modules and APIs: These modules and APIs have not been
formally released yet. They may change in the near future, and such
changes will not necessarily be reflected in Streamly's package
version number. As yet unreleased modules and APIs reside in the
Internal
namespace.
Please use a minor release upper bound to adhere to the Haskell PVP when using a pre-release (internal) module.