Skip to content

Latest commit

 

History

History
77 lines (57 loc) · 2.84 KB

before-you-begin.md

File metadata and controls

77 lines (57 loc) · 2.84 KB

Before You Begin

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.

Installing 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.

Haskell Toolchain

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/ .

Development Environment using Nix

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.

Building for Performance

If you wish to run benchmarks, please be sure to build your application using the instructions in the Build Guide.

Streamly Library Packages

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.

Released and Pre-release modules

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.